【发布时间】:2010-09-28 05:39:12
【问题描述】:
目前,我们的解决方案中有 12 个 WCF 项目。每个项目本质上都是它自己的端点。例如,“Order”WCF 项目是 Order.svc 端点。这 12 个端点由单个 WebHost 项目公开。 WebHost 项目有 12 个 .svc 文件指向每个对应的程序集/命名空间。
我的问题围绕着使用一个项目(一个程序集...一个 dll)与多个项目(多个程序集...多个 dll)。如果有的话,有什么优点/缺点?最终结果是相同的......您有一个 WebHost 项目,该项目公开了这些指向程序集/命名空间的端点。除非您只需要在 bin 目录中管理一个 .dll 与 12 个 .dll。
对我来说,一个项目的优势: 可维护性——不是 12 个项目,每个项目都对我们的接口、数据合同、实用程序等有多个引用,我们有一个项目在一个地方设置了引用。然后我们可以部署一个 dll 并利用负载均衡器来平均分配。即使我们明确地为每台服务器托管 3 个服务(即 4 台服务器),如果一台服务器出现故障,负载均衡器也可以进行调整,而其他 3 台服务器将拥有他们需要的东西并自动处理所有事情。 (我想 12 个 .dll 也是如此……只需确保所有 12 个 .dll 都在每台服务器上)。
构建时间 - 更少的项目 = 更快的构建时间。 Visual Studio 不必在各处执行尽可能多的链接和复制 .dll。更快的构建时间 = 更高效的开发人员以及更快的构建和部署。
我目前有几个同事担心将我们所有的 WCF 服务“紧密耦合”到一个项目中。对我来说,它们都是 WCF 服务,为什么不把它们放在同一个项目中呢?端点(.svc 文件)将它们分开。我也听到过这样的问题,“死锁怎么办?”。怎么样?这是一个有效的问题/担忧吗? (我真的不知道)
还有关于 .dll 是否损坏的问题。如果是,则所有服务都已关闭。再次......这是一个有效的担忧吗?
我从 Microsoft 和其他公司看到的所有示例都将 WCF 服务放在一个项目中,并由不同的类分隔。接口在他们自己的项目中......另一个项目中的数据合约等等。
那么,你的看法是什么?如何在 Visual Studio 解决方案中组织多个 WCF 服务?学我。
【问题讨论】:
标签: wcf projects-and-solutions