C# 蒙托林;事件标准
我正在编写一个监控网络中某些节点的应用程序。基于各种条件,节点类型的每个状态都可以触发事件。现在我想让用户能够设置监视和警报的标准 简单域:C# 蒙托林;事件标准,c#,oop,design-patterns,domain-driven-design,C#,Oop,Design Patterns,Domain Driven Design,我正在编写一个监控网络中某些节点的应用程序。基于各种条件,节点类型的每个状态都可以触发事件。现在我想让用户能够设置监视和警报的标准 简单域: - Devices Any piece of hardware that can be accessed via ICMP (ping) and/or SNMP. * Is Discovered * Configuration Mismatch * Configuration changed * Is offlin
- Devices
Any piece of hardware that can be accessed via ICMP (ping) and/or SNMP.
* Is Discovered
* Configuration Mismatch
* Configuration changed
* Is offline for
10 minutes
20 minutes
1 day
1 week
...
- User
A registered user in my application environment
* is registered
* is removed
* unathorized access event
我已经试了几个小时了,但是我想不出一个域模型来适应这种灵活的配置。最简单的方法可能只是让某些基本类型“TimeCriteria”、“EntityCriteria”可以填充键值对,这些键值对将根据对象(其属性)进行验证。有人有什么好主意吗?我不确定自己是否完全理解这个问题,但这听起来很适合这个问题。您可以定义一个通用规范接口,如
public interface ISpecification<T>
{
bool IsSatisfiedBy(T candidate);
}
公共接口规范
{
布尔是满意的(T候选人);
}
这将使您能够定义各种不同的具体规范,如
public class IsOfflineSpecification : ISpecification<Device>
{
private readonly TimeSpan limit;
public IsOfflineSpecification(TimeSpan limit)
{
this.limit = limit;
}
public IsSatisfiedBy(Device candidate)
{
// Compare candidate with limit here,
// and return the appropriate answer (true/false)
}
}
public类Isofrinspecification:ISpecification
{
私有只读时间跨度限制;
公共信息(时间跨度限制)
{
这个极限=极限;
}
公共信息由(设备候选)提供
{
//将候选人与此处的限制进行比较,
//并返回相应的答案(对/错)
}
}
使用规范模式,还可以定义对应于布尔和、或和非操作等的
客户将与规范接口进行对话,以确定某个候选者是否符合规范:
ISpecification<Device> spec // ...
Device candidate = new //...
if (spec.IsSatisfiedBy(candidate))
// do something interesting...
isspecificationspec/。。。
候选设备=新建/。。。
如果(规格符合(候选人))
//做些有趣的事。。。