web service 结构(摘)

来源:互联网 发布:python微信抢红包 编辑:程序博客网 时间:2024/05/17 03:09

今天,看java web service,发现书中例子很形象,拿出来大家分享。

我们来举一个简单的例子,大家都知道中国人懂日文的比较少,而日本人懂中文的也比较少,假设现在日本人开了个日本面馆,提供各种面例如炸酱面,石锅面等等,而且他想提供服务给全球各地的客户,让他们都能看懂提供的服务,并自己点面。那么是否这个日本人就需要学习全球各地的语言,然后挂上50 种语言的面单,之后接待50 种不同语言的人呢?其实不用那么复杂,大家只需要妥协一下,都采用中间语言:英语来交流就行了。提供的菜单使用英文,而大家点面也使用英文,服务员通告服务结果也用英文,这样这个矛盾就解决了。当然来吃饭的客户私下里如何评价面,或者如何称呼面,而日本服务员是否需要用英文来通知厨房师傅来做饭,这都不是大家所关心的问题,大家所关心的就是:看菜单,点面,吃到面,这样一个结果而已。此过程如图15.1 所示。再此过程中,英语就扮演了一个中间交互层标注协议的角色,双方都遵守它,就可以实现国际化的互联互通的服务。


在下图中,列出了Web Service 的几个关键部分。包括:
? 简单对象访问协议(SOAP,Simple Object Access Protocol)
? Web 服务描述语言(WSDL,Web Service Definition Language)
? 统一描述、发现和集成(UDDI,Universal Description, Discovery, and Integration)


现在,让我们把它和图的就餐过程进行类比。假设我们在路上饥肠辘辘,忽然,眼前一亮,前面出现一指示牌:前方500 米处有就餐服务,详情请去店内咨询。这是什么?这就是UDDI,它告诉您在什么位置有什么样的Web 服务,但是很显然服务的细节是不会贴在指示牌上的,需要你亲自去店内查看。到了店内,您最关心的内容就是菜单,也就是WSDL,它会描述每种菜的特点和定价,您根据自己的情况,来选择打算吃那种菜(当然,这里是国际标准的菜单描述格式)。然后,您用英文,一种大家都听得懂的语言,来向服务员表明您的希望,当然,内容必须是和菜单有关的内容,您不能向服务员说:请问一只轮胎多少钱?这就是SOAP 所做的事,您必须用XML 协议来表达您在WSDL 上看到的服务项目。服务员听到后,翻译成自己能理解的内容后根据实际情况作出反应:很好,某某菜一会就做好;或者不幸的是:对不起,这道菜原料用完了,请换一道。同样,它也用SOAP 向您返回结果。这就是Web 服务的过程,不过在计算机的世界里,客户端成了某电脑上的程序(可以用各种语言开发),服务器端则是某台运行HTTP 并支持Web Service 服务的服务器程序。因此,问题也潜在存在,那些无法写上菜单的服务项,是无法通过这种途径来传播的,换句话说Web 服务只能在一定范围内实现互联互通,所以它无法取代现有的其它沟通途径,例如QQ 和MSN。最后,UDDI 的出发点很好,不过在企业内部,因为WSDL 唾手可得,所以没有人愿意再去公司大院里竖起一块牌子列出本公司都有哪些Web 服务,所以UDDI 在企业内部使用时,是几乎用不到的。