摘要:
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型。它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来;
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言;构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。本文介绍面向服务体系架构的标准及其优缺点、工作流程、架构、角色、操作等基础知识。
WebService
Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
Web service是技术规范,SOA是设计原则。从本质上讲,SOA是一种架构模式,而web service是利用一组标准实现的服务。Web service是实现SOA的方式之一。用web service实SOA的好处是:可以实现一个中立平台,来获取服务,获取更好的通用性。
Web Services的目标是即时装配、松散耦合以及自动集成。
传统架构的局限性:
传统的架构,软件包是被编写为独立的(self-contained)软件,即在一个完整的软件包中将许多应用程序功能整合在一起。实现整合应用程序功能的代码通常与功能本身的代码混合在一起。
我们将这种方式称作软件设计“单一应用程序“。与此密切相关的是,更改一部分代码将对使用该代码的代码具有重大影响,这会造成系统的复杂性,并增加维护系统的成本。而且还使重新使用应用程序功能变得较困难,因为这些功能不是为了重新使用而打的包。
缺点:代码冗余 不能重用 紧耦合 成本高
SOA优势:
SOA旨在将单个应用程序功能彼此分开,以便这些功能可以单独用作单个的应用程序功能或“组件”。这些组件可以用于在企业内部创建各种其他的应用程序,或者如有需要,对外向合作伙伴公开,以便用于合作伙伴的应用程序。
SOA优点:代码重用 松耦合 平台独立 语言无关
商品消费——软件服务:
SOA工作流程:
SOA角色:
SOA架构中有三种角色:
服务提供者:发布自己的服务,并且对服务请求进行响应。
服务注册中心:注册已经发布的web service,对其进行分类,并提供搜索服务。
服务请求者:利用服务中心查找所需要的服务,然后使用该服务。
SOA操作:
SOA的三种操作:
发布操作:为了使服务可访问,需要发布服务描述以使服务使用者可以发现它。
查找操作:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。
绑定操作:在检索到服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。
SOA的相关标准——WSDL、UUDI、SOAP
SOAP: 简单对象访问协议 (Simple Object Access Protocol)
WSDL: Web服务描述语言 WSDL (Web Services Description Language)
UUDI: 统一描述、发现和集成 (Universal Description, Discovery and Integration)
WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。
SOA体系-三大核心部件
1、ESB(Enterprise Service Bus)企业服务总线
ESB是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB的五个基本功能:
1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。
2)传输服务: 必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
3)中介:提供位置透明性的服务路由和定位服务;多种消息传递形式;支持广泛使用的传输协议。
4)多种服务集成方式: 如JCA,Web服务,Messaging ,Adaptor等。
5)服务和事件管理支持: 如服务调用的记录、测量和监控数据;提供事件检测、触发和分布功能;
2、BPM(Business Process Management)业务流程管理
所谓业务流程管理是指根据业务环境的变化,推进人与人之间、人与系统之间的整合及调整经营方法与解决方案的IT工具。BPM可以使系统更为强壮,通过BPM组件,SOA能够更好地监控它连接的系统。
3、Portal 门户
门户是一个基于WEB的应用程序,它提供个性化、单点登录、不同来源内容整合及存放信息系统的表示层。 Portal是低成本的集成技术。如果企业已经有了很多信息系统,Portal可以很容易的将这些系统集成到一起,并以统一界面方式提供给用户。
SOA体系-架构模型
4、如何构建SOA
一个SOA系统要具有以下六大关键要素——基础设施、已有资源、企业服务、流程模型、服务展现和系统工具(包括开发、测试和管理工具等)
在基础设施和已有资源都已具备的基础上,开发和构建一个SOA系统要包括以下几方面的工作:
首先需要设计开发出符合标准的服务,这是整个SOA系统最核心的要素。
基于标准服务,借助流程编排工具和建模工具,组织构造流程,生成流程模型,更好地满足业务需求。
实际构建和开发SOA系统,具体包括服务和应用程序的开发,数据的访问、处理和管理,及对服务各种形式的展现等。
SOA应用——统一认证
从中可以看出使用SOA的优点:将身份验证这一功能模块发布成一种服务,其他的软件可以通过UUDI查找该服务,然后将该服务与服务的实现进行绑定。
SOA应用——HOTI架构图
HOTI ——应用架构流向图
HOTI的服务调用
登录服务的实现
Service端(服务提供者):编写服务的实AuthorityBLH ,它实现了BaseBLH,该服务的每一种操作在该类中都有一个对应的方法,针对不同的操作名称,调用相应的方法。它是一个业务逻辑处理,与数据层通信,完成相应的数据操作。
Servicemanager服务的注册与管理。服务的实现完成以后,要为服务定义服务名和操作名。例如登录组件的serviceName="Auhtority_Mgr" operationName=“query_AuthoritysWithUserID” 。然后向ServiceManager进行注册。每一种服务都对应一个业务逻辑处理XXXBLH。
HOTI的服务调用
客户端(服务请求者):当用户点击登录时,想要调用sevice端的服务。必须在配置文件中给出服务的名称和操作名称。<serviceCall serviceName="Auhtority_Mgr" operationName=“query_AuthoritysWithUserID” />。Soap代理根据用户的请求,将请求的消息转换成soap消息格式,创建连接,与服务端进行通信。
Service端的soap引擎监听到请求,从soap消息中取出服务名和操作名。通过servicemanager找到该服务对应的业务逻辑处理XXXBLH,然后执行该业务逻辑,将返回的结果封装成soap消息,返回客户端。
基于 SOA 的解决方案
COATS 具有硬编码的业务规则、过程、逻辑和数据访问,已发展为难于针对现有和新兴业务需求进行调整的系统。更改业务流程通常要求进行大量的重新编码工作:开发人员必须理解一组复杂的点到点连接和组件独立性,以便预测变更的效果。为了应对不断发生的订单变化(包括调度系统为了满足客户的交货日期而进行的自动调整),必须对多个数据库进行更新和查询,具体取决于地理位置和其他参数(如所保留的五到十年的计算机销售历史记录等)。
为了支持新活动、新产品和业务机会,频繁地对应用程序进行了更新。由于采用了严格的遗留代码,花费了大量资源(时间和资金)进行新功能开发——每个版本的开发时间都要花费六个月时间,占用超过 8,000 小时开发时间。
存在这样的实际需求,需要提高对功能和驻留在现有遗留系统中的宝贵业务数据的访问,并要求能够从其他系统方便地进行访问。
大规模进行替换费用太高,且会带来干扰。
COATS 转换项目的重点在业务涉众认为非常重要的几个目标上:
l 降低应用程序更改或错误导致的生产停滞频率
l 降低由于 COATS 子系统间订单批处理方式的差异而导致收益损失的可能性
l 通过加速更新周期和允许以增量方式重写、更改和重新部署功能来更快、更简单地满足业务需求
l 允许通过建模和监视业务流程模型来进行业务流程管理。
订单管理组件服务项目负责将总体 COATS 系统转换为实时的订单提交系统。
解决方案的面向服务的体系结构对业务流程和 IT 需求进行了标准化。在此体系结构中,业务规则被外部化,而遗留系统功能则被组件化,以便提高灵活性、可伸缩性和重用性。
Order Process Subsystem 负责接收处理客户订单组的请求,并随后将订单发送到其他服务。此系统能够处理多个通道,包括用于实时处理和批处理的 B2B 消息传递系统。
接收到订单后,Order Process Subsystem 将其标记为需要进行验证,并将订单转发给 Validation and Topology Generation 服务。该服务将进行分析,并为不同类别的订单使用专门的验证服务。
传递验证步骤的制造订单组将随后发送到 Manufacture Plant 服务,以转换为物料单,并转发给制造工厂。这些服务将通过服务适配器与实际向目标工厂交付物料单的现有遗留应用程序或业务合作伙伴应用程序交互。
开发过程将首先从支持 IT 系统中分离业务流程和数据。在 IBM WebSphere® Business Modeler(以下称为 Business Modeler)内对业务流程进行了建模和表示。
COATS 开发团队采用了迭代的方法进行此转换项目。迭代过程从使用 Business Modeler 进行业务分析开始,业务分析的目的是为了构建原始 COATS 应用程序中使用的“原样”业务流程的模型。获得了模型后,分析人员就能够确定进行改进的机会、提出更改建议,并能够预估更改对 COATS 应用程序的影响。此外,对“原样”模型的分析还能帮助标识现有资产,以供进行重用。
参考链接:IBM中SOA应用