C# 为外部和内部客户端提供单独的WCF服务,还是单一的高性能服务?

C# 为外部和内部客户端提供单独的WCF服务,还是单一的高性能服务?,c#,performance,web-services,wcf,architecture,C#,Performance,Web Services,Wcf,Architecture,我正在经历的架构决策之一是为几乎90%相同的功能构建2个服务,而不是1个服务。这里的关键是性能因素 2个服务的逻辑是: 外部客户端服务将具有更高的性能 如果存在仅对外部客户机需要的方法,则此方法可能特定于此服务 内部和外部服务都将使用一些用于核心DAL、SAL功能的公共dll。确保没有代码冗余 1服务的逻辑: 如果external和internal的功能没有太大区别,那么添加一些方法应该可以 单一高性能服务,为什么内部用户会受到影响?:) 随着时间的推移,分支2个服务可能会增加更多的开销&保持某

我正在经历的架构决策之一是为几乎90%相同的功能构建2个服务,而不是1个服务。这里的关键是性能因素

2个服务的逻辑是:

  • 外部客户端服务将具有更高的性能
  • 如果存在仅对外部客户机需要的方法,则此方法可能特定于此服务
  • 内部和外部服务都将使用一些用于核心DAL、SAL功能的公共dll。确保没有代码冗余
  • 1服务的逻辑:

  • 如果external和internal的功能没有太大区别,那么添加一些方法应该可以
  • 单一高性能服务,为什么内部用户会受到影响?:)
  • 随着时间的推移,分支2个服务可能会增加更多的开销&保持某些逻辑同步的风险,因为将涉及2个不同的团队。这可能会在类似的函数中产生差异
  • 对于这一经典论点,是否有一种标准的行业方法


    谢谢。

    我认为这在很大程度上取决于这两个服务之间有多少共同的功能和代码。如果它90%像你建议的那样,那么将代码复制到另一个服务中似乎是愚蠢的。此外,从维护的角度来看,这意味着外部和内部共同的每次变更都需要加倍的工作量


    将仅外部客户机所需的功能与1个服务(可能是接口?)中的内部功能分开应该相当简单。我认为在这一点上,更重要的是仔细设计1个服务,而不是尝试创建和维护2个服务

    根据您的问题陈述,我建议您使用一种服务

    如果将两个服务用于相同的功能,则服务的维护成本和完整性可能会受到影响。此外,如果问题出在性能上,更好的解决方案是使用多个服务端点和负载平衡来高效使用服务

    在实现中,您可能有两种不同的实现来满足内部和外部用户的需求(使用接口和覆盖功能),但所有用户都指向相同的服务