中培伟业IT常青树专家组在前面章节讲述了企业ESB的架构、使用场景,以及服务标准规范,接下来他们介绍ESB服务化实现的两个基本点,即业务服务规划和ESB服务的技术实现。
ESB服务化的目标是建立标准化、规范化、可复用的服务体系,提升业务响应速度,灵活应对市场挑战和业务变革;在服务体系的建立过程中,企业逐步形成重要的可复用的软资产,更好地支撑的业务战略目标。
服务化的实现包括两大部分任务,一部分是业务服务的设计,提供开放的、基于标准的服务定义与实现。另一部分,ESB采用SOA理念,实现服务的注册、发布、消费、监控,以及服务的全生命周期管理。本章介绍第一部分,业务服务的规划。
1章 业务服务的规划
业务服务的规划,是指企业通过对现有服务资产的梳理和分析,逐步建立、完善服务体系,规划并指导各系统定义和发布业务服务或技术服务。
业务服务的规划,注重效率和重用,可以将业务系统的公共技术部分和公共应用部分提炼出来,形成可重用的服务。公共技术部分,比如用户认证授权、文件管理、业务流程管理、数据质量管理等,形成统一的基础技术服务平台;公共应用部分,是指将应用的公共部分提炼出来,不同行业有不同的业务和应用特点,这部分要具体情况具体分析。如下图所示:
对于新的业务需求,尽量多地通过对现有服务的组织,来满足需求。这样,加快了反应速度和质量,减少了开发、测试的工作量。
那么,具体说来,服务规划有什么样的方法论指导,规划的策略、原则和具体方法是什么呢?所幸,SOAD为企业SOA的实现提供了一种全新的方法论,搭建了业务和 IT 之间的桥梁,全面支持SOA项目的分析和设计阶段,它以现有的经过实践检验的OOAD、EA和 BPM 为基础建立了创新的交叉学科的方法,规划了一个整体的建模规则。下面描述服务规划的策略、原则和开发步骤方法。
2章 服务规划的策略
服务策略是实施服务设计的指导方针,在技术层面和管理层面定义了那些做法是正确的,策略会随着时间推移不断演化。常见的服务策略包括以下几种:
a)安全策略,包括服务授权,采用数字证书、加密技术实现对服务报文的完整性、保密性和不可抵赖性等。
b)服务的互操作性
c)语义、数据和schema策略
d)服务质量和服务等级协议策略
e)可靠性策略
f)服务版本策略。
3章 面向服务的架构设计原则
服务规划遵循面向服务架构的设计原则,包括以下:
服务标准化:指服务设计开发必须遵循的技术标准和开发步骤规范,包括XML、WSDL、SOAP、WS-policy、XML Schema等。这是应用系统作为服务提供者和服务使用者必须遵循的,保证服务在整个生命周期具有一致的统一的规范和技术标准。
服务松耦合:松耦合是一个服务请求另一个服务的同时依旧保持服务独立性,通过使用服务契约来达到松散耦合。何为服务契约?服务源于对现实世界的模拟,现代社会是一个契约社会,服务的提供者和消费者双方基于契约行事,契约约定了服务内容和责任义务。
服务可重用:服务是独立的、上下文无关的。以服务为导向鼓励所有服务的可重用性,而不用过多考虑是否存在直接的重用需求。
服务透明性:服务透明性原则允许将服务当作黑盒,提供公共方法供服务使用者调用,对外部隐藏细节。对于服务请求者来说只关心请求服务的结果,而不用关注服务的具体实现过程。
服务可发现:应用系统需要有效的方法知道有哪些可用服务,以及如何获取和使用这些服务。服务的可发现性有利于避免多余的服务,或者实现多余逻辑的服务。
服务可组合:服务可组合性原则,是为了保证服务能够成为组合业务操作服务的有效成员;在常见的编排层服务设计过程中,需要组合不同的服务,调用不同的操作逻辑,这就要保证设计出来的服务能够被组合起来实现业务服务的操作过程。
4章 服务设计的开发方法
服务的设计、开发应遵循面向服务架构的设计、开发规范,即SOAD规范。SOAD包括服务分析、服务设计、服务实现三个主要步骤。其中步骤执行顺序和每一步骤主要完成的工作如下图所示:
服务分析,服务分析通常采用从顶至下的设计方法,通过对企业应用架构的全面功能分析,注重效率和重用,识别出可重用的服务,包括可重用的基础技术服务和基础业务服务,以及潜在的业务服务。
服务设计,服务设计要遵从面向服务的架构设计原则,要求简单明晰,同时兼顾灵活性,原子设计和组合设计相结合,并能够支持不同类型的服务方式。原子设计是指以实体为中心的设计,即基本功能点设计,主要是完成一次交互的请求响应处理,比如对应于后台的查询、检查、验证等,服务设计时要注意原子服务粒度。组合服务由原子服务组成的,主要完成跨系统的原子服务的组合访问,形成应用服务设计和以任务为中心的服务设计。组合的服务个数不宜过多,当组合的原子服务过多,业务逻辑处理变得复杂,服务质量将大大降低。组合服务统一对外发布标准的接口,遵循SOA规范。
服务实现,指服务的具体实现,包括服务的开发、测试和部署。服务开发遵从SOA标准规范,比如JAX-WS规范,在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS运行时会将这些API的调用转换成为对应的SOAP消息。
5章 结束语
服务设计和开发通常采用迭代开发方法,每一轮迭代周期都包括服务分析、服务设计和服务实现。在每一轮迭代均要有业务人员的参与,并提供反馈,为下一轮迭代提供指导。这样可以降低服务建设的风险,提高用户满意度。下一章节讲述ESB服务的技术实现。