初探 SOA

时间:2022-03-18 08:00:57 

SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。
    在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。每项SOA服务都有一个与之相关的服务品质(QoS, quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信(译注:可靠消息是指,确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。

为什么选择SOA?
    不同种类的操作系统,应用软件,系统软件和应用基础结构(application infrastructure)相互交织,这便是IT企业的现状。一些现存的应用程序被用来处理当前的业务流程(business processes),因此从头建立一个新的基础环境是不可能的。企业应该能对业务的变化做出快速的反应,利用对现有的应用程序和应用基础结构(application infrastructure)的投资来解决新的业务需求,为客户,商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业务(organic business)的构架。SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务,从而保护了现有的IT基础建设投资。


SOA基础结构
    要运行,管理SOA应用程序,企业需要SOA基础,这是SOA平台的一个部分。SOA基础必须支持所有的相关标准,和需要的运行时容器。
SOAP, WSDL, UDDI
WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。


SOA 不是Web服务
    在理解SOA和Web服务的关系上,经常发生混淆。根据2003年4月的Gartner报道,Yefim V. Natis就这个问题是这样解释的:“Web服务是技术规范,而SOA是设计原则。特别是Web服务中的WSDL,是一个SOA配套的接口定义标准:这是Web服务和SOA的根本联系。”从本质上来说,SOA是一种架构模式,而Web服务是利用一组标准实现的服务。Web服务是实现SOA的方式之一。用Web服务来实现SOA的好处是你可以实现一个中立平台,来获得服务,而且随着越来越多的软件商支持越来越多的Web服务规范,你会取得更好的通用性。

SOA的优势
    SOA的概念并非什么新东西,SOA不同于现有的分布式技术之处在于大多数软件商接受它并有可以实现SOA的平台或应用程序。SOA伴随着无处不在的标准,为企业的现有资产或投资带来了更好的重用性。SOA能够在最新的和现有的应用之上创建应用;SOA能够使客户或服务消费者免予服务实现的改变所带来的影响;SOA能够升级单个服务或服务消费者而无需重写整个应用,也无需保留已经不再适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。

标签:SOA
0
投稿

猜你喜欢

  • Python实现按当前日期(年、月、日)创建多级目录的方法

    2022-05-01 09:22:01
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间

    2023-08-04 02:11:09
  • thinkphp6如何使用中间件记录行为日志

    2023-06-13 14:43:44
  • Python第三方常用模块openpyxl的简单介绍

    2021-05-28 16:10:09
  • Python中HMAC加密算法的应用

    2021-07-29 15:55:18
  • 使用python Django做网页

    2023-11-22 03:35:26
  • Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    2022-04-07 09:50:44
  • Python自动化测试selenium指定截图文件名方法

    2022-01-03 04:51:49
  • pytorch获取模型某一层参数名及参数值方式

    2022-07-03 06:10:28
  • 优化Oracle停机时间及数据库恢复

    2010-07-20 12:54:00
  • 实现UTF8转换GB2312国标码的asp代码

    2011-02-28 10:53:00
  • MySQL的之表结构修改

    2012-01-05 19:16:17
  • 详细解读Python中的json操作

    2022-02-21 00:55:13
  • pygame实现非图片按钮效果

    2021-08-30 23:21:14
  • php flv视频时间获取函数

    2023-09-04 13:41:48
  • Pytorch实现各种2d卷积示例

    2023-06-20 16:17:29
  • SQL Server数据库备份出错及应对措施

    2009-04-20 17:02:00
  • python爬虫设置每个代理ip的简单方法

    2022-11-01 19:18:52
  • 基于PyQt5制作一个windows通知管理器

    2022-10-18 19:28:24
  • 白鸦:Design IT. (1),迭代的设计

    2008-08-27 21:11:00
  • asp之家 网络编程 m.aspxhome.com