c# - 使用库来实现服务是否违背 SOA 原则?

标签 c# web-services wcf soap soa

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

因此,对于我们所阅读和学到的内容,这是我们的方法:

  • 我们有一个名为 CommonLibrary 的类库,其中有一些类将用于我们所有的服务(语言内容、连接的用户类型和所有服务的公共(public)对象)是为了返回)。
  • 我们有另一个名为 SecurityLibrary 的类库,它验证正在使用该方法的用户。
  • 目前我们有 2 个服务几乎完成了 90%,它们都使用 CommonLibrarySecurityLibrary

现在问题:

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

最佳答案

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

如果在您的服务中使用库,您还应该远离 .NET 库。我想知道你为什么认为一个服务进程只允许存在一个程序集。

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

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

好的服务只是一个流程,存在一个或多个(共享)程序集,具有定义明确的服务契约。本服务契约(Contract)决不允许被破坏。

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

关于c# - 使用库来实现服务是否违背 SOA 原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119387/

相关文章:

c# - 如何检查我的每个循环中是否存在元素

c# - StructureMap 3 中开放泛型的装饰器拦截

java - Metro 用户名 token 策略

php - 关于 wsdl、web 服务和 php soap 的好书?

c# - 在 WCF/.NET 中返回数据表

c# - 有条件地调用 Linq 扩展方法

web-services - Coldfusion Web 服务无法看到组件

WCF 句柄更新人员对象

c# - 是否有 WCF 服务请求队列性能计数器?

c# - 强制 BindingSource 更新数据/模型