加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 设计模式以促进这些行为(审计跟踪行为和撤消)

发布时间:2020-12-15 07:46:16 所属栏目:百科 来源:网络整理
导读:我正在研究一个需要展示这些行为的系统: 审计跟踪 撤消/恢复到特定版本(此类操作本身将被审核记录) 我看到了一个类似于here的问题,但它只涉及我正在尝试做的部分内容.此外,我想捕获对象的整个生命周期(即CRUD). 我打算实现这个的方式如下: 具有基于观察者
我正在研究一个需要展示这些行为的系统:

>审计跟踪
>撤消/恢复到特定版本(此类操作本身将被审核记录)

我看到了一个类似于here的问题,但它只涉及我正在尝试做的部分内容.此外,我想捕获对象的整个生命周期(即CRUD).

我打算实现这个的方式如下:

>具有基于观察者模式的ChangeManager类
>从一个“包装”命令模式中的更改的基础对象派生我的对象
>在任何CRUD事件上使用命令对象通知ChangeManager

注意:
‘change’命令将包括:

>一个(有序的)2元组的集合,详细说明了现场变化(上一个,新的)
>进行更改的用户的ID
>更改的时间戳

这只是“脱离了我的头脑” – 我正在考虑采取的方法可能存在漏洞 – 我会感谢以前实施过这种行为的人的一些帮助,以及一般建议,专业人士和关于我上面概述的方法的缺点 – 或者可能是更好/替代的方法.一个或两个指向正确方向的片段也将非常感激!

我将使用C#作为实现语言.

解决方法

这是一个相当复杂的话题.有许多正式的方法.

从我的角度来看,我会考虑使用“事件采购”.有关详细信息,请参见此处

http://martinfowler.com/eaaDev/EventSourcing.html

这将负责填充更改日志并维护当前状态,并使您能够重放事件以撤消更改.完全基于此的事件驱动架构,如CQRS:

http://martinfowler.com/bliki/CQRS.html

另一种选择是命令模式,它允许撤消但不消耗上述所有要求,例如审计跟踪.具有撤消的命令模式的示例如下:

http://mattberther.com/2004/09/16/using-the-command-pattern-for-undo-functionality

希望这有用.

编辑:提供CQRS参考.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读