面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。

虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。

然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了。

Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。

此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。

最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。

转载于:https://www.cnblogs.com/hussar/archive/2006/06/17/428514.html

[入门系列]什么是面向服务的体系结构(SOA)?相关推荐

  1. 软考高级系统架构设计师系列之:面向服务的架构SOA

    软考高级系统架构设计师系列之:面向服务的架构SOA 一.面向服务的架构SOA 二.SOA的特性 1.UDDI 2.WSDL 3.SOAP 三.SOA的用途 四.SOA的设计原则 五.SOA的实施过程 ...

  2. SOA (面向服务的体系结构)

    SOA (面向服务的体系结构) 面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独 ...

  3. RHEL8.0快速入门系列笔记--计划任务服务crond(十五)

    RHEL8.0快速入门系列笔记–计划任务服务crond(十五) 1.了解计划任务的作用 作用:释放我们的双手,释放我们的时间 计划任务,让系统在将来的指定时间点执行某些任务(程序) 计划任务,可以周期 ...

  4. 论面向服务架构(SOA)设计及其应用

    论面向服务架构(SOA)设计及其应用 马旺旺 (石家庄铁道大学,河北省石家庄市,050000) 摘 要: SOA分层架构的核心思想是运用 SOA 理论将现有的信息系统分解成多个独立的粗粒度 Web 服 ...

  5. 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承...

    当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对SOA,对面向服务产生误解.其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替. ...

  6. A1 为什么要面向服务的架构SOA?什么是SOA?

    前言 本系列请点击:<搞一下面向服务的架构SOA> 所有系列请点击:<汽车电子系列分享> 本期视频 SOA点映视频 一.为什么要面向服务的架构SOA? 在整个智能网联汽车大环境 ...

  7. 什么是面向服务架构(SOA)以及ESB在SOA的作用与特点

    面向服务架构(SOA)是一种粗粒度.松耦合的服务架构,服务之间通过简单.精确定义接口进行通信.他可以根据需求通过网络对松散耦合的粗粒度的应用组件进行分布式部署.使用和组合.SOA能够帮助企业系统架构设 ...

  8. IFS应用系统-面向服务的架构(SOA)

    IFS面向服务的架构(SOA)有助于客户提高敏捷度与降低总持有成本(TCO) . http://www.ifsworld.com/cn/ IFS 应用系统建立在网络和门户技术基础上,提供了60多个 企 ...

  9. 02 AP AUTOSAR 与 面向服务的架构SOA

    Hello!大家好! 欢迎来到<搞一下汽车电子> 今天,我们给大家分享的是Adaptive Platform AUTOSAR 专题视频:02 自动驾驶 & 域控中间件--自适应平台 ...

  10. 面向服务架构(SOA)与微服务架构

    面向服务架构 面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单地认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点.无论你采用哪种协议定义服务与服务之间的通信方式(如W ...

最新文章

  1. JAVA增删改查XML文件
  2. XAML实时显示更新插件LiveXAML
  3. NSBundle介绍
  4. Python Django URL逆向解析(通过模板页面逆向访问)代码示例
  5. oracle查看字典结构体,Oracle-17-数据字典查看约束信息
  6. python截取后三位元素_python – 如何从BeautifulSoup的表中获取第一个和第三个td?...
  7. strstr函数_[LeetCode] 28. 实现strStr()
  8. 如何正确使用工业级交换机?
  9. C++11 explicit关键字的作用
  10. 阿里音乐流行趋势预测-代码分享
  11. ClassNotFoundException和NoClassDefError之间的区别
  12. struts2之自定义拦截器及拦截器生命周期分析
  13. android平板管理工具,安卓平板如何提升使用效率,这17款软件你应该知道
  14. C语言short精解
  15. 电子元器件符号+实物图+命名规则(太全了,绝对收藏)
  16. html div 作用,div是什么意思,都有什么作用?
  17. 你运营的公众号文章阅读量上不来,怎么回事?
  18. SQL题库:sqllearning4​—触发器、数据库存储练习
  19. stm32f103rct6最小系统原理图
  20. ubuntu登录界面无限刷新

热门文章

  1. Vijos1755 靶形数独 Sudoku NOIP2009 提高组 T4 舞蹈链 DLX
  2. android 数据存储之 Shared Preferences
  3. 【原创】编程题练习:头插法尾插法建立单链表及找寻单链表中的倒数第K个节点...
  4. eclipse不格式化注释
  5. C# .Net中的类型转换(5)
  6. [19/06/08-星期六] CSS基础_表格表单
  7. Dijkstra与Floyd算法
  8. Myeclipse如何使用自带git工具向远程仓库提交代码(转)
  9. Gradle与Gradle插件
  10. Python全栈之路--Django ORM详解