首页 文章

SOA架构理解

提问于
浏览
0

我被要求使用WCF处理基于SOA的项目 . 我已经涉足WCF(创建和使用),但从未使用过SOA . 我是否正确地说,单个服务将具有通常的服务层,业务层和数据访问层(如果需要) . 然后,服务层将公开方法 .

可以服务参考服务B和服务B参考服务A吗?

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

2 回答

  • 2

    这个Wikipedia entry我觉得很清楚吗?

    让我们试一个简单的例子 . 假设我们有图书馆应用程序,可以让您检查书籍 .

    如果你看看"traditional"非SOA方式接近n层系统,那么你就有了一个名为_2574676的服务,它的方法叫做 CheckOutBook . 这将消失,内部有一个 Book 类和一个 Person 类,并会执行说 Book.IsAvailable = FalsePerson.NumberOfBooks .

    这很好,但是说你现在有另一个想要与People合作的应用程序 . 您不能只使用上述服务,因为逻辑与您正在进行的操作紧密耦合,即库事务 . 相反,您必须将代码复制/粘贴到新服务“BookShop”中 .

    使用SOA,您将拥有 Book 服务和 Person 服务 . Person服务将有一个诸如 Person.AssociateWithBook 之类的动作,Library和BookShop都可以使用它而不必改变,因为它很简单,可以做到最小化 . 然后由应用程序调用正确的服务来完成所需的工作 . 这意味着它可以重复使用而无需修改各种服务 .

    这是非常简单的,但希望显示架构差异,让你去?

  • 1

    我会跳过关于SOA的问题,因为无论他理解SOA(面向服务的体系结构),每个人都可以调用SOA . 我的意思是,每个使用服务的架构都可以称为SOA ......

    从技术方面来说,我将以下一个方式构建它:

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

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

    对于服务B,呼叫服务A也是如此 .

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

    UI也应该访问服务 - 使用UI.BusinessLogic(我通常更喜欢将服务通信视为通信数据访问层) .

相关问题