C# 使用库实现服务是否违反了SOA原则?

C# 使用库实现服务是否违反了SOA原则?,c#,web-services,wcf,soap,soa,C#,Web Services,Wcf,Soap,Soa,我们正在使用WCF在C#中开发多个web服务,但我们是新手 因此,根据我们的阅读和学习,这是我们的方法: 我们有一个类库,我们称之为CommonLibrary,其中有几个类将用于我们的所有服务(语言内容、连接的用户类型以及所有服务都要返回的公共对象) 我们还有另一个类库,名为SecurityLibrary,它验证使用该方法的用户 目前,我们有两项服务几乎完成了90%,它们都使用CommonLibrary和SecurityLibrary 现在问题是: 这是一个糟糕的方法吗 我们在每个服务中使

我们正在使用WCF在C#中开发多个web服务,但我们是新手

因此,根据我们的阅读和学习,这是我们的方法:

  • 我们有一个类库,我们称之为
    CommonLibrary
    ,其中有几个类将用于我们的所有服务(语言内容、连接的用户类型以及所有服务都要返回的公共对象)
  • 我们还有另一个类库,名为
    SecurityLibrary
    ,它验证使用该方法的用户
  • 目前,我们有两项服务几乎完成了90%,它们都使用
    CommonLibrary
    SecurityLibrary
现在问题是:

  • 这是一个糟糕的方法吗
  • 我们在每个服务中使用公共/共享库是否违反了封装和自治的SOA原则
  • 第三个人告诉我们在我们的每个服务上复制这些库的所有代码,这样我们就有了100%的自主服务,这是正确的方法吗?我认为这很难维护,而且表现出很多口是心非的行为。在一个服务上进行的任何更新都必须在其他服务上复制或合并

  • 不,这不是一个坏方法吗

    如果在服务中使用库,还应远离.NET库。我不明白为什么你认为一个服务流程只允许存在一个组件

    此外,复制粘贴代码是一种非常非常糟糕的习惯。它被称为反设计模式。我复制了维护以及其中的所有bug

    共享图书馆不会降低您的服务的“自主性”。我认为,如果它们共享类型,可能会使它们更兼容

    一个好的服务只是一个流程,由一个或多个(共享)程序集组成,具有定义良好的服务契约。本服务合同绝不允许被违反


    顺便说一句:在我的回答中,我没有包括在GAC中共享程序集的问题。这是所有流程,而不仅仅是服务共享的特性或问题。

    这类问题可能更适合代码审查或程序员,因为它们更多的是设计/哲学问题。这与SO无关,接近基于观点,但“SOA”的意思是:面向服务的体系结构。您是否使用库来构建该服务与SOA部分完全无关;告诉您将所有库代码复制到您的服务项目中的人不知道他们在说什么。请尝试使用programmers.se,因为回答这个问题需要更多的句子。无论如何:代码重用是好的,为此使用库(程序集)是公认的常见做法。如果那个人想通过复制代码来从中派生,他们就必须为自己为什么要这样做辩护,因为它没有说“SOA项目必须是自包含的,并且不包含第三方或库代码”。让他们找到一个来源——他们找不到。这个人显然被SOA原则中的“服务是自治的”原则以及“自治”一词的含义弄糊涂了。自主性并不意味着设计时的物理分离。