业界正在广泛寻求解决 B2B 以及 EAI (企业应用集成)所存在问题的方案。这些方案不同于基于 JMS 手段的面向消息中间件技术和 Web 服务技术。本笔记概括地阐述了与 SOA (面向服务体系架构)规范及 ESB (企业服务总线)基础架构有关的 JBI (Java 业务集成)标准。以下第一,二部分转载后整理的。
一.关于面向服务体系架构<o:p></o:p>
关于SOA的概念,你可以找到很多的文章从不同的角度来描述它,不同的软件提供商也有不同的定义方式。BEA有流体计算,微软有Indigo 和SOA-building, SAP有ESA。 每个人都可以从不同的视角来理解SOA,从程序员的角度,SOA是一种全新的开发技术,新的组件模型,比如说Web Service;从架构设计师的角度,SOA就是一种新的设计模式,方法学;从业务分析人员的角度,SOA就是基于标准的业务应用服务。从概念的角度,IBM对SOA的定义是最为全面的,既SOA是一种构造分布式系统的方法,它将业务应用功能以服务的形式提供给最终用户应用或其他服务。SOA包括如下要素:
l 一个体系架构,用开放的标准将软件资产(Asset)化为服务
l 提供标准的方法来表示软件资产及其交互
l 单独的软件资产作为构造单元,被重复使用来开发其他应用
l 将关注点从细节实现转移到应用(application)组装
l 整合企业外部的应用(B2B)的方式
l 开发(现在)和整合(未来)的统一
本文针对的读者是软件开发人员,站在开发人员的角度,往往希望软件开发能够满足对于开发效率、可靠性、易维护性、易管理等多方面的更高要求。让我们通过回顾软件开发的演化过程来看一看SOA出现的必然性:
l 面向机器语言(Monolithic)的开发模式:需要根据不同平台的机器语言来开发代码。
l 面向过程(Procedure)的开发模式:独立于机器的程序语言(C, Pascal等)使开发过程变得简单了,用过程来代表一个抽象的代码集合,包装重用现成的代码。
l 面向对象(Object)的开发模式:用更接近现实的对象来表述一个相对完整的事物。面向对象的语言(Smalltalk,Java等),提供了更抽象的封装和重用模式。面向对象的开发强调从现实世界问题域到软件程序的直接映射,更接近人类的自然思维方式。
l 面向组件(Component)的模式:随着软件开发规模的扩大,在涉及分布式、异构等复杂特征的环境中,代码级别的重用性差,可维护性差,效率低的弱点是不可逾越的,因此人们以架构运行环境(如.Net,J2ee等)来提供完善的支撑平台,从而把开发者解放出来,更专注于业务核心的开发。而这些业务功能(Business Function) 以组件的形式(DCOM, EJB等)发布运行在架构运行环境中。软件开发的重用模式也上升到业务组件的级别。
l 面向服务(SOA)的模式:当软件的使用范围扩展到更广阔的范围,往往会面对更加复杂的IT环境和更加灵活多变的需求。服务(Service)的概念出现了,人们将应用(Application)以业务服务(Business Service)的形式公布出来供别人使用,而完全不需要去考虑这些业务服务运行在哪一个架构体系上,因为所有的服务都讲着同样的语言。SOA考虑了业务发展的长期性,体现了"变化就是永恒"的思想。SOA的核心体现在企业应用或者业务功能上的"重用"和"互操作",而不再把IT与业务对立起来,这可以被视为在IT驱动业务的方向上迈出的重要一步。
我们注意到,SOA同样也强调重用(Reuse), 但是相对于传统的代码重用,对象重用,和部件重用,SOA的重用粒度更粗。SOA的重用在于业务级的应用,即服务的重用,这与软件的发展规律是相一致的。在软件发展的过程中,软件重用的对象越来越接近我们的现实生活。通过部件的重用,软件的开发更具效率,并且开始试图用组件表达业务模式。但是,IT人员仍很难对业务人员解释清楚IT结构怎样映射到业务模型上。然而,IT架构与业务模型的弥合是不可避免的方向。现代企业的业务环境所面临的最大挑战就是变化,规则在变,需求在变,而对变化做出最快的反应,尽快地适应变化,成为企业占得先机,成功运作的关键。很多企业的业务环境依赖于他们的IT架构,因此,IT部门往往直接承载了业务变化带来的压力。每一个具体的业务变化,都直接反应到对现有的IT平台的要求:要么企业IT架构本身对变化自适应,要么IT架构能够在短时间内根据新的业务规则做出调整。这就是SOA架构提出的根本原因,我们需要一种更加贴近业务的IT架构,能够直接描绘业务,对那些不懂IT技术的业务领域专家来说,业务服务却是他们最熟悉的,也就是说是SOA把软件重用的对象从IT人员上升到了业务人员。因此,我们可以说SOA与其它的模式相比,最大的进步在于它与业务的关联性,"服务"对应到实际业务。IT通过"服务"与业务发生了密切的关系,业务人员和IT人员都可以专注于业务逻辑的实现,而共同的语言就是"服务"。
但不是什么场合都适用SOA。通常来讲,SOA适用于较为复杂的IT架构,经常需要与外部复杂的IT环境交互,并且需要快速地应对频繁发生的业务变化。就像你不可能在控制洗衣机的芯片上使用EJB开发一样,如果你的IT环境规模很小,足以灵活地应对变化,不需要与其他的异构IT环境频繁交互,那么SOA带来的好处就不足以抵消它给你带来的系统复杂性。但是,即令如此,你也并没有被完全排除在SOA的大趋势之外。SOA是如此地倍受瞩目,我们可以预见到它的迅猛发展,因此即使你的内部IT架构本身并不是基于SOA的,你也还有机会参与到未来的SOA架构中去。例如,将你的某个业务以服务的形式发布到某个外部SOA平台上供别人使用,作为第三方SOA平台的一个服务提供者(Service Provider)存在。
在选择SOA的实施方案时,要记住,软件的具体实现技术诸如Web 服务与SOA是两回事,SOA是一个概念,方法学, 或者用一个更时髦的词:一种模型。而Web 服务呢?它是一种具体的实现技术,就像EJB一样。SOA ≠ Web服务。不过公平地讲,Web 服务倒确实是目前最适合实现SOA的技术之一,用Web 服务来封装业务服务是个不错的选择。因为Web服务是标准的,WS-I协议保证了来自不同厂商的Web服务即使运行在不同的平台上,底层的实现机理不同也可以顺利交互,这是以前的任何一种技术如CORBA,EJB,或DCOM都不能做到的。而且,Web服务的定义与实现是分开描述的,即松散耦合,因此,可以很方便地替换服务的内在实现而不会对现有的系统造成任何冲击,这也极大地促进了IT架构的灵活性。
对于SOA更进一步的了解,可以参考IBM developerWorks上其他SOA相关的文章(请参见参考资料),我们的系列文章将主要讨论ESB,因此不再此过多地论述SOA了。为了使我们下面的论述更顺畅,请先牢记典型的SOA架构有哪些基本的要求:
1. SOA在相对较粗的粒度上对应用服务或业务模块进行封装与重用;
2. 服务间保持松散耦合,基于开放的标准, 服务的接口描述与具体实现无关;
3. 灵活的架构 -服务的实现细节,服务的位置乃至服务请求的底层协议都应该透明;
<o:p> </o:p>
二.关于标准提出的背景(EAI 和 B2B 的若干问题)以及ESB
假定现在已经按照SOA的思想提炼出了各种业务服务,公布出来,同样,你发现其他很多人也做了同样的事情。大家都很振奋,开始踊跃的尝试,我调用你的一个服务,你调我的一个服务。啊哈!大家都SOA了。且慢,那么这个SOA给你们带来了什么好处呢?Ok,现在我可以在J2EE环境里调用.Net的组件了,但是原来没有SOA的时候也可以做到的呀。只要两个节点之间互相认可对方的方式,即使不存在公开/统一的服务界面也可以实现点到点的互联。因此我们不得不承认,如果我们只有服务,而服务的请求者和服务的提供者之间仍然需要这种显式的点到点的调用,那么这就不是一个典型的SOA架构。请看图二,服务的参与双方都必须建立1对1 的联系。这样一个结构与我十几年前的那种互联的方式何其相似!但是,还记得我们上面提到的SOA三个基本要素吗?显然第三点没有做到。
因此,在SOA中,我们还需要这样一个中间层,能够帮助实现在SOA架构中不同服务之间的智能化管理。最容易想到的是这样一个HUB-Spoke结构,在SOA架构中的各服务之间设置一个类似于Hub的中间件,由它充当整个SOA架构的中央管理器的作用。请看图三,现在服务的请求者和提供者之间有了一个智能的中转站, 服务的请求者不再需要了解服务提供者的细节。不错!看上去是一个好的SOA结构。事实上,传统的EAI就是通过这样一种方式来试图解决企业内部的应用整合问题。
EAI的目标是支持对现有IT系统的重新利用,通过EAI技术能够将不同的软件和系统串联起来,延长这些应用系统的生命周期。传统的EAI,往往使用如CORBA和COM等的消息中间件进行分布式,跨平台的程序交互,修改企业资源规划以达到新的目标,使用中间件、XML等方法来进行数据分配。因此,实际上传统的EAI是部件级的重用。很不幸的是,基于部件的架构没有统一的标准,因此,各个厂商都有各自不同的EAI解决方案,你会看到各种各样的中间件平台。如果EAI碰到了异构的IT环境,就必须分别考虑怎样在各个不同的中间件之间周旋,来实现合理的互联方式,你不得不考虑各种复杂的可能性。因此,你所见过的大多数传统EAI解决方案都比较笨重。
<v:shape id="_x0000_i1034" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 187.5pt"><v:imagedata src="file:///C:\DOCUME~1\GAOLIN~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" o:title="image004"></v:imagedata></v:shape>
再回顾一下我们上面介绍过的SOA的应用场景:复杂的企业级架构。如果我们选择Hub的模式来构建SOA基础架构,从纯粹逻辑的角度,可能会出现哪些问题呢?首先,整个SOA架构的性能,如果每个服务的请求都经过中央Hub的中转,那么Hub的负担会很重,速度会随着参与者的增多而愈来愈慢;其次,这样的系统会很脆弱,一旦Hub出错,整个SOA架构都会瘫痪;最后,这样的架构会破坏SOA的开放性原则,参与者运行在一个相对封闭的环境中,扩展起来十分麻烦。因此,这也不是理想的SOA架构。
好了,现在该ESB登场了:
它与前面的Hub结构有什么不同呢?首先,它比单一Hub的形式更开放,总线结构有无限扩展的可能;其次,真正体现了SOA的理念, 一切皆为服务,服务在总线(BUS)中处于平等的地位。即使我们需要一些Hub,那么它们也是以某种服务的形式部署在总线上,相比上面的结构要灵活的多。这就是ESB,我们需要给它一个明确的定义:ESB是一种在松散耦合的服务和应用之间标准的集成方式。它可以作用于:
l 面向服务的架构 -分布式的应用由可重用的服务组成
l 面向消息的架构 - 应用之间通过ESB发送和接受消息
l 事件驱动的架构 - 应用之间异步地产生和接收消息
很不幸,上面的定义看上去很拗口,我们暂且用一句较通俗的话来描述它:ESB就是在SOA架构中实现服务间智能化集成与管理的中介。而它与SOA的关系要相对好理解一些:ESB是逻辑上与SOA 所遵循的基本原则保持一致的服务集成基础架构,它提供了服务管理的方法和在分布式异构环境中进行服务交互的功能。可以这样说,ESB是特定环境下(SOA架构中
分享到:
相关推荐
内墙装修涂料市场:把握5.6%年复合增长率 在追求舒适与美观并重的现代家居生活中,内墙装修涂料扮演着至关重要的角色。它不仅关乎居室的视觉效果,更与居住者的健康息息相关。令人振奋的是,这一数据背后,隐藏着怎样的市场机遇与挑战?让我们一同探索内墙装修涂料的未来之路。 市场概况: 根据QYR(恒州博智)的统计及预测,2023年全球内墙装修涂料市场销售额达到了149亿元,预计2030年将达到213亿元,年复合增长率(CAGR)为5.6%(2024-2030)。这一增长不仅源于消费者对居住环境品质要求的提升,更得益于技术创新和环保理念的深入人心。 技术创新与趋势: 在内墙装修涂料领域,技术创新是推动市场发展的重要力量。随着环保法规的日益严格和消费者环保意识的增强,低VOC(挥发性有机化合物)、无毒、抗菌等环保型涂料逐渐成为市场主流。同时,智能化、个性化等趋势也日益明显,如通过APP控制涂料颜色、质感等,满足消费者多元化的装修需求。咨询服务在此过程中的价值不言而喻,它能帮助企业紧跟市场趋势,把握技术创新方向,从而在竞争中脱颖而出。 应用领域与细分市场: 内墙装修涂料广泛应用于住宅、酒店、学校、医院
简化装机流程,解决兼容性问题,尤其对经常装机或者碰到不同新旧机器较多的朋友。 Win多合一 ISO 镜像文件 阿里云: https://www.alipan.com/s/eBAt7dffBF5 提取码: 86xr U盘PE启动工具合集(PE工具箱、Ventoy及插件及主题)
Ansible部署Kubernetes集群支持多种特定功能StaticPod模式操作手册.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
2025年终晚会优秀员工展示相册模板
感恩母恩母爱如水母亲节主题班会
2024毕业设计-基于区块链的医疗信息管理系统含论文报告-最新开发.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
植物大战僵尸杂交版v3.0.2
瑞幸咖啡企业微信群话术及人设搭建SOP.xlsx
244081112卓皓(2).docx
项目介绍 Spring Boot + Security + MyBatis Plus 快速开发平台 内置功能 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 权限管理:配置系统菜单,操作权限,按钮权限, 数据权限标识等。 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 参数管理:对系统动态配置常用参数。 通知公告:系统通知公告信息发布维护。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志:系统登录日志记录查询包含登录异常。 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 系统接口:根据业务代码自动生成相关的api接口文档。 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 表单构建:拖动表单元素生成相应的HTML代码。 数据监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 租户管理:加入多租户架构, 使用逻辑隔离租户数据。
猫头虎分享计算2024年博客之星每日可拉票次数程序.html
吉它书本黑板素材毕业纪念电子相册模板
VideoSpeed_87621.zip
基于hadoop的百度云盘源代码(亲测可用完整项目代码),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的