1

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

我的想法:

将其拆分为提供者和消费者部分:

IMyComponentProvider: IMyComponent
IMyComponentConsumer: IMyComponent

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

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

问题:

  • 有什么替代品,尤其是 autofac?
  • 哪种设计模式适用于此以及替代方案?
  • 哪些命名约定是有用的或标准的?
4

1 回答 1

1

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

Autofac 的问题在于您已经注册了组件并构建了 Autofac 容器,然后才能使用它。以后无法解决组件并注册替换。

如果你知道你的链,你可以为它注册特殊的接口: Register( IComponent, ComponentType ) Register(IComponentChannel, ComponentChannelType) 这就像你的提供者/消费者模式。

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

于 2014-02-27T11:44:13.980 回答