为外部客户端与内部客户端分离WCF服务还是单个高性能服务?

时间:2015-12-23 08:58:13

标签: c# performance web-services wcf architecture

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

2项服务的逻辑是:

  1. 外部客户服务将更高性能
  2. 如果只有外部客户端需要的方法,则此方法可能特定于此服务。
  3. 核心DAL,SAL功能将有一些常见的dll,将由内部和外部使用。外部服务。确保没有代码冗余。
  4. 1项服务的逻辑:

    1. 如果外部与内部的功能差别不大,则添加一些方法应该有效。
    2. 单一的高性能服务,为什么内部用户会受到影响? :)
    3. 随着时间的推移,分支2服务可能会增加更多的开销和保持一些逻辑同步的风险,因为将涉及2个不同的团队。这可能会在类似的出现功能中产生差异。
    4. 这种经典论证是否采用了标准的行业范围方法?

      感谢。

2 个答案:

答案 0 :(得分:0)

我认为这将取决于两种服务之间有多少共同的功能和代码。如果它像你所说的90%,那么为另一项服务复制该代码似乎很愚蠢。此外,从维护的角度来看,这意味着每次外部和内部共同的变更都需要两倍的工作。

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

答案 1 :(得分:0)

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

如果您使用两个服务来实现相同的功能,维护成本和服务的完整性可能会受到影响。如果问题出在性能上,那么更好的解决方案是使用多个服务端点和负载平衡来提供有效的使用服务。

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