基于SOA组件化架构-应用构成
相关文章:基于SOA组件化架构-技术架构
服务总线和OSGI
总线(Bus):一般指通过分时复用的方式,将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。基于总线模式的有很多应用,在微机的技术中,有三种总线,地址总线Address Bus,数据总线 Data Bus,控制总线 Control Bus。在通信架构下,交换机也是一种总线,在 SOA中,总线一般指企业服务总线(Enterprise ServiceBus,ESB),企业服务总线可以连接所有协议的各种接口,但是最理想的是基于 XML 的 Web 服务标准。
OSGi —— Open Service Gateway Initiative,1999 年 OSGi联盟成立,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。OSGi 是一个 Java框架,该框架能装载以 Bundle 为单位的资源。Bundle 能提供服务或响应处理请求,而他们之间的依赖都是被管理起来的,正如一个Bundle 能从容器中获得它所需要的管理。每个 Bundle都可以有它自己的内部类路径,所以它可以作为独立的服务单元。所有的这些符合 OSGi 规范的 Bundle 理论上都可以安装在任何符合OSGi 规范的容器中。OSGi 具有可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等。在 J2EE环境下,基于总线(Bus)模式的思考,可以进一步推广到 Java Class,基于 OSGi 的微内核,建立一个类总线(JavaClass Bus,JCB)。
通过以上概念的分析,我们可以看到,本文提到的业务组件(BC),是指具体的一个软件实现,业务组件(BC)跟 IBM的业务组件模型(CBM)中提到的业务组件有一定的对应关系,但是一般来说,业务组件(BC)可能包含 CBM 中的多个业务组件或者一个CBM 的业务组件封装成多个业务组件(BC)。另外 CBM更多的是从业务角度来考虑,是业务上的概念,业务组件(BC)则是从技术实现角度考虑。服务组件框架(SCA)定义的粒度和业务组件(BC)相比来说,SCA划分的还是很细,业务组件(BC)是更粗粒度的一个软件实现概念。
业务组件松耦合设计-OSGI
业务组件以 Web 服务的方式提供接口,通过企业服务总线连接,业务组件内部为了实现高可复用性和高效性,采用基于 OSGi标准进行构建模块,实现内部模块之间的松耦合,即在业务组件内部基于 OSGi标准进行模块化设计,将业务组件进一步分解为松耦合的模块(Bundle),使得业务组件本身更加灵活。
基于 OSGi标准,业务组件内部的模块通过一个具有动态加载类功能的微内核连接,统一管理各个模块,为了便于管理,将不同模块之间的类接口采用服务注册的方式进行管理,具有类动态加载功能的微内核和类接口管理组成类总线(JCB)的基本功能,为了更好的实现重用,有些模块是共用的,比如数据访问模块、日志管理模块等。
组件化容器
为了实现组件的装载和配置,SSB提供容器的功能,容器主要分为组件容器和服务容器。其中组件容器提供组件的基础运行环境,服务容器提供服务暴露功能,使服务能够被其他容器或其他系统内的组件无缝调。下图为一个参考的组件化容器图:
UI组件和装载:提供主界面单元的运行框架,能够根据用户对主界面的定制要求,进行菜单、按钮、图片、工具栏、文本信息等UI单元的加载、布局、呈现功能。UI单元装载器提供从UI单元定制配置文件中获取菜单单元上下级、从属关系,排序,页面链接及参数的功能。
提供页面调用的松耦合机制,能根据页面接口获取跳转页面的链接和参数,实现页面的跳转。同时能够封装屏蔽服务端页面传递参数方式调用的不一致性,使页面能通过统一的接口获取不同方式传递的参数,达到一致的体验,提升开发效率。
传统的Web和界面展现层可以看到,很难将页面打完一个可以独立部署的包。而现在开源的Web框架Taperstry可以做到这一点,即Web层也可以打包为独立的War包并进行管理和部署。
FS单元装载器:FaçadeService单元装载器即外观服务单元装载器,作为DS单元的统一门面,UI单元对象通过统一的FS与DS单元内部对象进行交互。FaçadeService提供一个高等级的接口,使DS单元更易于使用,降低系统的复杂性和层间的耦合度,提高扩展的灵活性。
DS单元装载器:提供核心服务层组件的运行框架,提供一种无侵入式的高扩展性框架,代码中无需涉及容器核心专有类,即可将其纳入容器进行管理。DS单元装载通过动态调用的方式避免硬编码方式的约束,可在运行期根据配置文件,将其他对象的引用通过组件提供的方法进行设定。
DA单元装载器:DA单元装载器提供加载DA单元的机制,能为不同DA单元提供统一的接口,屏蔽单元的差异,简化DA单元开发,提高代码的可重用性。
设备装载器:提供设备服务的通用机制,包括设备的装载、卸载,热插,设备的初始化、关闭等功能,以及设备适配器的管理配置。
组件管理器:提供容器中组件的管理功能,能通过组件的自描述信息,获取组件的接口,维护组件间的耦合关系,完成组件的注册、激活、停止、禁用在生命周期中的管理功能。
服务容器
服务组件和技术组件:服务组件为业务组件中唯一的和外部进行交互的接口组件,包括了服务消费和服务调用均在服务组件完成。技术组件为服务组件的具体实现,内部功能的业务规则实现等。
服务消费:业务组件本身要消费外部的服务,包括技术服务,流程服务,和其它业务组件提供的业务服务
服务暴露:服务支撑框架能够将SSB组件中,实现了接口的方法以服务的形式对外暴露。可以暴露为SoapWebservice服务和Restful webservice服务。
服务描述生成:用户采用HTTP协议访问“Rest服务描述地址”和“WebService服务描述地址”,可以获取业务实现类的Rest服务描述和WebService服务描述。
服务访问控制:外系统访问“服务描述地址”或“服务地址”,服务支撑框架先校验服务请求者身份是否合法。如果请求者身份合法,则允许访问服务资源;如果请求者的身份还没有经过认证,则不允许访问服务资源。
会话封装:服务支撑框架为每个客户端生成一个Session对象,并且将客户端的身份和请求信息放入Session对象中。业务实现类可以通过Session对象保存上下文相关的信息。