2022年SOA真正面目:优势与不足 .pdf
《2022年SOA真正面目:优势与不足 .pdf》由会员分享,可在线阅读,更多相关《2022年SOA真正面目:优势与不足 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SOA (service-oriented architecture),面向服务的架构,恐怕是近一段时间以来最热门的话题之一。在2004 年中国软件业评出的10 大热点名词中,SOA名列榜首。 ZapThink调研公司在最近发表的一份报告中也预测,到2006 年,基于SOA架构的中间件产品将成为网络化商业系统的主要设计思路。Gartner集团的分析师也指出,今年,SOA架构下的中间件产品将进入主流应用之中。Gartner 还预言:“到了 2008 年,至少 60% 的企业将使用SOA 作为创建任务苛刻的应用程序和过程的指导原则”。认清 SOA 的本来面目SOA架构是一场革命,其实质就是将系统模
2、型与系统实现分离。软件业从最初的面向过程、面向对象,到后来的面向组件、面向集成,直到现在的面向服务,走过了一条螺旋上升的曲线。其实,自从上世纪70 年代提出“软件危机”,诞生软件工程学科以来,软件业为了彻底摆脱软件系统开发泥潭,一直也没有放弃努力。在经典软件工程理论中,不管是瀑布方法还是原型方法,都是从需求分析做起,一步一步构建起形形色色的软件系统。但是, 需求变更像一个挥之不去的阴影,时刻伴随着系统左右。每一个实际应用系统的开发者都饱尝了在系统进入开发阶段、测试阶段, 甚至上线阶段遭遇应接不暇的需求变更的极端痛苦。客户将变更的需求视为bug( 错误),也是测试上现阶段的主要问题。如何解决这一
3、问题?能否来一场软件开发和架构的革命?SOA架构的提出,就是被人看成这样的一场革命。其实质就是要将系统模型与系统实现分割开来。1定义SOA并不是一个新概念,有人就将 CORBA 和 DCOM 等组件模型看成SOA架构的前身。 早在1996 年, Gartner Group 就已经提出了SOA的预言。不过那个时候仅仅是一个“预言”,当时的软件发展水平和信息化程度还不足以支撑这样的概念走进实质性应用阶段。到了近一两年, SOA的技术实现手段渐渐成熟了。在BEA 、HP等软件巨头的极力推动下,才得以慢慢风行起来。 Gartner为 SOA描述的愿景目标是实现实时企业(Real-Time Enterp
4、rise)。关于 SOA ,目前尚未有一个统一的、业界广泛接受的定义。一般认为:SOA ,面向服务的架构是一个组件模型,它将应用程序的不同功能单元服务(service ),通过服务间定义良好的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、 操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。 这种具有中立接口的定义(没有强制绑定到特定的实现上)的特征被称为服务之间的松耦合。从这个定义中,我们看到下面两点: 它是一种软件系统架构。 SOA不是一种语言,也不是一种具体的技术,更不是一种产品, 而是一种软件系统架构。它尝试
5、给出在特定环境下推荐采用的一种架构,从这个角度上来说,它其实更像一种架构模式(Pattern),是一种理念架构,是人们面向应用服务的解决方案框架。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 服务( service )是整个 SOA实现的核心。SOA架构的基本元素是服务,SOA 指定一组实体(服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约),这些实体详细说明了如何提供和消费服务。遵循 SOA 观点的系统必须
6、要有服务,这些服务是可互操作的、独立的、模块化的、位置明确的、松耦合的,并且可以通过网络查找其地址。2SOA三种角色的关系图 1 是 W3C 给出的 SOA模型中三种不同角色的关系示意图。其中:服务是一个自包含的、无状态(stateless)的实体,可以由多个组件组成。它通过事先定义的界面响应服务请求。它也可以执行诸如编辑和处理事务(transaction)等离散性任务。 服务本身并不依赖于其他函数和过程的状态。用什么技术实现服务,并不在其定义中加以限制。服务提供者( service provider)提供符合契约(contract)的服务,并将它们发布到服务代理。服务请求者( service
7、 consumer)也叫服务使用者,它发现并调用其他的软件服务来提供商业解决方案。 从概念上来说, SOA 本质上是将网络、传输协议和安全细节留给特定的实现来处理。服务请求者通常称为客户端,但是,也可以是终端用户应用程序或别的服务。服务代理者( service broker )作为储存库、电话黄页或票据交换所,产生由服务提供者发布的软件接口。这三种 SOA 参与者:服务提供者、服务代理者以及服务请求者通过3 个基本操作:发布( publish )、查找( find )、绑定( bind )相互作用。服务提供者向服务代理者发布服务。服务请求者通过服务代理者查找所需的服务,并绑定到这些服务上。服务
8、提供者和服务请求者之间可以交互。所谓服务的无状态,是指服务不依赖于任何事先设定的条件,是状态无关的(state-free)。在 SOA架构中,一个服务不会依赖于其他服务的状态。它们从客户端接受服务请求。 因为服务是无状态的,它们可以被编排(orchestrated)和序列化 (sequenced)成多个序列 ( 有时还采用流水线机制) ,以执行商业逻辑。 编排指的是序列化服务并提供数据处理逻辑。但不包括数据的展现功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12
9、页 - - - - - - - - - 3SOA的特征基于上面的讨论,我们给出SOA的下面一些特征: 服务的封装(encapsulation)。将服务封装成用于业务流程的可重用组件的应用程序函数。 它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。封装隐藏了复杂性。服务的API 保持不变,使得用户远离具体实施上的变更。 服务的重用 (reuse )。服务的可重用性设计显著地降低了成本。为了实现可重用性,服务只工作在特定处理过程的上下文(context )中,独立于底层实现和客户需求的变更。 服务的互操作(interoperability)。 互操作并不是一个新概念。在 COR
10、BA 、 DCOM 、web service中就已经采用互操作技术。在SOA中,通过服务之间既定的通信协议进行互操作。主要有同步和异步两种通信机制。SOA提供服务的互操作特性更有利于其在多种场合被重用。 服务是自治的(Autonomous)功能实体。服务是由组件组成的组合模块,是自包含和模块化的。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting 、EJB 、COM 或者 CORBA ,都需要有一个宿主(Host 或者 Server) 来存放和管理这些功能实体;当这些宿主运行结束时,这些组件的寿命也随之结束。这样当宿主本身或者其他功能部分出
11、现问题的时候,在该宿主上运行的其他应用服务就会受到影响。SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理 (Transaction)、消息队列 (Message Queue)冗余部署 (Redundant Deployment) 和集群系统 (Cluster)在 SOA中都起到至关重要的作用。 服务之间的松耦合度(Loosly Coupled )。服务请求者到服务提供者的绑定与服务之间应该是松耦合的。这就意味着, 服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台,等等。服务请求者往往通过消息调用操作,请求消息和响应,而不是通过使用 API
12、和文件格式。这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(如COBOL )的实现完全用基于Java 语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真实的,只要新代码支持相同的通信协议。 服务是位置透明的(location transparency)。服务是针对业务需求设计的。需要反映需求的变化,即所谓敏捷(agility)设计。要想真正实现业务与服务的分离,就必须使得服务的设计和部署对用户来说是完全透明的。也就是说, 用户完全不必知道响应自己需求的服务的位置,甚至不必知道具体是哪个服务
13、参与了响应。4三个抽象级别从概念上讲, SOA 中有三个主要的抽象级别:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 操作:代表单个逻辑工作单元(LUW )的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。 它们都有特定的结构化接口, 并且返回结构化的响应。同方法一样, 特定操作的执行可能涉及调用附加的操作。 服务:代表操作的逻辑分组。服务可以分层,以降低耦合度
14、和复杂性。一个服务的粒度( granularity)大小也与系统的性能息息相关。粒度太小,会增加服务间互操作通信的开销;粒度太大,又会影响服务面对需求变化的敏捷性。 业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。在 SOA中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排服务来响应业务事件。从建模的观点来看, 由此带来的挑战是如何描述设计良好的操作、服务和流程抽象的特征,以及如何系统地构造它们。 这些涉及服务建模、 特征抽取的问题已经成为现阶段人们关注的焦点。SOA 应用系
15、统总体框架及相关概念看到 SOA的一堆名词, 读者可能会感到迷惑, 有必要结合实际的应用环境进一步阐释SOA的相关概念。总体框架图 1 所示的就是一个SOA应用系统的大体框架结构。它大体上可以分为五个部分: 展现层( presentation):图 1 中 5 区,通过 portal等技术建立展现平台,方便用户在这个界面上提出服务请求。 业务处理建模(business process modeling):图 1 中的 4 区, SOA元模型从MDA中继承了平台无关模型来对业务处理过程建模。这一部分独立于服务设计和部署层。模型驱动架构 MDA (Model Driven Architecture
16、)的主要缺陷是在模型设计阶段就对需求有完整的描述,而且没有需求变更的反馈机制。SOA通过添加敏捷方法AM来应对需求变更的情况。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 服务层 (Services): 图 1 中的 3 区,整个SOA的核心层,它承上启下,对上响应业务模型,对下调用相关组件群完成业务需求, 形成“业务驱动服务、服务驱动技术”的SOA事务处理格局。 服务可以根据粒度分层。虽然细粒度提供了更多的灵活性,但同时也
17、意味着交互的模式可能更为复杂。粗粒度降低了交互复杂性,但敏捷性却下降。 企业组件层(enterprise components ):图 1 中的 2 区,这里是相关组件发挥作用的场所。 这些组件是平台相关的。因为到了这一层,许多底层软硬件平台的特性已经不再透明了。 系统软件层 (Operational System): 图 1 中的 1 区,这一层包括操作系统、数据库管理系统、 CRM 、ERP 、商业智能 (BI) 等异构系统,是一个集成的平台。除此之外,诸如QoS 、安全性等 ( 图 1 中 7 区) 也是 SOA架构的组成部分。在上面的介绍中,自上而下有一条线,如图2 所示,由业务建模开
18、始,通过定义业务过程,得到服务模型,它是平台无关的,实现了模型与实现的分离。再通过设计组件群,得到平台相关的组件模型。实施原则Jason Bloomberg在其 Principles of SOA中指出, SOA的实践必须遵循以下原则: 业务驱动服务,服务驱动技术。从本质上说,在抽象层次上,服务位于业务和技术中间。面向服务的架构设计师一方面必须理解在业务需求和可以提供的服务之间的动态关系;另一方面,同样要理解服务与提供这些服务的底层技术之间的关系。 业务敏捷是基本的业务需求。SOA考虑的是下一个抽象层次:提供响应变化需求的能力是新的“元需求”,而不是处理一些业务上的固定不变的需求。从硬件系统以
19、上的整个架构都必须满足业务敏捷的需求,因为,在SOA中任何的瓶颈都会影响到整个IT 环境的灵活性。 一个成功的SOA总在变化之中。 SOA工作的场景, 更像是一个活的生物体,而不是像传统所说的“盖一栋房子”。IT 环境惟一不变的就是变化,因此面向服务架构设计师的工作永远不会结束。 对于习惯于盖房子的设计师来说,要转向设计一个活的生物体要求有崭新的思维方式。 SOA的基础还是一些类似的架构准则。与其他概念的关系1. SOA 与 Web Services的关系名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
20、- - - - 第 5 页,共 12 页 - - - - - - - - - SOA构架是独立于技术实现的。SOA并不必用Web Services来实现,相反,Web Services也并不一定遵循SOA标准。不过, Web Services的特性十分适合用来实现SOA架构。 Web Services 之间能够交换带结构的文档(比如XML ),这些文档可能包含完全异构的数据信息。这些文档可以同时附带关于数据的数据:元数据(metadata )。换句话说,Web Services可以有较粗的粒度,这样较粗的粒度正好可以构成SOA中服务的粒度。说到底,两者是相交的圆,SOA服务和 Web Serv
21、ices之间的区别还在于设计。SOA概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web Services在需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现SOA模型是通过HTTP传递的 SOAP 消息中最常见的SOA模型。因而,从本质上讲,Web Services是实现 SOA的具体方式之一。2. SOA 中的服务与组件对象(Components Objects )的关系相似之处在于:都有一个或多个接口,并且,服务发布者和使用者都遵守这些接口。不同之处在于: SOA是关于模式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年SOA真正面目:优势与不足 2022 SOA 真正 面目 优势 不足
限制150内