专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程思想 » 面向服务架构:基于RSA实现面向服务的体系架构 »正文

面向服务架构:基于RSA实现面向服务的体系架构

来源: 发布时间:星期二, 2009年2月3日 浏览:26次 评论:0
  1 概述   面向服务体系架构(Service Oriented Architecture, SOA)就是在分布式环境中将各种功能都以服务形式提供给最终用户或者其他服务如今企业级应用开发都采用面向服务体系架构来满足灵活多变可重用性高需求IBM Rational Software Architect(RSA)是套设计和开发工具它构建在开放、可扩展Eclipse3.0平台的上实现了多项行业最新标准提供了灵活插件扩展机制借助UML2.0技术它实现了模型驱动软件Software开发模式可以帮助开发团队(Team)创建更加强壮软件Software结构

  本文从总体上介绍了SOA实现相关技术以及RSA中对这些技术支持和扩展

  2 面向服务体系架构 - SOA

  在经典软件Software工程理论中不管是瀑布思路方法还是原型思路方法都是从需求分析做起步构建起形形色色软件Software系统但是需求变更像个挥的不去阴影时刻伴随着系统左右个实际应用系统开发者都饱尝了在系统进入开发阶段、测试阶段甚至上线阶段遭遇应接不暇需求变更极端痛苦如何解决这问题?能否来场软件Software开发和架构革命?SOA提出就是被人看成这样场革命其实质就是要将系统模型和系统实现分割开来

  2.1 什么是SOA

  2.1.1 定义

  SOA并不是个新概念有人就将CORBA和DCOM等组件模型看成SOA架构前身早在1996年Gartner Group就已经提出了SOA预言不过那个时候仅仅是个"预言"当时软件Software发展水平和信息化程度还不足以支撑这样概念走进实质性应用阶段到了近两年SOA技术实现手段渐渐成熟了在BEA、IBM等软件Software巨头极力推动下才得以慢慢风行起来

  有关SOA般认为:SOA面向服务架构是个组件模型它将应用区别功能单元----服务(service)通过服务间定义良好接口和契约(contract)联系起来接口采用中立方式定义独立于具体实现服务硬件平台、操作系统和编程语言使得构建在这样系统中服务可以使用统和标准方式进行通信这种具有中立接口定义(没有强制绑定到特定实现上)特征称为服务的间松耦合

  2.1.2 SOA中特征

  从SOA定义中我们看到两点:

  软件Software系统架构: SOA不是种语言也不是种具体技术更不是种产品而是种软件Software系统架构它尝试给出在特定环境下推荐采用种架构从这个角度上来说它其实更像种架构模式(Pattern)种理念架构是人们面向应用服务解决方案框架

  服务(service)是整个SOA实现核心SOA架构基本元素是服务SOA 指定组实体(服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约)这些实体详细介绍说明了如何提供和消费服务遵循 SOA 观点系统必须要有服务这些服务是可互操作、独立、模块化、位置明确、松耦合并且可以通过网络查找其地址

  基于上面讨论我们给出SOA下面些特征:

  服务封装(encapsulation)将服务封装成用于业务流程可重用组件应用它提供信息或简化业务数据从个有效状态向另个状态转变封装隐藏了复杂性服务API保持不变使得用户远离具体实施上变更

  服务重用(reuse)服务可重用性设计显著地降低了成本为了实现可重用性服务只工作在特定处理过程上下文(context)中独立于底层实现和客户需求变更

  服务互操作(eroperability)互操作并不是个新概念在CORBA、DCOM、web service中就已经采用互操作技术了在SOA中通过服务的间既定通信协议进行互操作主要有同步和异步两种通信机制SOA提供服务互操作特性更利于其在多个场合被重用

  服务是自治(Autonomous)功能实体服务是由组件组成组合模块是自包含和模块化SOA非常强调架构中提供服务功能实体完全独立自主能力传统组件技术如.NET Remoting EJBCOM或者CORBA都需要有个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件寿命也随的结束这样当宿主本身或者其它功能部分出现问题时候在该宿主上运行其它应用服务就会受到影响SOA架构中非常强调实体自我管理和恢复能力常见用来进行自我恢复技术比如事务处理(Transaction)消息队列(Message Queue)冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要作用

  服务的间松耦合度(Loosly Coupled)服务请求者到服务提供者绑定和服务的间应该是松耦合这就意味着服务请求者不知道提供者实现技术细节比如设计语言、部署平台等等服务请求者往往通过消息操作请求消息和响应而不是通过使用 API 和文件格式这个松耦合使会话软件Software可以在不影响另情况下发生改变前提是消息模式保持不变个极端情况下服务提供者可以将以前基于遗留代码(例如COBOL)实现完全用基于 Java 语言新代码取代同时又不对服务请求者造成任何影响这种情况是真实只要新代码支持相同通信协议

  服务是位置透明(location transparency)服务是针对业务需求设计需要反应需求变化即所谓敏捷(agility)设计要想真正实现业务和服务分离就必须使得服务设计和部署对用户来说是完全透明也就是说用户完全不必知道响应自己需求服务位置甚至不必知道具体是哪个服务参和了响应

  2.2 SOA不等于web 服务

  由于Web服务和SOA有着很多相同技术特点如:基于XML语言符合SOAP、WSDL和UDDI标准等很多人都认为下代Web服务就是SOA Web服务可以用来实现SOA但是如果没有Web服务企业照样也可以很好地实现SOA反的即便是利用Web服务技术也不定能保证SOA效果就更好

  Web服务和SOA关系如图1所示

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  Web服务是套技术体系可以用来建立应用解决方案解决特定消息通信和应用集成问题随着时间推移我们发现这些技术在不断发展、不断成熟也会更好地帮助你实现SOASOA是种软件Software架构而不局限于某个技术组合(例如Web服务)它超越了技术范畴个商业环境中纯粹SOA是种应用软件Software架构其中所有功能都是相互独立服务模块通过完备定义接口相互联系起来只要按照顺序来请求这些功能模块所提供服务就可以形成完整业务流程正如IBM SOA技术和策略总监Mark Colan先生强调那样:"Web服务确是实现SOA条最好但不等同于SOA"   SOA灵活性将给企业带来巨大好处如果把企业IT架构抽象出来将其功能以粗粒度服务形式表示出来每种服务都清晰地表示其业务价值那么这些服务顾客(可能在公司内部也可能是公司某个业务伙伴)就可以得到这些服务而不必考虑其后台实现具体技术更进如果顾客能够发现并绑定可用服务那么在这些服务背后IT系统能够提供更大灵活性

  但是要得到这种灵活性需要有系列实现架构新思路方法这是项艰巨任务企业架构设计师必须要变成"面向服务架构设计师"不仅要理解SOA还要理解SOA实战在架构实战和最后得到架构结果的间区别非常微妙也非常关键那么目前SOA实现技术究竟有哪些呢?

  3 SOA实现技术   3.1 实现SOA核心技术 - web 服务

  正如我们前面所讲服务是整个SOA实现核心web服务相关技术自然成为实现SOA首选

  XML

  XML 1.0 (可扩展标记语言Extensible Markup Language) 标准是个基于文本 World Wide Web 组织 (W3C) 规范标准标记语言和 HTML 使用标签来描述外观和数据区别XML 严格地定义了可移植结构化数据它可以作为定义数据描述语言语言如标记语法或词汇、交换格式和通信协议

  SOAP

  简单对象访问协议 (Simple Object Access Protocol) 是个基于XML用于在分布式环境下交换信息轻量级协议SOAP 在请求者和提供者对象的间定义了个通信协议这样在面向对象编程流行环境中该请求对象可以在提供对象上执行远程思路方法SOAP是平台无关和厂商无关标准因此尽管SOA并不必须使用SOAP但在带有单独 IT基础架构合作伙伴的间松耦合互操作中SOAP仍然是支持服务最好思路方法

  W3C SOAP 1.2规范标准在服务请求者和服务提供者的间定义使用XML格式消息进行通信将应用请求(在XML中)放入 SOAP 信封中(也是 XML )并从请求者到提供者发送应用请求提供者发回响应也采用相同形式最近 SOAP 被称为面向服务架构协议 (Services-Oriented Architecture Protocol) SOAP优点在于它完全和厂商无关相对于平台、操作系统、目标模型和编程语言可以独立实现另外传输和语言绑定以及数据编码参数选择都是由实现决定

  WSDL

  Web服务描述语言 WSDL (Web Services Description Language) 是个提供描述服务IDL标准思路方法XML词汇Web 服务描述语言(WSDL)规范标准定义了个 XML词汇表该词汇表依照请求和响应消息在服务请求者和服务提供者的间定义了种契约我们能够将Web服务定义为软件Software这个软件Software通过描述SOAP消息接口 WSDL文档来提供可重用应用功能并使用标准传输协议来进行传递

  WSDL描述包含必要细节,以便服务请求者能够使用特定服务:

  请求消息格式

  响应消息格式

  向何处发送消息

  WSDL 是基于 XML 因此 WSDL 文档是计算机可读(machine-readable)这样开发环境使用WSDL将集成服务流程自动处理到请求者应用例如 WebSphere Studio产生个Java代理对象它能够像本地对象样实现服务但是实际上代理对象仅仅处理请求创建和响应消息解析不管服务是否用Java、C#或者其他语言实现生成Java代理对象都能够从WSDL描述中任何Web服务实际上WSDL不能像编程语言那样描述实现细节

  UDDI

  统描述、发现和集成 (Universal Description, Discovery and Integration) 规范标准提供了组公用 SOAP API使得服务代理得以实现UDDI为发布服务可用性和发现所需服务定义了个标准接口(基于 SOAP 消息)UDDI 实现将发布和发现服务 SOAP 请求解释为用于基本数据存储数据管理功能

  为了发布和发现其他SOA服务UDDI 通过定义标准 SOAP 消息来实现服务注册(Service Registry)注册是种服务代理它是在 UDDI 上需要发现服务请求者和发布服务提供者的间中介旦请求者决定使用特定服务开发者通常借助于开发工具(如Microsoft Visual Studio .NET)并通过创建以发送请求并处理响应方式访问服务代码来绑定服务

  SOA不需要使用UDDI但由于 UDDI 是建立在SOA上来完成自身工作所以UDDI是服务发现个好解决方案

  3.2 SOA 基础架构关键组件 -企业服务总线(Enterprise Service BusESB)   企业服务总线ESB(Enterprise Service Bus)是SOA架构个支柱技术 作为种消息代理架构它提供消息队列系统使用诸如SOAP或JMS (Java Message Service)等标准技术来实现 有人把ESB描述成种开放、基于标准消息机制通过简单标准适配器和接口来完成粗粒度应用(比如服务)和其他组件的间互操作

  ESB主要功能有:通信和消息处理、服务交互和安全性控制、服务质量和服务级别管理、建模、管理和自治、基础架构智能等ESB由中间件技术实现并作为支持 SOA 组基础架构支持异构环境中服务、消息以及基于事件交互并且具有适当服务级别和可管理性

  SOA原则可以描述如下:

  利用显式和实现无关接口来定义服务

  利用强调位置透明性和可互操作性通信协议

  封装可重用业务功能服务定义

  为了实现 SOA应用和基础架构都必须支持 SOA 原则启用 SOA 应用涉及到创建服务接口服务接口可以直接也可以间接地通过使用适配器用于现有或新功能从最基本级别来看启用该基础架构涉及到规划功能来将服务请求路由和传递给正确服务提供者然而基础架构支持在不影响服务客户端情况下由另个服务实现替代原有服务实现也是至关重要这不仅需要根据 SOA 原则指定服务接口而且需要基础架构允许客户端代码以独立于所涉及服务位置和通信协议方式来服务这样服务路由和替代是 ESB 许多功能中部分

  ESB 支持这些服务交互功能并提供集成通信、消息传递以及事件基础架构来支持这些功能因此它将当今正在使用主要企业集成模式组合成个实体ESB 为 SOA 提供和企业需要保持基础架构从而提供合适服务级别和可管理性、以及异构环境中操作图2显示了ESB为SOA提供基础架构:

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  ESB 需要某种形式服务路由目录(service routing directory)来路由服务请求然而SOA 可能还有单独业务服务目录(business service directory)其最基本形式可能是设计时服务目录用于在组织整个开发活动中实现服务重用Web 服务远景在业务服务目录和服务路由目录角色中都放置了个 UDDI 目录因而使得可以动态发现和服务这样目录可以视为 ESB 部分;然而在这样解决方案变得普遍的前业务服务目录可能和 ESB 是分离   Business Service Choreographer 作用是通过若干业务服务来组合业务流程;因此它将通过 ESB 服务然后再次通过 ESB 将业务流程公开为客户端可用其他服务然而Business Service Choreographer 在编排业务流程和服务中所扮演角色确定了这种业务工作流技术是种和基础架构技术 ESB 分离技术

  最后B2B Gateway 组件作用是使两个或多个组织服务在受控且安全方式下对彼此可用这有助于查看这些连接到 ESB 组件但它们并不是 ESB 部分虽然有些网关技术可以提供适合于实现 B2B Gateway 组件和 ESB 功能但是 B2B Gateway 组件用途是将其和 ESB 分离事实上这种用途可能需要附加功能(如合作伙伴关系管理)这些功能不是 ESB 部分并且不定受到 ESB 技术支持

  3.3 实现SOA思路方法学 - 模型驱动开发

  SOA强调松散耦合强调跨平台集成这和模型驱动架构和开发不谋而合模型驱动架构和开发(Model Driven Architecture, MDA以及Model Driven Development, MDD)并没有把业务模型和平台无关模型分开来而是把平台无关模型做为起点

  MDA由提出CORBAOMG模型提出MDA认为架构设计师首先要对待创建系统有个形式化UML模型MDA首先给出个平台无关模型来表示系统功能需求和use s根据系统搭建平台架构设计师可以由这个平台无关模型得到平台相关模型这些平台相关模型足够详细以至于可以用来直接生成需要代码

  基于MDA思想利用MDD方式我们可以对SOA进行建模在此基础上实现各种形式模型转换或扩展实现SOA.

  4 RSA对SOA实现技术支持

  IBM 软件Software开发平台提供了对SOA 应用开发最好支持IBM 软件Software开发平台包含 Rational 产品家族、向导、模板、及构建应用指南Rational 开发工具是基于成功并且非常受欢迎 Eclipse 平台它不仅易用、灵活而且在每个开发进程中都可以使用外部开发环境图3显示了基于 Eclipse IBM Rational 产品体系

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  Rational Software Modeler 提供了使用设计标准(比如统建模语言UML )构建模型能力通过 Rational Software Modeler可以将这些模型转变为类和源代码有关Web 服务开发Rational Web Developer for WebSphere Software Version 6.0 提供了种端对端环境利用它不仅可以完成开发和测试还可以通过 WebSphere Application Server 产品完成 Web 服务部署   Rational Software Architect, RSA涵盖了RAD以及RSM全部功能提供了对基于模型开发以及web应用开发最好支持

  4.1 对web服务开发支持

  RSA中包含了构建 Web 服务专门工具可以通过自顶向下自底向上为web服务建模等区别角度进行web服务开发提供了代码编写和完成应用开发环境还可以使用些额外工具(比如 IBM Rational Functional Tester)对应用进行测试然后把它部署到 WebSphere 服务器平台中

  首先RSA提供了XML编辑器可以对XML进行图形化显示和编辑图4显示了对XML图形编辑界面及其对应源代码

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  另外在RSA中可以创建web service及其相关多种资源如图5所示

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  当我们想将现有资源如Java Bean或者EJB作为web服务进行发布时RSA中提供相应支持如图6所示:

   基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  相反如果我们想生成已有WSDL对应web服务实现代码也可以使用RSA中相应工具如图7所示:

   基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

   RSA中提供了Web服务浏览器使得发现web服务变得更容易同时RSA提供了图形界面对web服务WSDL进行显示和编辑见图8:

   基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  由于RSA提供了对UML2.0支持我们同样可以根据对web服务建模通过模型转换来生成相应web服务WSDL如图9所示:

   基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  RSA贯穿整个应用开发生命周期使得应用设计更加轻松致地将 SOA 应用组件捆绑在   RSA内嵌了WebSphere Application Server 6.0运行环境WAS 6.0中SI-BUS实现了ESB因此我们可以用RSA进行SOA、ESB部署和测试如图10所示可以在RSA上创建WAS 6.0服务例子并在此服务上部署ESB

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  4.2 基于模型开发和软件Software资产重用   除了对web服务开发支持RSA还提供对UML2.0规范标准以及可重用资产规范标准(Reusable As Specication, RAS )支持这就使得基于模型开发(Model Based Development, MDA) 和基于资产开发(As Based Development, ABD)成为RSA最有优势两大特征这里我们只作简单介绍

  4.2.1 支持UML2.0MDA平台

  UML是实现MDA技术把钥匙它使得用MDA技术创建所有应用都基于标准化、平台独立UML模型通过将这通用、被普遍接受建模标准作为杠杆MDA使得开发人员可以创建能被轻便地访问、天生具有良好互操作性应用我们在前面提到利用RSA可以对web服务建模通过模型转换生成web服务

  基于Eclipse平台RSA提供各种模式(Pattern)模板(Template)插件开发通过这些高可重用度模式及模板用户只需要简单参数配置就可以得到相应模型代码及其他资源图11显示了应用RSA模式生成新模型再基于新模型生成可部署项目及代码



  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  4.2.2 Recipe - 基于资产开发(As Based Development)

  RSA中解决方案指导(Solution Guide)插件基于可重用资产规范标准对资产创建打包发布到重用提供了全方位支持可以将各种模式模型及其他可重用资源作为资产导出存入本地或远程资产库以便重用及共享资产在资产库中按照思路方法进行分类在RSA中使用资产库浏览器对资产进行查找时目了然图12是在可重用资产视图中浏览资产库

  基于RSA实现面向服务<img src='/icons/93407de.gif' />体系架构

  5 整理总结

  在本文中我们讨论了面向服务体系架构基本概念以及实现技术并列出了IBM Rational产品RSA对实现SOA技术支持在后续文章中我们将对本文中涉及各项具体技术实现细节作详细介绍



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: