A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

什么是SOA概念?

SOA(面向服务的软件架构、Service Oriented Architecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来提高 互操作性 ,出现在20世纪90年代末,是应用程序开发和集成演变的一个重要阶段。SOA(面向服务的架构)定义了一种可通过服务接口 复用软件组件并实现其互操作的方法。服务使用公共接口标准和架构模式,因此可以快速整合到新应用中。 这让应用开发人员无需像之前那样重新开发或复制现有功能,也不必了解如何连接现有功能或提供与现有功能的互操作性 。

SOA有两个层面的定义: 

从应用的角度定义:SOA是一种应用架构,它着眼于日常的业务应用,并将他们划分为单独的业务功能和流程,及所谓的服务。
从软件的基本原理定义:SOA是一个组件模型,它将应用程序的不同功能单元(服务)通过这些服务之间定义良好的

因为SOA不依赖于任何技术,可以将SOAP、RPC、REST等理解为实现SOA的一种技术选型。
实际上SOA只是一种架构设计模式,是一种设计的方法,而SOAPRESTRPC就是根据这种设计模式构建出来的规范,其中SOAP通俗理解就是http+xml的形式,REST就是http+json的形式,RPC是基于socket的形式。

SOA架构

基于SOA的解决方案,SOA架构可分为五层水平:
用户界面层 —- 这些GUI的最终用户或应用程序访问的应用程序/服务接口;
业务流程层 —- 在应用方面的业务用例服务;
服务层 —- 服务合并在一起,提供统一的实时服务;
服务组件层 —- 用来建造服务的组件,如功能库、技术库、技术接口等;
操作系统 —- 这层包含数据模型,企业数据仓库,技术平台等;

SOA 的优势

与它之前的架构相比,SOA 为企业带来了巨大的好处:

  • 业务灵活性更高;上市速度更快:可复用性是关键。    从可复用服务(即构建块)高效组装应用, 而不必对每个新开发项目进行重写和重新集成,让开发人员能够更快构建应用,从而把握更多新的商机。 面向服务的架构方法支持应用集成、数据集成和服务编排一类的业务流程或工作流程自动化场景。       这让开发人员在集成方面花费的时间明显减少,而更多地专注于交付和改进应用,从而加速了软件设计和软件开发。       
  • 能够在新市场中利用原有功能:通过精心设计的 SOA,开发人员可以轻松地将功能“锁定”在一个计算平台或环境中,并将其扩展到新的环境和市场。       例如,许多公司都使用了 SOA 将基于大型机的财务系统中的功能向新的 Web 应用公开,从而让客户能够自行了解先前只能通过与公司员工或业务合作伙伴直接互动才能访问的流程和信息。   
  • 改善业务与 IT 之间的协作:在 SOA 中,可以用业务术语(例如,“生成保险报价”或“计算资本设备投资回报率”)来定义服务。 这样,业务分析人员就可以在重要洞察(例如,使用服务定义的业务流程的范围或者更改流程对业务的影响)方面与开发人员更有效地合作,从而获得更好的成果。

SOA与微服务的对比

这两种方法的主要区别归结为范围。简而言之,面向服务的架构(SOA)作用在企业范围,而微服务架构作用在应用范围。

其它维度的对比:

SOA微服务
服务粒度粗粒度细粒度
业务划分方式水平多层纵向业务划分
部署方式整体部署独立部署
通信方式使用重量级通信方式,ESB充当服务之间通信的角色使用轻量级通信方式,如HTTP RESTful
服务交付交付慢交付块
应用场景庞大、复杂、异构的企业级系统快速、轻量级、基于 Web 的互联网系统

参考资料

SOA vs Micro-service,有什么区别?
如何理解SOA,SOAP,RPC, REST 协议及其之间的关系
什么是SOA?什么是微服务?SOA和微服务有什么区别?