OSGi和JBI全面详解 Swordfish框架所使用的是现在SOA通用的标准。在底层有OSGi,具体来说就是Equinox,即Eclipse基金会的OSGi。OSGi提供了组件模型,一个模块部署系统,以及一个clean class加载系统。在上层有JBI标准来实现组件之间的消息抽取(messaging abstraction)以及消息路由(message routing)。一开始的JBI 1.0使用自己的组件模型和部署系统,不过后来转而使用了OSGi。这也符合JBI 2.0工作组的情况,还有Apache ServiceMix的第4版。Apache ServiceMix这个Apache的JBI容器(JBI container)正是Swordfish中的核心消息路由引擎。而ServiceMix不仅仅提供路由功能,它本身就包含了大量做好了的组件,这些组件可以直接被用于连接业务逻辑(business logic)或用于传输通道以及协议。 综合来说,Swordfish是一个建立在ServiceMix基础上,并将功能延伸至企业SOA范围的框架。Swordfish核心使用ServiceMix的公共扩展点(public extension points)在规范化消息路由器(NMR)中与消息流建立联系。 与NMR内部建立联系的中心概念就是拦截器(Interceptor)。拦截器是一段代码,这段代码在消息经过NMR进行消息交换时将其拦截下来并对这个消息做一番动作。Java界面可以在Swordfish API中起到拦截器的作用,借助一些插件便可让这个拦截器实现一些特定任务,如消息认证(validation),消息转换(transformation)等。拦截器对消息交换作用的次序可以通过Swordfish框架核心中一个叫做Planner的组件来计算并定义计划。具体计划如何实施可以由用户来决定,所以API中还有一个叫做PlannerStrategy的界面,此界面可以通过插件来使用。举例来说,评估一个消息交换中的策略便可以通过这个PlannerStrategy来实现。除了传统拦截器以外,在特定情况下还可以使用特定的拦截器,比如有一种拦截器可以在服务注册中观察一个服务并为相应的交换重建路由。这个拦截器的基本性能(JBI相关)是核心运行中的一部分,不过具体的观察过程如何实施则靠一个将 ServiceResolver界面实施到框架API的插件来完成。所有的公共API都是这样工作的。 面向应用程序开发者的注册和版本库 以上我们简单介绍了使用服务注册来解决运行时服务端点的优点。不过,服务注册还有更好的地方:它提供了一个面向服务架构中全部服务的全面总览,而且对于服务再利用有很大的用处,而服务再利用则是SOA规范的主要优势之一。如果服务界面在定义的时候就仔细注意到再利用的方面,那么无论多么复杂的服务,在理论上也无非就是把一堆封闭的盒子排列好,再连接起来的问题而已。 以后,服务注册还会增添服务版本库(Service Repository)的功能,此功能可以将所有SOA相关的部件(比如服务界面介绍,策略等)作为SOA工作流中的一部分,安全并有序的保存起来。由此可以实现版本控制,定义认可工作流,分析和报告可行性等。这些功能令企业建立并推广管理流程(governance process)成为可能,而管理流程则是成功SOA的必要组成部分。 更多相关信息:Swordfish官方文档 |