|
[接上页] 这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。 对松耦合系统的需要来源于业务应用程序需要,根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。 虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 soa 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 soa 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。soa 系统原型的一个典型例子是通用对象请求代理体系结构,它已经出现很长时间了,其定义的概念与 soa 相似。然而,现在的 soa 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(exml)为基础的。 web 服务并不是实现 soa 的唯一方式。但是为了建立体系结构模型,所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,soa 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新零件数据库,以包括进新供应的货物却是技术流程。因而,工作流在 soa 的设计中扮演重要的角色。 此外,动态业务工作流不仅包括部门之间的操作,甚至还可以包括与外部合作伙伴进行的操作。因此,为了提高效率,需要定义应该如何获取服务之间的关系的策略,这种策略常常采用服务协定和操作策略等形式。 所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 soa 中都起着重要的作用。消息交换技术最好具备如下特性: (1)基于消息中间件技术,业务中心基于java技术,j2ee标准。 (2)操作系统平台、数据库系统无关性,esb应完全按跨平台技术设计和实现,兼容目前所有常规操作系统和流行的数据库系统。 (3)基于消息内容路由功能,集成工作流服务。 (4)消息交换符合xml标准,为专为国内卫生行业定制的总线消息协议,可通过协议转换器与hl7等多种国际标准协议兼容。 (5)基于卫生行业各系统发展不平衡的现状。整体eai设计模式符合 soa(面向服务系统架构)。 现有的体系结构模型和实践往往是以程序为中心的。应用程序是以某个单一的医疗行业业务需要为出发点。通常,流程信息在组件之间传播。应用程序很像一个黑匣子,没有粒度可用于外部。重用需要复制代码、合并共享库或继承对象。在以流程为中心的体系结构中,应用程序是为过程开发的。流程可以分解成一系列的步骤,每一个步骤表示一个业务服务。实际上,每个过程服务或组件功能都相当于一个子应用程序。将这些子应用程序链接在一起可以创建能够满足业务需求的流程流。这种粒度允许利用和重用整个组织中的子应用程序。 (1)服务请求方 在esb构架中,服务请求方为发起请求的应用系统,通过esb提供的源适配器,将请求消息发送到入点的前置服务器的发送队列。 源适配器为发送方应用系统与esb数据中间交换总线的桥梁,适应目前医疗行业业务系统所采用的系统平台和开发语言有较大差异,各种平台上都有对应的源适配器,支持c,com,java等不同开发环境。 (2)消息中间件 消息队列为构造以同步或异步方式实现的分布式应用提供了松耦合方法。消息队列的api调用被嵌入到新的或现存的应用中,通过消息发送到内存或基于磁盘的队列或从它读出而提供信息交换。消息队列可用在应用中以执行多种功能,比如要求服务、交换信息或异步处理等。 |