SOA和SOAP是什么?SOA到底是什么?SOA(Service-Oriented Architecture)被定义为面向服务的体系结构,也就是说,软件根据其功效被设计成服务,这些服务以规模的方式定义接口,并通过规模协议挪用接口。SOA定义的接口和挪用方式独立于编程语言和运行平台。广义来说,SOA可以基于不同的底层技术来实现,比如CORBA和Web Services。
但是CORBA因为太大太臃肿很少使用,所以现在的SOA大部分都是基于Web Services技术的。在Web Services的实现下,SOA服务的接口是用XML定义的。在SOA架构下,软件开发从业务流程分析开始,使用组件业务建模的方法来识别和分析各种业务模型,并将各种实践集成到其中。在此基础上构建用例,用例直接产生BPEL,可以集成到一个服务集成框架中,展现各种服务的信息,从而统一ESB上的各种模块,形成一个巨大的服务仓库。
中间层将再次分离,在中间层制作一个跨技术架构的元数据和业务逻辑,使其成为一个企业业务库,成为跨技术架构可以不断积累的最有价值的信息资产,即面向服务的构件库,这个服务构件库也可以被其他企业重用,而不依赖于任何技术架构。夸张的说,如果所有的软件企业都使用SOA架构,世界软件业将发生彻底的变化。显然,这样的框架不是产品,也不仅仅是技术,而是解决问题的方法论。
SOA可能应用于两种场景:第一种是业务互操作性;二是关闭业务系统,即将元数据和业务逻辑分离,形成可重用的。比如第一种场景,当不同企业之间的业务需要互相挪用时,就有可能接受SOA技术;在第二种场景中,当系统需要在企业内部迁移时,可以快速完成SOA技术定义的原始数据和业务流程。SOA不是一个新事物。多年来,信息技术组织一直乐于构建和实现SOA应用软件。
BEA、IBM等厂商看到了它的价值,跟进了。SOA的目的是让IT更加灵活,从而更快地响应业务单元的需求,实现实时企业,这是Gartner对SOA的愿景。
东亚银行首席信息官朗达早在2001年6月就提出要将东亚银行的IT基础设施改造成SOA,并在控制整个企业架构、提高开发效率、加快开发速度、减少定制和人员技术投入等方面取得了良好的效果。SOA是设计、开发、应用和管理计算条件下的疏散逻辑(服务)单元的规范。这个定义决定了SOA的普适性。
SOA要求开发人员从服务集成的角度来设计应用软件,即使这样做的好处不会马上显现。SOA要求开发人员超越应用软件的思维,考虑重用现有的服务,或者检查如何使服务被重用。
SOA鼓励使用替代技术和方法(例如,消息机制)通过将服务链接在一起来构建应用程序,而不是编写新代码。经过适当的架构后,这种消息机制的应用允许公司仅通过调整原始服务模式,而不是被迫进行大规模的新应用代码开发,就可以在业务条件允许的时间内快速响应不断变化的市场条件。SOA不仅仅是一种开发方法——它还包括治理。
比如应用了SOA后,管理员可以方便地管理这些构建在服务平台上的企业应用,而不是管理单一的应用模块。其原理是,通过分析服务之间的相互挪用,SOA使得公司治理人员可以很容易地获得何时、为何以及执行哪个业务逻辑的数据信息,从而补贴公司治理人员或应用架构师迭代优化他们的业务流程和应用系统。
SOA的中心思想之一是使企业应用程序脱离面向技术的解决方案的束缚,轻松满足企业业务服务的变化和增长的需求。在企业环境中,单一的应用程序方法无法满足业务用户的(各种)需求。
即使是大规模的ERP解决方案,也仍然无法满足这种需求不断扩大和变化的缺口,快速反映市场。业务用户只能通过不断开发新的应用方法和扩展现有的应用方法来支持自己现有的业务需求。通过专注于服务,法语应用程序可以专注于提供更丰富、更有目的的业务流程。因此,基于SOA的企业应用系统往往越来越真实地反映出与业务模型的结合。
服务从业务流程的角度看待技术——从上到下。这种观点与可用技术驱动的一般商业观点相反。
服务的优势是显而易见的:它们与业务流程相结合,因此它们可以更准确地表示业务模型,更好地支持业务流程。相反,我们可以看到,以应用风格为中心的企业应用模型,迫使业务用户把自己的能力限制在应用法语的能力上。企业流程是流经企业框架的空气,赋予业务模型中的组件生命,更清晰地定义它们之间的关系。流程工业已经说过一种与业务模型互操作的特殊方法。
例如,会计可能是企业服务系统的一个组成部分,但向客户发送发票是一个业务流程。服务是为了支持业务流程而定义的,所以贯穿整个流程的永远是流程中各种服务组件的组装操作和逻辑实现过程。
理解业务流程是定制服务的关键。传统的应用集成方法(点对点集成、企业消息总线或中间件(EAI)集成、基于业务流程的集成)庞大、昂贵、不灵活。这些集成方法很难快速适应基于企业的现代业务不断变化的需求。
基于面向服务架构的应用开发和集成可以很好地解决其中的许多问题。SOA提供了一个完美的开发模型来支持客户端应用程序连接到服务。
这些模型为外观服务、通知和发现服务定制了一系列机制、与服务举行通信。差别于传统的应用集成方法,在 SOA 中,围绕服务的所有模式都是以基于尺度的技术实现的。大部门的通信中间件系统,如 RPC、CORBA、DCOM、EJB 和 RMI,也同样如此。
可是它们的实现都不是很完美的,在权衡交互性以及尺度定制的可接受性方面总是存在问题。SOA 试图清除这些缺陷。因为险些所有的通信中间件系统都有牢固的处置惩罚模式,如RPC 的功效、CORBA 的工具等等。然而,服务既可以界说为功效,又可同时对外界说为工具、应用等等。
这使得 SOA 可适应于任何现有系统,并使得系统在集成时不必刻意遵循任何特殊定制。SOA 资助企业信息系统迁移到"leave-and-layer"架构之上,这意味着在不用对现有的企业系统做修改的前提下,系统可对外提供 Web 服务接口,这是因为它们已经被可以提供 Web 服务接口的应用层做了一层封装,所以在不用修改现有系统架构的情况下,SOA 可以将系统和应用迅速转换为服务。SOA 不仅笼罩来自于打包应用、定制应用和遗留系统中的信息,而且还笼罩来自于如宁静、内容治理、搜索等 IT 架构中的功效和数据。
因为基于 SOA 的应用能很容易地从这些基础服务架构中添加功效,所以基于SOA的应用能更快地应对市场变化,为使企业业务部门设计开发出新的功效应用。Soap是什么?SOAP 是Simple Object Access Protocol(简朴工具会见协议)的缩写。SOAP是一个用于漫衍式情况的、轻量级的、基于XML举行信息交流的通信协议.对于Soap的明白: 第一步明白:SOAP=HTTP+XML第二步明白:SOAP把XML的使用代码化为请求和响应参数编码模式,并用HTTP作传输。
SOAP是把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一起。第三步明白:详细地讲,一个SOAP实现可以简朴地看作遵循SOAP编码规则的HTTP请求和响应。注意:SOAP 是一个协议,与编程语言无关。
实际上,许多语言已经开始支持 SOAP,如:Java,C,C++以及JavaScript。Soap的起源?Soap解决的问题? SOAP最初由微软提倡研究,用以解决MTS/COM资源消耗大,不够轻巧等问题,后逐渐被IBM等巨头接纳并加入研究,现已提交W3C,成为Web Service应用传输尺度。SOAP技术主要用于实现大量异构法式宁静台之间的互操作性,从而使存在的应用能够被广泛的用户所会见。
SOAP意思是简朴工具会见协议(Simple Object Access Protocol)。简直如它的名字一样,SOAP是很简朴的。它是一个基于XML的协议,允许法式组件和应用法式相互使用一种尺度的Internet协 议--HTTP来通讯。SOAP是一种独立的平台,它不依赖法式语言,它是简朴的,弹性的,很容易扩展的。
现在,应用法式能够相互使用一种基于DCOM和 CORBA技术的远程历程挪用(RPC)来举行相互通讯,但HTTP不被设计为这个目的。RPC在Internet上应用是很是难题的,它们会泛起许多兼 容性和宁静性的问题,因为防火墙和署理服务器通常都市阻断(block)这些类型的流量。应用法式之间最好的通讯方式是通过HTTP协议,因为HTTP是 支持所有Internet浏览器和服务器的。
基于这个目的,SOAP协议被建立出来。SOAP(Simple Object Access Protocol )简朴工具会见协议是在疏散或漫衍式的情况中交流信息的简朴的协议,是一个基于XML的协议,它包罗四个部门:SOAP封装(envelop),封装界说 了一个形貌消息中的内容是什么,是谁发送的,谁应当接受并处置惩罚它以及如那边理它们的框架;SOAP编码规则(encoding rules),用于表现应用法式需要使用的数据类型的实例; SOAP RPC表现(RPC representation),表现远程历程挪用和应答的协定;SOAP绑定(binding),使用底层协议交流信息。虽然这四个部门都作为SOAP的一部门,作为一个整体界说的,但他们在功效上是相交的、相互独立的。
特此外,信封和编码规则是被界说在差别的XML命名空间(namespace)中,这样使得界说越发简朴。什么是CXF? Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。
CXF 继续了 Celtix 和 XFire 两大开源项目的英华,提供了对 JAX-WS 全面的支持,而且提供了多种 Binding 、DataBinding、Transport 以及种种 Format 的支持,而且可以凭据实际项目的需要,接纳代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的公布和使用。现在它仍只是 Apache 的一个孵化项目。Apache CXF 是一个开源的 Services 框架,CXF 资助您使用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS。
这些 Services 可以支持多种协议,好比:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,而且可以在多种传输协议上运行,好比:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的建立,同时它继续了 XFire 传统,一样可以天然地和 Spring 举行无缝集成。CXF 包罗了大量的功效特性,可是主要集中在以下几个方面: 支持 Web Services 尺度:CXF 支持多种 Web Services 尺度,包罗 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。Frontends:CXF 支持多种“Frontend”编程模型,CXF 实现了 JAX-WS API (遵循 JAX-WS 2.0 TCK 版本),它也包罗一个“simple frontend”允许客户端和 EndPoint 的建立,而不需要 Annotation 注解。
CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。容易 使用: CXF 设计得越发直观与容易使用。有大量简朴的 API 用来快速地构建代码优先的 Services,种种 Maven 的插件也使集成越发容易,支持 JAX-WS API ,支持 Spring 2.0 越发简化的 XML 设置方式,等等。
支持二进制和遗留协议:CXF 的设计是一种可插拨的架构,既可以支持 XML ,也可以支持非 XML 的类型绑定,好比:JSON 和 CORBA。我们来使用cxf建立一个简朴的webservice吧。
首先cxf 所需要的包:更具网站说明以下的包都是必须的,可是在我的实际项目中红色部门的包并没有用到。大家可更具自己需求来添加适应的包。
cxf.jar commons-logging.jar geronimo-activation.jar (Or the Sun equivalent)// geronimo-annotation.jar (Or the Sun equivalent)// geronimo-javamail.jar (Or the Sun equivalent)// neethi.jar jaxb-api.jar jaxb-impl.jar stax-api.jar// XmlSchema.jar wstx-asl.jar xml-resolver.jar漫衍式应用法式和浏览器 研究一下当前的应用法式开发,你会发现一个绝对的倾向:人们开始偏爱基于浏览器的瘦客户应用法式。这固然不是因为瘦客户能够提供更好的用户界面,而是因为 它能够制止花在桌面应用法式公布上的高成本。公布桌面应用法式成本很高,一半是因为应用法式安装和设置的问题,另一半是因为客户和服务器之间通信的问题。
传统的Windows富客户应用法式使用DCOM来与服务器举行通信和挪用远程工具。设置好DCOM使其在一个大型的网络中正常事情将是一个极富挑战性的 事情,同时也是许多IT工程师的噩梦。事实上,许多IT工程师宁愿忍受浏览器所带来的功效限制,也不愿在局域网上去运行一个DCOM。
在我看来,效果就是 一个公布容易,但开举事度大而且用户界面极其受限的应用法式。极端的说,就是你花了更多的资金和时间,却开发出从用户看来功效更弱的应用法式。不信?问问 你的会计师对新的基于浏览器的会计软件有什么想法:绝大多数商用法式用户希望使用越发友好的Windows用户界面。
关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机械都在使用HTTP协议。
同时,当前许多防火墙也设置为只允许HTTP毗连。许多商用法式还面临另一个问题,那就是与其他法式的互操作性。
如果所有的应用法式都是使用COM或.NET语言写的,而且都运行在Windows平台上, 那就天下太平了。然而,事实上大多数商业数据仍然在大型主机上以非关系文件(VSAM)的形式存放,并由COBOL语言编写的大型机法式会见。而且,现在 另有许多商用法式继续在使用C++、Java、Visual Basic和其他种种各样的语言编写。
现在,除了最简朴的法式之外,所有的应用法式都需要与运行在其他异构平台上的应用法式集成并举行数据交流。这样的任 务通常都是由特殊的方法,如文件传输和分析,消息行列,另有仅适用于某些情况的的API,如IBM的"高级法式到法式交流(APPC)"等来完成的。
在以 前,没有一个应用法式通信尺度,是独立于平台、组建模型和编程语言的。只有通过Web Service,客户端和服务器才气够自由的用HTTP举行通信,岂论两个法式的平台和编程语言是什么。什么是WebService? Web services是建设可互操作的漫衍式应用法式的新平台。作为一个Windows法式员,你可能已经用COM或DCOM建设过基于组件的漫衍式应用法式。
COM是一个很是好的组件技术,可是我们也很容易举出COM并不能满足要求的情况。Web service平台是一套尺度,它界说了应用法式如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service尺度对这些服务举行查询和会见。
Web service平台需要一套协议来实现漫衍式应用法式的建立。任何平台都有它的数据表现方法和类型系统。
要实现互操作性,Web service平台必须提供一套尺度的类型系统,用于相同差别平台、编程语言和组件模型中的差别类型系统。在传统的漫衍式系统中,基于界面 (interface)的平台提供了一些方法来形貌界面、方法和参数(译注:如COM和COBAR中的IDL语言)。同样的,Web service平台也必须提供一种尺度来形貌Web service,让客户可以获得足够的信息来挪用这个Web service。
最后,我们还必须有一种方法来对这个Web service举行远程挪用。这种方法实际是一种远程历程挪用协议(RPC)。为了到达互操作性,这种RPC协议还必须与平台和编程语言无关。
Web Service 是一种新的web应用法式分支,他们是自包罗、自形貌、模块化的应用,可以公布、定位、通过web挪用。Web Service可以执行从简朴的请求到庞大商务处置惩罚的任何功效。一旦部署以后,其他Web Service应用法式可以发现并挪用它部署的服务。Web Service是一种应用法式,它可以使用尺度的互联网协议,像超文本传输协议(HTTP)和XML,将功效纲要性地体现在互联网和企业内部网上。
可将Web服务视作Web上的组件编程。1 历史web广泛用到的技术: ◆TCP/IP:通用网络协议,被种种设备使用 ◆HTML:通用用户界面,可以使用HTML标签显示数据 ◆Java:写一次可以在任何地方运行的通用编程语言 ◆XML :通用数据表达语言,在web上传送机构化数据的容易方法 他们的特点是其开放性,跨平台性,开放性正是Web services的基础。2 Web生长的趋势内容更动态化 ◆带宽Bandwidth更自制,易于获得 ◆存储器Storage更自制,更易获得 ◆普遍式盘算变得越发重要:大量的设备,例如移动电话,页面,电脑,pc,已经在Internet上变得普遍,平台变得更多元化,象XML这样的跨平台技术变得更重要3 Web Services饰演什么角色?上述的这些趋势意味着,越发智能的处置惩罚,操作和汇总内容变得十分重要。
让我们看看根据Web services角度所预示的四个趋势: ◆内容越发动态:一个web service必须能合并从多个差别源来的内容,可以包罗股票,天气,新闻等,在传统情况中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来 ◆带宽越发自制:web services可以分发种种类型的内容(音频,视频流等) ◆存储更自制: web services必须能智慧地处置惩罚大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力 ◆普遍式盘算更重要:web services不能要求客户使用某一版本的windows的传统浏览器,必须支持种种设备,平台,浏览器类型,种种内容类型。4 两种重要技术要到达这样的目的,Web services要使用两种技术: ◆XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分利便的处置惩罚数据,它的内容与表现的分散十分理想 ◆SOAP SOAP使用XML消息挪用远程方法,这样web services可以通过HTTP协议的post和get方法与远程机械交互,而且,SOAP越发结实和灵活易用。其他象UDDI和WSDL技术与XML和SOAP技术精密联合用于服务发现。组成Web service平台的这三个技术。
XML和XSD可扩展的标志语言(XML)是Web service平台中表现数据的基本花样。除了易于建设和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发现的技术的。
XML解决了数据表现的问题,但它没有界说一套尺度的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,还是 64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套尺度。
它界说了一套尺度的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。
当你用某种语言(如VB.NET或C#)来结构一个Web service时,为了切合Web service尺度,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会凭据你的需要修改一下转换 历程。WSDL你会怎样向别人先容你的Web service有什么功效,以及每个函数挪用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。
这些非正式的方法至少都有一个严重的问题:当法式员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何资助,因为这些工具基础就不相识你的Web service。解决方法是:用机械能阅读的方式提供一个正式的形貌文档。Web service形貌语言(WSDL)就是这样一个基于XML的语言,用于形貌Web service及其函数、参数和返回值。
因为是基于XML的,所以WSDL既是机械可阅读的,又是人可阅读的,这将是一个很大的利益。一些最新的开发工具 既能凭据你的Web service生成WSDL文档,又能导入WSDL文档,生成挪用相应Web service的代码。
本文来源:太阳成集团tyc33455cc-www.xinyihaibo.com