MEF 用于进程定义的动态加载
我们有一个由几个部分组成的应用程序:
- 模型构建
- 器:允许构建流程定义(活动、网关、事件等)和任务的域模型。
- 具体流程定义:解决某些业务的流程定义的集合。每个程序集都包含具体的流程定义、任务等的集合。
- 运行时:我们希望它动态加载包含 Concrete ProcessDefinition 的程序集,并能够通过一个简单的服务 FindProcessDefinition(proceedingId,versionPolicy) 找到它们,该服务将查找所有 Concrete ProcessDefinition 部分。进程定义必须是缓存/单一实例。
你认为MEF可能是解决这个问题的方法吗?我见过 MEF 的示例,但它们用于实现接口,而不是用于此"构建"模式。
有什么提示怎么做吗?还有其他选择吗?谢谢。
如果你的具体进程定义和实例化这些类的生成器没有通用接口,那么 MEF 似乎不是正确的工具 (imo)。
也许你可以让构建器各自实现一个通用接口。但是,每个具体的流程定义也需要一个通用接口。情况似乎并非如此。在代码中,您不执行以下操作:
new ConcreteProcessDefinition1.run()
和
new ConcreteProcessDefinition2.run(),
在你的代码中,你做类似的事情
ConcreteProcessDefinition1.doXYZ(input1, input2)
和
ConcreteProcessDefinition2.doSomethingTotallyDifferent(input3)
为什么需要动态加载流程定义?您的客户(无权访问您的源代码)是否会创建流程定义?