实现到 C# 接口的可插入通道



假设我有一个接口IMyComponent,我想直接或通过WCF或其他通信渠道调用它,我应该如何设计它?

我的想法:

将其拆分为提供者和使用者部分:

IMyComponentProvider: IMyComponent
IMyComponentConsumer: IMyComponent

并构建一个将这两个接口连接在一起的对象:

MyComponent (MyComponentProvider) <- Channel( MyComponentConsumer) <- 调用上下文

问题:

  • 有哪些替代方案,尤其是 autofac?
  • 哪种设计模式适用于此和替代方案?
  • 哪些命名约定有用或标准?

AFAIK 这个问题没有通用的解决方案。它不是真正的"责任链",因为您不想让任何参与者有机会处理此请求。但它可以松散地被视为"过滤器链"。

Autofac 的问题在于,您必须先注册组件并生成 Autofac 容器,然后才能使用它。以后无法解析组件并注册替换项。

如果您知道您的链,则可以为其注册特殊接口:寄存器( IComponent, 组件类型 )Register(IComponentChannel, ComponentChannelType) 这就像您的提供者/消费者模式。

或者,您必须使用通道装饰组件并注册修饰的接口。寄存器(IComponent, ChannelDecorator) )

最新更新