【发布时间】:2011-10-30 22:13:48
【问题描述】:
我有一个 A 类(调度程序),它处理接收到的数据的通信和解析,应该将它传递给 B 类(应用程序的业务逻辑)。
B类和A类应该互相调用,因为通信是双向的: 从业务逻辑层发送数据并接收数据作为响应。
任何可用于促进 A 类和 B 类之间通信的最佳设计的建议。我认为它们不应该只是相互指向。
【问题讨论】:
标签: .net design-patterns architecture
我有一个 A 类(调度程序),它处理接收到的数据的通信和解析,应该将它传递给 B 类(应用程序的业务逻辑)。
B类和A类应该互相调用,因为通信是双向的: 从业务逻辑层发送数据并接收数据作为响应。
任何可用于促进 A 类和 B 类之间通信的最佳设计的建议。我认为它们不应该只是相互指向。
【问题讨论】:
标签: .net design-patterns architecture
如果这是一个长时间运行的操作,您可以考虑将这些操作实现为 BeginOperation() 和 EndOperation() 方法对,使用回调或其他异步模式(检查 Asynchronous Programming Design Patterns)。
我也会避免循环引用。我将以与 WCF Duplex 服务类似的方式实现这一点。在项目 B 中创建您的业务类 B,以及表示其他项目需要实现以便从 B 回调的合同的接口,我们将其称为 IBCallbackContract。所以你需要:
IBCallbackContract
Initialize(IBCallbackContract) 方法IBCallbackContract,我们称之为BLCallback
BLCallback 的实例
Initialize方法,发送BLCallback的实例
【讨论】:
一个简单的解决方案是使用 B 类上的方法发送信息并使用 B 类上的事件接收数据。当您启动时,A 类订阅该事件,现在两种方式的通信将起作用。
【讨论】: