假设我有一个接口IMyComponent,我想直接或通过WCF或其他通信渠道调用它,我应该如何设计它?
我的想法:
将其拆分为提供者和使用者部分:
IMyComponentProvider: IMyComponent
IMyComponentConsumer: IMyComponent
并构建一个将这两个接口连接在一起的对象:
MyComponent (MyComponentProvider) <- Channel( MyComponentConsumer) <- 调用上下文
问题:
- 有哪些替代方案,尤其是 autofac?
- 哪种设计模式适用于此和替代方案?
- 哪些命名约定有用或标准?
AFAIK 这个问题没有通用的解决方案。它不是真正的"责任链",因为您不想让任何参与者有机会处理此请求。但它可以松散地被视为"过滤器链"。
Autofac 的问题在于,您必须先注册组件并生成 Autofac 容器,然后才能使用它。以后无法解析组件并注册替换项。
如果您知道您的链,则可以为其注册特殊接口:寄存器( IComponent, 组件类型 )Register(IComponentChannel, ComponentChannelType) 这就像您的提供者/消费者模式。
或者,您必须使用通道装饰组件并注册修饰的接口。寄存器(IComponent, ChannelDecorator) )