java

位置:IT落伍者 >> java >> 浏览文章

Eclipse新成员Swordfish详解


发布日期:2024年02月01日
 
Eclipse新成员Swordfish详解

企业服务总线(ESB)一直以来都是每个运营商SOA策略的基石然而一直以来由于其过于庞大架构集中化而且与已有的应用程序难以结合的关系ESB一直未能将SOA的价值充分的发挥出来

正因如此Swordfish选择了一条全新的道路建立在Apach ServiceMix和Apache CXF等开源组件之上Swordfish提供了一个可扩展框架这个框架为应用程序开发者以及系统集成商们提供了自己建立ESB的可能性——而且是量身订造而且Swordfish不仅仅是框架秉持着Eclipse可扩展框架与exemplary插件相结合的传统Swordfish项目也把目标放在了企业级插件上这将打造一个对E(企业)十分重视的成熟的开源ESB为了展示Swordfish相对于其他开源ESB的优势我们以下会着重说明那些总结了在真实的企业环境下积累了数年SOA经验所带来的功能

第一个功能可以在运行时(runtime)中将一个服务注册(Service Registry)与一个动态绑定服务(dynamically bind services)整合到一起也就是说与其他ESB所不同Swordfish执行这个任务将无需一个静态的关联以往这个静态关联是用来将使用服务的组件(客户)与提供服务的组件(供应方)联系起来的Swordfish的做法是一个客户找到一个供应方靠的是逻辑标识符这个逻辑标识符又依照一个策略将此服务界面标识为重要所谓策略就是有关用户非功能能力及需求的一个描述有了这两条信息加上包括了已有服务供应方的数据库以及他们各自的策略服务注册会选择一个合适的供应方并计算出一个有效策略这个策略将掌管以后在客户和供应方之间的一切通信这个方法的优势是明显的客户与供应方被松散的组合在一起无需改动商业应用程序代码就可以轻松改动双方的非功能参数

另一个Swordfish的显着特征是它的架构模式——分布的ESB(Distributed ESB)或者叫做联邦的ESB(Federated ESB)这个意思就是说两个服务参与者之间的通信无需中心组件只需建立通信后便可实现相对于传统的中心辐射型集成架构这种模式的优势在于它不会因中心组件过时而形成性能瓶颈从而整个系统具有更强的伸缩性用户在SOA化的过程中实现更多功能的同时无需花费大笔的精力财力在硬件设施上

另一方面联邦ESB的潜在缺陷在于它令系统的管理更加复杂化不过这个缺陷可以通过一个远程配置机制来弥补在Swordfish中管理员可以方便并高效的配置大数量分布的Swordfish个体而且监控功能也很完善监控功能在业务过程管理(BPM)中尤其的重要因为细致监控事件是一个完整的业务活动监控(BAM)的前提而BAM一般都基于复杂事件处理(CEP)

OSGi和JBI全面详解

Swordfish框架所使用的是现在SOA通用的标准在底层有OSGi具体来说就是Equinox即Eclipse基金会的OSGiOSGi提供了组件模型一个模块部署系统以及一个clean class加载系统在上层有JBI标准来实现组件之间的消息抽取(messaging abstraction)以及消息路由(message routing)一开始的JBI 使用自己的组件模型和部署系统不过后来转而使用了OSGi这也符合JBI 工作组的情况还有Apache ServiceMix的第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的必要组成部分

上一篇:Eclipse提高工作效率的好习惯

下一篇:hibernate的性能优化