面向服务的架构(SOA)的优点包括灵活性、可重用性、互操作性和敏捷性。它适用于IT基础设施、企业资源规划(ERP)、客户关系管理(CRM)等领域。
面向服务的架构(SOA)是一种设计模式,它允许不同的应用程序和业务流程通过服务的调用和组合来实现交互。SOA的核心优势在于其灵活性和可扩展性,它能够将业务流程与技术实现解耦,使得业务流程可以独立于技术平台进行管理和优化。这种架构通过业务流程管理(BPM)平台和企业服务总线(ESB)等中间件技术,实现了服务的流程执行调度和数据交换,从而支持复杂的业务流程协作和系统集成。
在应急指挥系统等复杂应用系统中,SOA架构能够通过BPM工具对流程预案进行建模,调度不同独立运行的服务构件执行流程,并形成流程执行库。客户端可以手动或通过定时器自动启动流程引擎实例,流程引擎读取流程模型库,并配合应用管理端的操作,对服务构件实现访问调度。在这个过程中,SOA的服务构件始终围绕在ESB周围,交换过程数据,实现物资服务调度、医疗资源服务调度、通讯设备服务调度以及对外信息披露服务调用等功能。
SOA架构特别适合于复杂应用系统的整合与协作。例如,即使通讯设备服务提供了C++网络通讯包,物资服务是Java平台运行,医疗资源服务又是.Net平台运行,它们都能基于统一的服务规约,提供精确而风格一致的服务接口。这样,对于BPM和ESB来说,适配集成的复杂过程被极大简化,各种业务和通讯系统都变成了一项服务,作为SOA整体调度与管理的一部分。
SOA在帮助传统企业集成异构的老系统方面发挥着重要作用。传统企业中,各种历史遗留的老系统对外提供的服务接口标准不统一,例如协议有的用HTTP有的用JMS,数据格式有的用XML有的用JSON还有直接二进制的。ESB的目的就是完成各种协议和数据格式的互相转换,让各个异构服务可以方便地相互调用。尽管ESB本身可能成为性能瓶颈,但它在SOA中的设计是必要的。
相比之下,互联网行业通常较为年轻,没有那么多历史包袱。即使存在,技术部门往往也有大量的财力人力进行重构,因此SOA和ESB在互联网行业中相对较少被提及。
SOA与微服务的区别在于,SOA是对多个系统进行整合,更多考虑的是兼容已有的系统;而微服务则是将一个系统进行拆分,注重高内聚低耦合,轻量灵活、快速迭代。Martin Fowler提出的“聪明的终端,愚蠢的管道”(Smart Endpoints and Dumb Pipes)概念,强调了微服务的Pipes仅做消息传递,使用轻量且风格统一的接口(如HTTP Restful),无需在接口层进行SOA的ESB那样的复杂处理。
SOA架构是面向服务的,基于面向对象的特点,如封装和接口调用。SOA继承了面向对象的封装特性,将多个类封装成一个模块,为其他对象调用者提供接口调用。与面向对象设计类似,SOA也需要精确明确地定义服务接口,隐藏服务内部的逻辑实现。SOA与面向对象的主要区别在于:
SOA的服务定义是精确的,一旦发布,就会有很多其他异构平台服务进行调用。因此,服务接口的修改不像个人或小团队协作那么容易,可能涉及到大企业多部门的信息协作,或对构件已经形成依赖的生态链条。这也决定了SOA架构适合在较重的环境下存在,服务接口的粒度一般要设置得比较粗,以减少频繁修改。
©本文版权归作者所有,任何形式转载请联系我们:2562299860@qq.com