gpt4 book ai didi

wcf - 解决方案中的多个 WCF 项目与单个项目

转载 作者:行者123 更新时间:2023-12-04 08:38:31 24 4
gpt4 key购买 nike

目前,我们的解决方案中有 12 个 WCF 项目。每个项目本质上都是它自己的端点。例如,“Order”WCF 项目是 Order.svc 端点。这 12 个端点由单个 WebHost 项目公开。 WebHost 项目有 12 个 .svc 文件指向每个对应的程序集/命名空间。

我的问题围绕使用一个项目(一个程序集...一个 dll)与多个项目(多个程序集...多个 dll)。如果有的话,有什么优点/缺点?最终结果是相同的……您有一个 WebHost 项目,该项目公开了指向程序集/命名空间的这些端点。除非您只需要在 bin 目录中管理一个 .dll 与 12 个 .dll。

对我来说,一个项目的优势:
可维护性——不是 12 个项目,每个项目都对我们的接口(interface)、数据契约(Contract)、实用程序等有多个引用,我们有一个项目在一个地方设置了引用。然后我们可以部署一个 dll 并利用负载均衡器来平均分配。即使我们明确地为每台服务器托管 3 个服务(即 4 台服务器),如果一台服务器出现故障,负载均衡器也可以进行调整,而其他 3 台服务器将拥有他们需要的东西并自动处理所有事情。 (我想 12 个 .dll 也是如此……只需要确保所有 12 个 .dll 都在每台服务器上)。

构建时间 - 更少的项目 = 更快的构建时间。 Visual Studio 不必在各处执行尽可能多的链接和复制 .dll。更快的构建时间 = 更高效的开发人员和更快的构建和部署。

我目前有几个同事担心将我们所有的 WCF 服务“紧密耦合”到一个项目中。对我来说,它们都是 WCF 服务,为什么不把它们放在同一个项目中呢?端点(.svc 文件)将它们分开。我也听到过这样的问题,“死锁怎么办?”。怎么样?这是一个有效的问题/担忧吗? (老实说我不知道​​)

还有一些关于 .dll 是否损坏的问题。如果是,则所有服务都已关闭。再次......这是一个有效的担忧吗?

我从 Microsoft 和其他人那里看到的所有示例都将 WCF 服务放在一个项目中,并由不同的类分隔。接口(interface)在他们自己的项目中......另一个项目中的数据契约(Contract)等等。

那么,你的看法是什么?如何在 Visual Studio 解决方案中组织多个 WCF 服务?向我学习。

最佳答案

我们很难学到这一点。我们最近有一个项目,我们从它自己的项目中的每个服务开始,最终转换为在同一个项目中拥有所有服务。在不同项目中拥有东西的主要问题是:

  • 部署:您是否为每个服务创建 12 个 msi 包,它们将部署到单独的网站。运营商如何看待运行 12 个安装脚本和监控 12 个站点。
  • 服务是否相互调用,如果是,那么通过 WCF 可能会很慢,配置可能是一场噩梦,12 个服务调用 11 个服务,配置用于开发、测试和生产。
  • 此外,在相互调用的服务上,与直接调用 dll 相比,性能会受到影响
  • 服务是否有一个通用版本,例如当数据库更改时,所有服务都会更改。如果是,您将始终需要部署所有服务。这比单个服务需要更长的时间,您的停机时间会更长

  • 我们为接口(interface)(契约(Contract))和数据传输对象使用单独的项目。

    关于wcf - 解决方案中的多个 WCF 项目与单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809980/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com