【问题标题】:SOA Architecture understandingSOA架构理解
【发布时间】:2013-04-22 20:31:51
【问题描述】:

我被要求从事一个基于 SOA 并使用 WCF 的项目。我曾涉足 WCF(创建和消费),但从未涉足 SOA。我是否正确地说单个服务将具有通常的服务层、业务层和数据访问层(如果需要)。然后服务层将公开方法。

服务A可以引用服务B,服务B可以引用服务A吗?

然后 UI 可以通过引用访问这些服务 - 这本质上是 SOA?我正在努力寻找最新的、最近的教程 (Youtube),而我在网上看到的“指南”似乎非常复杂。

【问题讨论】:

  • 我的理解是 WCF 实现 SOA 以及各种 WS-* 规范。该服务将封装业务逻辑,因此将具有业务层和可选的 DAL。该服务可以由 UI 甚至其他服务使用。
  • 是的,服务 A 可以使用服务 B,反之亦然 - 尽管设计存在很大问题。
  • 我认为维基百科条目很清楚? en.wikipedia.org/wiki/Service-oriented_architecture
  • “个人”服务需要银行账户列表(因此,个人服务引用账户服务)...但是当您查看透支银行账户列表时,它需要访问个人服务以得到人名?抱歉 - 我能想到的最好的快速示例...

标签: c# .net wcf soa


【解决方案1】:

我会跳过有关 SOA 的问题,因为每个人都可以将 SOA 称为 SOA,无论他理解 SOA(面向服务的架构)是什么。我的意思是,每个使用服务的架构都可以称为 SOA...

从技术方面来说,我会用下一种方式构建它:

IMO,服务本身应该有尽可能少的逻辑(如外观模式),所有逻辑都应该下移到业务逻辑。

服务 A 使用 ServiceA.BusinessLogic,调用服务 B(服务 B 的代理可用于 ServiceA.BL)。

服务 B 也一样,调用服务 A。

这将为您提供双向通信,而不会出现双工问题(回调中断,...)。

UI 也应该访问服务 - 使用 UI.BusinessLogic(我通常更愿意将服务通信视为一种通信数据访问层)。

【讨论】:

    【解决方案2】:

    我觉得这个Wikipedia entry 很清楚?

    让我们尝试一个简单的例子。假设我们有图书馆应用程序,可让您签入和签出书籍。

    如果您查看接近 n 层系统的“传统”非 SOA 方式,那么您有一个名为 MyService 的服务,它的方法类似于 CheckOutBook。这将消失,内部有一个 Book 类和一个 Person 类,并会执行 Book.IsAvailable = FalsePerson.NumberOfBooks

    这很好,但是假设您现在有另一个应用程序想要与 People 一起工作。您不能只使用上述服务,因为逻辑与您正在做的事情紧密耦合,即图书馆交易。相反,您必须将代码复制/粘贴到新服务“BookShop”中。

    使用 SOA,您将拥有 Book 服务和 Person 服务。 Person 服务将具有诸如 Person.AssociateWithBook 之类的操作,Library 和 BookShop 都可以使用而无需更改,因为它足够简单,可以做到最低限度。然后由应用程序调用正确的服务来完成所需的工作。这意味着它可以重复使用,无需修改各种服务。

    这非常简单,但希望能显示架构差异并让您继续前进?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2010-12-12
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多