何时使用SOA(面向服务的体系结构)

lom*_*axx 16 architecture wcf soa soap web-services

我最近与我们的一位建筑师进行了对话,他总结了他对SOA的使用"我们唯一一次使用服务就是当我们需要异步操作时,否则我们将直接使用直接进入数据存储"

我考虑过这个陈述,看起来相当合理,因为服务在发布订阅模型中运行良好,但我想知道在其他场景中你应该使用SOA吗?

alb*_*jan 24

我们向客户公开服务,因为他们不能直接连接到数据源.

我们向自己公开服务,因为使用WCF更容易将它们分布在不同的技术上.

我们公开服务,因为我们为同一数据源提供了不同的用户界面.当我们使用服务时,我们节省了三分之一的工作量.

这绝不仅仅是因为异步行为.

  • 如果你有一个非常异构的web ui环境,那么Java,.Net,PHP,RoR然后运送DLL并没有那么有用.使用服务来克服异构环境也是SOA的常见用途. (5认同)
  • 有一种可能的情况.我们主要有网页用户界面和桌面用户界面.哪个不适用于DLL. (2认同)

小智 9

使用服务的另一种情况是,您希望集成异构技术堆栈.

换句话说,如果你的数据库是postgres,但是你有Java,Perl,Python和C++代码,你可以编写存储过程并让每种编程语言都调用它们.如果您正在使用没有存储过程的数据库,或者您希望能够将其切换出来 - 或者您只想在端口80上运行,则可以将SQL调用包装在面向服务的层中(想想现在可以被任何人调用的websphere - 而且你可以在SOA层中放置身份验证和授权逻辑(连接到LDAP,无论如何).

您也可以使用该SOA层,比如建立一个逻辑例程,在管理发票或为客户创建语句的角落中使用旧的COBOL框"填充".

因此,如果您有许多遗留系统需要互连 - 比如将销售系统与仓储系统连接到订单预测系统 - SOA可能是实现该目标的一种方式.(您还可以使用"服务总线"创建事件驱动系统,作为协调变更的更好方式.)

只是我说话.


joh*_*r00 6

在许多情况下,您可以从使用服务中受益.其中一些场景已经由行业大师编写(例如SOA成名的Thomas Erl).

SOAPatterns

我想你要找:

  • 遗留应用程序重用
  • 业务流程重用(同一流程的多个用例)
  • 实现抽象(平台,语言,持久性抽象)

你的同事保持谨慎是正确的.采用Web服务时引入了许多部署和支持变量.