3 粗粒度服务接口
粗粒度服务提供一项特定的业务功能,而细粒度服务代表了技术组件方法。举个例说明最为清楚??向计费系统中添加一个客户是典型的粗粒度服务,而你可以使用几个细粒度服务实现同一功能,如:将客户名加入到计费系统中,添加详细的客户联系方式、添加计费信息等等。
采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往复,一次往复就足够。Inte.net环境中有保障的TCP/IP会话已不再占据主导、建立连接的成本也过高,因此在该环境中进行应用开发时粗粒度服务接口的优点更为明显。
除去基本的往复效率,事务稳定性问题也很重要。在一个单独事务中包含的多段细粒度请求可能使事务处理时间过长、导致后台服务超时,从而中止。与此相反,从事务的角度来看,向后台服务请求大块数据可能是获取反馈的唯一途径。
4 分级
一个关于粗粒度服务的争论是此类服务比细粒度服务的重用性差,因为粗粒度服务倾向于解决专门的业务问题,因此通用性差、重用性设计困难。解决该争论的方法之一就是允许采用不同的粗粒度等级来创建服务。这种服务分级包含了粒度较细、重用性较高的服务,也包含粒度较粗、重用性较差的服务。
在服务分级方面,须注意服务层的公开服务通常由后台系统(BES's)或SOA平台中现有的本地服务组成。因此允许在服务层创建私有服务是非常重要的。正确的文档、配置管理和私有服务的重用对于IT部门在SOA服务层快速开发新的公开服务的能力具有重要影响。
5 松散耦合
SOA具有“松散耦合”组件服务,这一点区别于大多数其他的组件架构。该方法旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。
服务提供者和服务使用者间松散耦合背后的关键点是服务接口作为与服务实现分离的实体而存在。这是服务实现能够在完全不影响服务使用者的情况下进行修改。
大多数松散耦合方法都依靠基于服务接口的消息。基于消息的接口能够兼容多种传输方式(如HTTP、JMS、TCP/IP、MOM等)。基于消息的接口可以采用同步和异步协议实现,Web服务对于SOA服务接口来讲是一个重要的标准。
当使用者调用一个Web服务时,被调用的对象可以是CICS事务、DCOM或CORBA对象、J2EE EJB或TUXEDO服务等,但这与服务使用者无关。底层实现并不重要。
消息类Web服务通常是松散耦合和文档驱动的,这要优于与服务特定接口的连接。当客户调用消息类Web服务时,客户通常会发送的是一个完整的文档(如采购订单),而非一组离散的参数。Web服务接收整个文档、进行处理、而后可能或者不会返回结果信息。由于客户和Web服务间不存在紧密耦合请求响应,消息类Web服务在客户和服务器间提供了更为松散的耦合。
6 可重用的服务及服务接口设计管理
如果完全按照可重用的原则设计服务,SOA将可以使应用变得更为灵活。可重用服务采用通用格式提供重要的业务功能,为开发人员节约了大量时间。设计可重用服务是与数据库设计或通用数据建模类似的最有价值的工作。由于服务设计是成功的关键因此,因此SOA实施者应当寻找一种适当的方法进行服务设计过程管理。
服务设计管理根本上讲是服务设计问题,服务设计需要在两点间折衷??走捷径的项目战术与企业构建可重用通用服务的长期目标。
超越项目短期目标进行服务接口的开发和评估是迈向精确定义服务接口的重要一步,同时还需要为接口文档、服务实现文档及所有重要的非功能性特征设立标准。
在大型组织中实现重用的一个先决条件是建立通用(设计阶段)服务库和开发流程,以保证重用的正确性和通用性。此外,对记述服务设计和开发的服务文档进行评估也是成功利用服务库的关键。
简言之,不按规则编写服务将无法保证可提供重用性的SOA的成功实施。在执行规则的过程中会产生财务费用,需要在制定SOA实施计划时加以考虑。
7 标准化的接口
近年来出现的两个重要标准XML和Web服务增加了全新的重要功能,将SOA推向更高的层面,并大大提升了SOA的价值。尽管以往的SOA产品都是专有的、并且要求IT部门在其特定环境中开发所有应用,但XML和Web服务标准化的开放性使企业能够在所部署的所有技术和应用中采用SOA。这具有巨大的意义!
Web服务使应用功能得以通过标准化接口(WSDL)提供,并可基于标准化传输方式(HTTP和JMS)、采用标准化协议(SOAP)进行调用。例如,开发人员可以采用最适于门户开发的工具轻松创建一个新的门户应用,并可以重用ERP
你也可以不采用Web服务或XML来创建SOA应用,但是这两种标准的重要性日益增加、应用日趋普遍。尽管目前只有几种服务使用者支持该标准,但未来大多数的服务使用者都会将其作为企业的服务访问方法。
8 支持各种消息模式
SOA中可能存在以下消息模式。在一个SOA实现中,常会出现混合采用不同消息模式的服务。
﹡无状态的消息。使用者向提供者发送的每条消息都必须包含提供者处理该消息所需的全部信息。这一限定使服务提供者无须存储使用者的状态信息,从而更易扩展。
﹡有状态的消息。使用者与提供者共享使用者的特定环境信息,此信息包含在提供者和使用者交换的消息中。这一限定使提供者与使用者间的通信更加灵活,但由于服务提供者必须存储每个使用者的共享环境信息,因此其整体可扩展性明显减弱。该限定增强了服务提供者和使用者的耦合关系,提高了交换服务提供者的服务难度。
﹡等幂消息。向软件代理发送多次重复消息的效果和发送单条消息相同。这一限定使提供者和消费者能够在出现故障时简单的复制消息,从而改进服务可靠性。
9 精确定义的服务接口
服务是由提供者和使用者间的契约定义的。契约规定了服务使用方法及使用者期望的最终结果。此外,还可以在其中规定服务质量。此处需要注意的关键点是,服务契约必须进行精确定义。
META将SOA定义为:“一种以通用为目的、可扩展、具有联合协作性的架构,所有流程都被定义为服务,服务通过基于类封装的服务接口委托给服务提供者,服务接口根据可扩展标识符、格式和协议单独描述。”该定义的最后部分表明在服务接口和其实现之间有明确的分界。
SOA的优点
了解了SOA的定义和基本特征,最后我们再来看看SOA潜在的优点:
﹡编码灵活性
可基于模块化的低层服务、采用不同组合方式创建高层服务,从而实现重用,这些都体现了编码的灵活性。此外,由于服务使用者不直接访问服务提供者,这种服务实现方式本身也可以灵活使用。
﹡明确开发人员角色
例如,熟悉BES的开发人员可以集中精力在重用访问层,协调层开发人员则无须特别了解BES的实现,而将精力放在解决高价值的业务问题上。
﹡支持多种客户类型
借助精确定义的服务接口和对XML、Web服务标准的支持,可以支持多种客户类型,包括PDA、手机等新型访问渠道。
﹡更易维护
服务提供者和服务使用者的松散耦合关系及对开放标准的采用确保了该特性的实现。
﹡更好的伸缩性
依靠服务设计、开发和部署所采用的架构模型实现伸缩性。服务提供者可以彼此独立调整,以满足服务需求。
﹡更高的可用性
该特性在服务提供者和服务使用者的松散耦合关系上得以体现。使用者无须了解提供者的实现细节,这样服务提供者就可以在WebLogic集群环境中灵活部署,使用者可以被转接到可用的例程上。
SOA可以看作是B/S模型、XML/Web Service技术之后的自然延伸。SOA将能够帮助我们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
文章来源于领测软件测试网 https://www.ltesting.net/