我们正在使用 WCF 在 C# 中开发多个 Web 服务,但我们是新手。
因此,对于我们所阅读和学到的内容,这是我们的方法:
- 我们有一个名为
CommonLibrary
的类库,其中有一些类将用于我们所有的服务(语言内容、连接的用户类型和所有服务的公共(public)对象)是为了返回)。 - 我们有另一个名为
SecurityLibrary
的类库,它验证正在使用该方法的用户。 - 目前我们有 2 个服务几乎完成了 90%,它们都使用
CommonLibrary
和SecurityLibrary
。
现在问题:
- 这是一个糟糕的方法吗?
- 我们是否通过在我们的每项服务中使用公共(public)/共享库来违反封装和自治的 SOA 原则?
- 第三个人告诉我们在我们的每项服务上复制这些库的所有代码,以便我们拥有 100% 的自主服务,这是正确的方法吗?我认为很难维护并且表现出很多口是心非。对一个服务所做的任何更新都必须在其他服务上复制或合并...
最佳答案
不,这不是一个坏方法吗?
如果在您的服务中使用库,您还应该远离 .NET 库。我想知道你为什么认为一个服务进程只允许存在一个程序集。
此外,复制粘贴代码是一种非常非常糟糕的习惯。它被称为反设计模式。我复制了维护以及其中的所有错误。
共享库不会降低您的服务的“自主性”。我认为如果它们共享类型,可以使它们更加兼容。
好的服务只是一个流程,存在一个或多个(共享)程序集,具有定义明确的服务契约。本服务契约(Contract)决不允许被破坏。
顺便说一句:在我的回答中,我没有包括在 GAC 中共享程序集的问题。这是所有进程共有的特性或问题,而不仅仅是服务。
关于c# - 使用库来实现服务是否违背 SOA 原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119387/