【发布时间】:2011-07-04 20:28:27
【问题描述】:
我正在尝试将使用 .NET Remoting 的现有项目转换为使用 WCF。项目结构如下:
- 用户界面
- 业务层
BusinessLayer 项目是一个类库,其中包含具有方法IResult Process(IJobProcessor) 的客户端激活对象DistributedProcessor。 IJobProcessor 和 IResult 接口和具体类都在 BusinessLayer 库中。 IJobProcessor 的具体类反过来又使用了 BusinessLayer 中的很多很多类。
对于 .NET Remoting,这种情况是理想的。分布式部分只是一个包含 BusinessLayer 并侦听特定端口的 Windows 服务。客户端使用Activator.GetObject()创建远程对象。
为了将其转换为 WCF,我意识到如果按如下方式构建项目,则会出现循环依赖问题:
- 用户界面
- BusinessLayer - 引用 WcfService
- WcfService - 引用 BusinessLayer
该服务需要对 BusinessLayer 的引用,以便我可以通过网络传输对象。 BusinessLayer 需要对 WcfService 的引用,以便它可以调用 WcfService 上的IResult Process(IJobProcessor) 方法。
能否将接口IResult 和IJobProcessor 移出到单独的项目BusinessLayerDistributed 中,例如:
- 用户界面
- BusinessLayer - 引用 BusinessLayerDistributed
- BusinessLayerDistributed
- WcfService - 引用 BusinessLayer、BusinessLayerDistributed
我的问题是:如果所有这些接口的具体类仍在 BusinessLayer 中,那么 IResult 和 IJobProcessor 对象在转移到服务时是否会作为它们的具体类适当地水合?使用 WCF 执行此操作有什么技巧吗?
【问题讨论】:
-
对于一些项目,我使用这种方法取得了巨大的成功。
标签: wcf projects-and-solutions circular-dependency