了解 Web 服务规范_第 6 部分:WS-I 证书
了解 Web 服务规范_第 6 部分:WS-I 证书现在程序员都在构建彼此进行通信的软件程序。每种程序语言现在都提供」能方便地以可预测方式进行网络编程的软件库不仅存在用于将字位从一台计算机发送到另一台计算机的底层工具,而且也有提供一组公用规则的高级协议(如HTTP),可支持两个程序进行通信(即使由不同的人员独立枃建,且部署在不同的计算机和系统软件上也能如此)。例如,想象下当您单击Web浏览器中的链接并加载之前从来没有看到的网页时,将发生什么操作。通过采用一些标准(HTTP、HTML、TCP/IP),您的Web浏览器能够调用其他计算机系统、获取网页并将其向您呈现。这种类型的非固定的动态软件网络非常强大。Web服务就是将此强人的功能向复杂企业系统的开发人员扩展的个尝试回页首了解复杂性和挑战正如Ⅶ icrosoftb Internet Explorer和 Mozilla firefox解释某些网页存在差异一样,在Web服务程序如何解释彼此交换的SOAP消息之间也存在差异。正如您可能想到的,这些差异可能会导致非常严重的问题,很难解决。最好的Web设讣人员会花大量的时间和精力来了解其设计如何在不同的浏览器上工作,会像疯子一样进行大量测试,以确保其HTML、CSS和 Javascript在每个浏览器上都正常工作。虽然存在规定ⅢTⅦ、CSS和 Javascript格式的标准和规范,但这些规范并不能避免错误和模糊不清的地方。结果将导致以不同的方式解释这些规范,浏览器并不全都按照相同的方式操作。对于定义各种Web服务技术(如SOAP、WSD、UDDⅠ、XML模式和ⅢIP)的规范也是如此。尽管Web服务最初追求的是简单性,但止如本系列教程中所述,今大构建Web服务需要具有专门技术和耐心。现在如果要构建Web服务,您需要具有很好的编程背景,至少熟悉一种编程语言和环境。需要熟悉计算机网终和一系列目前Web服务中使用的标准技术(如ⅫⅦ、SOAP、WSDL或XML模式)。您还需要了解一大堆使用这些技术所需的实践技巧等等假如您完成了这个冗长的培训练习(可以将其称为职业经力),并尝试使用Web服务将您的软件连接到另一个软件,却发现无法正常工作。这会让人感觉到非常沮丧,而且这种情况会经常发生(通常在开发计划吋间安排非常紧时出现)回页首遵循最佳实践和规程要求为了帮助对这些问题进行归类和解决,工程师团队Web服务互操作性组织(WebServices interoperability Organization,W-I)给出了针对Web服务开发人员的一组建议,通过遵循这些建议,就能帮助获得能良好协作的Web服务和Web服务使用者。这组建议称为WS- I Basic profile。如果您是Web服务开发人员,就应该熟悉此概要的内容。了解Web服务互操作性问题并主动进行恰当的服务设计来避免这些问题,这已经成为了Web服务开发人员的一项重要职责就像通过设计实现跨浏览器兼容性已成为了Web设计人员一项重要职责一样。并没有能够消除所冇互操作性问题的万能方法。异类环境中的分冇式计算是一项非常复杂的活动,肯定会出现互操作性问题。不过,通过使用规程并遵循WS-IBasic profile中描述的最佳实践,其中的大部分问题都可以避免。回页首继续日前已完成的工作本系列教程逐步说明了虚构的 Dailv moon报社的员工将其日常操作更改为基于Web服务的系统的过程。在第1部分中, Classifieds depar tment通过与内容管理系统交互了解了SOAP的相关信息,在第2部分中,他们创建了自己的服务,并使用Web服务描述语言(WSDL)对其进行描述。然后,在第3部分,他们了解了如何与UDDI注册中心交互,并了解了如何在其中査找数据,而这最终使他们为自己的公司创建了一个注册中心,以支持其他组织与 Daily moon进行交互。在第4部分中,由于Rudy坚持要求他的同事Gene和 Francis提供防止系统非授权访问的方法,因此Gene和 francis必须为其web服务实现WS- Security。在第5部分,Rudy认识到需要为Web服务定义策略,以强制访问Bi/ y Moon Web服务的客户机照预先确定的方式进行访问,确保本系列的第4部分中的安全性包含到其中。现在我们将继续 ailv Moon的工作,本教程将描述报社员工在准备将其Classifieds web服务向公众公开的过程中所遇到的各种情况。Phi1负责处理此次发布,他希望确保WSDL文档及其描述的服务对于希望使用此服务来将分类广告(和收益)发送到 Dai/v Moon的人具有尽可能高的可访问性,且尽可能少出错。Phil过去曾使用过其他web服务,对互操作性问题的严重性有着很清楚的认识。互操作性概述此部分描述用于了解互操作性问题的计划、如何测试以及一些关于Web服务的术语了解问题第一个挑戕是了解互操作性问题及其在Web服务中的重要性。Web服务现在使用相关技术和标准的复杂组合构建,而这正是很多互操作性问题的源头。本教程将讨论最常见的问题及其成因本教程将随后讨论Ws- I Basic profile,说明其目标、语言及其详细介绍的很多可互操作Web服务的具体要求。回页首测试接下来,我们将和Phi1一起检查 Daily Moon classifieds和 Banking Web服务,确定可能的互操作性问题。WS-Ⅰ组织提供了一系列洌试工具,可用于评估服务的互操作性。本教程将说明这些工具如何工作以及其如何支持采用测试驱动的方法构建Web服务回页首了解术语讨论Web服务时,最好从提供者和使用者的角度进行描述。以下是这两个术语的常见定义使用者:使用者负责发出对提供者实现的服务的请求。提供者:提供者负责侦听和处理使用者服务请求了解互操作性及其重要性在此部分,本教程将详细说明互操作性冋题,并说明互操作性问题的根源。我们将介绍可互操作Web服务的情况以及为何尝试获得最大互操作性非常重要了解关于消息传递与互操作性的信息我们己绎了解了,Web服务基于发送到Web服务提供者及从其发出的XML消息。另外还了解了这些消息具有一个简单的结构:信封、 Header和有效负载。在实践中,此类消息中包含的内容要多得多,经常出现这样的情况:一个程序生成SOAP消息并发送刭力一个程序,而这个消息却令后者非常费解。程序间的这种不一致是大多数互操作性问题的根源。即使之前已绎构建过 SOAP Web服务,您仍然可能从来没有阅读过S0AP和WSDL规范。可以使用很多工具来使用或构建Web服务,从而没有必要详细了解s0AP和wSDL。可以通过将WsDL文档提供给代码生成器(如Axis2提供的代码生成器)来生成Web服务使用者和代码框架一一这就帮您完成了全部繁重的工作。有时候此流程非常有效,但这些工具经常不能生成可用程序,或者即使成功∫,却得到的是不能很好地与其他程序协作的存根和代码框架在有些动态编程语言(如 Python)中提供了动态解释WSDL文档的库,可以按需构建服务存根,从而能更为方便地使用SOAP,而不必深究SOAP规范。这是理想的方式,但并非总能实现回页首避免含混不清的规范技术规范通常都很清晰明确。此类规范需要清晣,读者才能理解其讨论的具体内容。不过,尽管进行了最大的努力,S0AP和WsυL规范中仍然包含一些略微混淆不清的示例和语言,迫使开发人员不得不在发现文字说明不清楚的地方尽可能自行进行判断和解释。由于软件实现所生成和预期的消息格式不同,因此会导致严重的互操作性问题。这些互操作性问题影响了SOAP和Web服务帮助程序彼此进行通信的初衷。回页首解决描述模糊的问题SOAP是简单对象访问协议( Simple ob ject Access Protocol)的首字母缩写此协议从第一个规范版本发布以后就存在争议,因为大部分人认为理解和使用此协议并不容易。除了模糊问题和错误外,就Web服务中实现互操作性而言,SOAP规范还很复杂,而且范围非常宽泛。例如,SOAP提供两种不同的服务类型(RPC和 Document)和两种使用或编码类型( Literal和 Encoded)。服务和编码样式的选择对Web服务能理解的消息格式有直接影响。可以对服务和编码样式进行混合使用,从而有以下这些可能组合RPC/Literal●RPC/ EncodedDocument/LiteralDocument/Encoded此外, Document样式的消息可以使用称为 rapped的模式,这也对所得到的消息主体有影响。对软件开发人员而言,有选择固然好,但决定使用哪个模式并不简单。关于五个可用选项间的选择有大量的讨论和混淆。WS- I Basic profile给出了可能组合列表,并通过建议不使用 Encoded消息样式将此表有效地缩小了半“本概要禁止使用编码,包括SOAP编码。R2706 DESCRIPTI0N中的wsdl: binding一定要使用值“ literal”才能在所有soapbind: body, soapbind: fault, soapbind: header Fu soapbind: headerfault元素中使用此属性。”之所以去掉编码选项,是因为这是导致互操作性问题的一个常见原因:将其去掉可帮助缩小web服务软件必须处理的消息格式的范围,而这肯定能够帮助简化和增强互操作忙。回页首使用可互操作的SOAP近年来, SOAP Web服务受到」一些批评。使用SOAP及相关系列技术的开发人员不得不认同这是一项复杂的技术,而且互操作性挑战尤为麻烦。SOAP无疑很强大,但简单却谈不上。事实上,从S0AP规范1.2版本(06/2003)以来,由于很多人抱恕这个缩写词并不准确,因此其正式称呼已不再是SOP了。目前,还冇与S0AP竞争的其他Web服务类型。最值得注意的是源自代表性状态传输( Representational State transfer,RFST)的Web服务。REST是种体系结构风格,而不是特定的技术或正式标准。 RESTful web服务顾名思义并不共享公共消息格式。其格式完全取决于服务设计人员。因此,从设计上而言,RESTful服务也会面临与SOAP相同的互操作性问题。但仍然有很多用户发现RESTful服务的构建和使用更为简单。目前,很多组织都同时部署了这两种类型的Web服务,包括amazon.com、cbay.com和google.com。甚至Axis2都包括了对 RESTful Web服务的支持。这两科方法都具有各自的优点,将会在今后共存一段时间SOAP的公共消息格式是其最重要的功能。当一切都按照预期的方式工作时,就很容易实现SOAP的承诺,从而也很容易理解为什么持续进行了这么多工作来通过SoAP实现可互操作Web服务。现在只需要稍加小心并进行适当的计划,就可以避免对纠缠早期 SOAP Web服务实现的常见互操作性问题。接下来我们将讨论一下WS- I Basic profile。WS- I Basic profile简介Web服务互操作性组织(简称Ws-I)是一个行业组织,其成员包括IBM、Microsoft、 Intels、 Oracle、SAP、 Hitachi和很多其他领先企业。WS-Ⅰ的目标是“跨平台、操作系统和编程语言”努力实现Web服务互操作性。WS-Ⅰ是向Web服务开发人员提供建议的专家组,可帮助开发人员获得可互操作的Web服务软件。W-I最著名的是“ Basic profile”,其中包括一系列旨在避免互操作性问题的实现指导方针。这些指导方针实际上是一组宝贵的最佳实践。针对其受众尽管Ws- I Basic profile比SOAP和WSD规范更为简洁,但仍然较为难懂。以下是一小段摘自 Basic profile的文本,可让您对今天的Web服务如何复杂有所了解:WSDL1.1对哪个模式目标名称空间适合于WSDL元素的 QName引用不明确本概要同时允许wSDL元素的 Qname引用指向xsd: schema元素定乂的目标名称空间和导入的名称空间。不允许使用对仅通过嵌套 import定义的名称空间的QName引用。”Basic profile的大部分内容都比上述段落易懂,但务必要记住,这是一个涵盖200多个常见互操作性问题的技术规范,其中一些问题是由于其他技术规范中说明不清楚导致的。SOAP、WSDL和WS- i Basic profile之类的规范主要是针对工具开发人员编写的,如 apache中编写Axis2的人员。对于构建Web服务的开发人员, BasicProfile的大部分内容对其工作方式都没有直接影响,但了解 Basic profile中的内容也将对他们有所帮助。其中有些部分您可能会希望详细加以了解。例如Basic profile包含相当多关于WsDL文档预期情况的信息。回页首了解Ws- I Basic Profile的目标Basic profile提供了一组指导原駟,可帮助说明其目标。我们下面将给出这些原则(并进行了注解)。通过清单1可了解 Basic profile的范围和基调。清单1.WS-I指导原则No guarantee ofinteroperabilityIt is impossibleto completelyguarantee theinteroperabilityof a particularservice. Howeverthe profile doesaddress the mostcommon problemsthatimplementationexperience hasrevealed todateRestriction vsrelaxation. Whenamplifying therequirements ofreferencedspecificationsthe Profile mayrestrict them. butdoes not relaxem(for example,change a must to aMAYBasic profile将其他规范中的松散项祭密结合在起,但不再对其进行松散化处理。清单2是 Basic profile的将各大规范紧结合的理念(如上面在 Literal和 Encoded示例中所示)的另个示例。清单2.更多W-Ⅰ指导原则Multiplemechani smsareferencedSpecilicaLlonlallows multiplemechanisms to beusedinterchangeablthe profileselects those thatdrewell-understoodwidelimplemented, andusefulExtraneous orunderspecifiedmechanisms andeⅹ tensionsintroducecomplexity andtherefore reduceinteroperability.清单3中的其他原则也值得一读,因为它们可帮助确定W-I的基调,应该能让您对 Basic profile的范围和价值有一定的认识。清单3.更多W-I指导原则Futurecompatibility.When possible, thProfile aligns itsrequirementswith in-progressrevisions to thespecifications itreferences. Thisaldsimplementers benabling agracefultransition andassures that WS-Idoes notfork’ from theseefforts. When theProfile cannotaddress an issuespecification 1treferences. thisinformation iscommunicated tothe appropriatebody to assure itsconsiderationCompatibilitywith deployedservice sBackwardscompatibilitywithdeployed Webservices is not agoal for theProfile. but dueconsideration isgiven to it, theProfile does notintroduce a change
暂无评论