王朝网络
分享
 
 
 

Web Service随笔1

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

Web Service随笔。

1 为什么出现Web Service?

现在Internet的发展十分迅速,它从前的框架是“人来获取网络上的资源,比如:程序、文档等”。也就是说,现在的Web是以人为中心的,人来发送各种请求。而它的发展趋势将是主体从“人”转向“程序”,比如媒体播放器、浏览器等,也就是说“以应用程序中心”的Web。其实,在Web Service出现之前,人们就已经在做这方面的事情了,例如Java的Servlet和CGI,但是不同的程序系统采用了不同的数据定义,所以这些系统之间的交互变得异常地复杂。Web Service的出现,就是为了解决了不同应用程序之间通信的格式问题。

2 Web Service的通信方式?

XML通信有几种不同的方法,例如:XML Remote Procedure Calls (XML-RPC),SOAP或HTTP GET/POST。

3 Web Service的属性。

Web Service是在Internet上任何可用的服务,它是通过标准化的XML通信(XML Messaging)来实现的,并且不依赖于任何平台和任何编程语言。

尽管不是必须的,但Web Service可能会有其他两个属性:

A)可自描述的(self-describing).如果你编写Web Service,你应该发布Web Service的公共接口,至少有一个基于自然语言的文档。这样,别的开发者才能轻松地整合你的服务。

B)可发现的(discoverable).其他和你的Web Service有关的程序(可能是分散的,也可能是集中的系统)能够找到它。

4 Web Service 的架构

Web Service有两种架构,一种是讨论Web Service每个功能角色(role),另一种是讨论Web Service的协议层(protocol stack)。

就前者而言,Web Service有三个角色:服务提供者,服务请求者和服务注册机构。服务请求者从服务注册机构获得服务提供者,然后向服务提供者发出提供服务的请求。

就后者而言,Web Service有四层:服务传输层(Service transport)、XML通信层(XML messaging)、服务描述层(Service description)和服务发现层(Service discovery)。

A) 服务传输层:负责信息在应用程序之间的传送。现在包括HTTP、FTP、SMTP和较新的如BEEP等协议。

就现在而言,由于HTTP比较简单、稳定以及被广泛应用,而且大部分防火墙对HTTP协议的80端口是开放的,所以HTTP是服务运输层的最流行的协议。当然它会有一些安全上的隐患,因为HTTP协议的设计并不能满足Web Service的安全性。

SOAP是不依赖于具体协议的,除了HTTP协议,它还可以通过FTP、SMTP等传输,比较有前途的是BEEP(Blocks Extensible Exchange Protocol)协议。BEEP协议属于TCP,它较HTTP的优势在于:除了TCP公共的握手外,它每次所带的报文头只需30个字节。

B) XML通信层:负责用通用的XML格式对信息进行编码。现在包括XML-RPC和 SOAP.

C) 服务描述层:负责用WSDL将公共接口向特定的Web Service描述。

D) 服务发现层:负责将服务集中到公共注册机构,并且提供Web Service发布和寻找功能,现在服务发现是通过UDDI来实现的(Universal Description, Discovery, and Integration

)。

可见,Web Service采用可类似网络分层的结构,使各个层次的功能互补干扰,同时又能很好的互相合作。当然,随着Web Service的不断发展,可能会出现新的层次。

我们可以看一下IBM的演示:

http://awwebx04.alphaworks.ibm.com/ettk/demos/wstkdoc/README.htm

我到微软注册了UDDI:http://uddi.microsoft.com

接下来看一下XML请求

下面是一段JAVA的SOAP调用:

Soap Request:

<?xml version='1.0' encoding='UTF-8'?>

<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/09/soap-envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<ns1:getWeather

xmlns:ns1="urn:examples:weatherservice"

SOAP-ENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding/">

<zipcode xsi:type="xsd:string">10016</zipcode>

</ns1:getWeather>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

SOAP Response:

<?xml version='1.0' encoding='UTF-8'?>

<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/09/soap-envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<ns1:getWeatherResponse

xmlns:ns1="urn:examples:weatherservice"

SOAP-ENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding/">

<return xsi:type="xsd:int">65</return>

</ns1:getWeatherResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

而下面是.Net调用的SOAP

Soap Request:

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<Add xmlns="http://tempuri.org/">

<a>24</a>

<b>12</b>

</Add>

</soap:Body>

</soap:Envelope>

SOAP Response:

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<AddResponse xmlns="http://tempuri.org/">

<AddResult>36</AddResult>

</AddResponse>

</soap:Body>

</soap:Envelope>

可以看出Xml通信的确是与平台、语言无关的一种方式。

WSDL:我认为说白了,就是一个应用程序的一个公共接口,回想我们调用一个Web Service的时候,我们事先知道它的方法、参数和返回值,但是具体如何实现,我们并不关心,这不就是我们通常所说的接口吗?

所以WSDL就是一种XML格式的Web Service提供的公共接口。

UDDI:

UDDI的数据有三种:

A) 白页。公司的基本信息

B) 黄页。服务的基本信息

C) 绿页。服务的技术信息,调用服务的地址。

4 什么是SOAP?

用W3C的话说,它什么也不是。它并没有被W3C正式承认。甚至连SOAP 1.1也只是Note的地位,意思是现在它在被W3C成员讨论。

SOAP原意是简单对象进入协议(Simple Object Access Protocol),但是W3C对这个名字不太满意,因为这个解释没有表达清楚,但他们又不想换个名字,因为SOAP已经被开发者们熟悉并使用。所以,出现了奇怪的现象,SOAP的名字保留了,但是它并不代表任何东西。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有