1. 什么是Web Service ?
Web Service 是一个没有用户界面的Web 应用程序,使用XML标准格式,与其它应用程序交换数据。
举例说明它的优点,假如你正在为一家股票投资公司创建网站,你并不需要把不同证劵交易所得数据库与自己的后台数据库进行整合,因为你的应用程序可以使用Web Service,并使用XML格式交换数据。
2. Web Service 架构包括以下特性:
1)Web Service 服务器和客户端应用程序都连接在互联网或公司内网上,并且能相互通信。
2)Web Service服务器和客户端应用程序,所进行通信的数据格式必须遵守统一的HTTP, HTTPS, SOAP, XML等标准开放协议。
3)Web Service是松耦合的,它与服务器端和客户端使用的操作系统、编程语言和对象模型都无关。只要Web Service和使用Web Service应用程序都能够发送和接受统一标准消息协议即可。
3. Web Service是如何工作的?
Web Service允许两个程序之间交换XML文档。下图为Web Service流程的逻辑架构。
如图所示,WebService 客户端(网页或者桌面应用程序)向Web Service发出一个调用请求。使用者会认为它通过了Internet,并直接和Web Service进行数据交换,当然这实际上是个幻象。实际上,真正的调用请求是由代理类(DLL)完成。代理类DLL对于客户端应用来说,是一个本地类,注册在客户端应用。代理类会处理所有复杂的事务,包括通过Internet,向WebService服务器 发送调用请求,通过与WebService类.asmx接口, 从WebService取回结果返回给客户端应用。
4. 开发WebService
开发Web Service的流程与开发网页的流程近乎一致:
1. 所有构成网页和服务的源文件都是文本文件,它们可以使用任何文本编辑器创建和修改。而类文件通过命令工具进行编译。
2. Web Service中不需要使用代码隐藏技术,因为Web Service并不包括任何可视化内容。
3. 在WebService服务器端,aspx文件用于定义网页,而.asmx文件用于定义Web Service,我们可以吧Web Service想象成类,类中的一些方法通过Internet被暴露给客户端。
4. 代理: 客户端应用程序向WebService发出一个调用请求的话,必须先创建一个代理。它负责客户端应用程序和WebService应用程序之间的引导和调用的作用。代理在客户端应用程序注册后,客户端应用程序调用方法就如同调用本地对象一样,代理接收到了调用的指令,并以适当的格式封装调用,然后以SOAP协议发送到服务器。当服务器返回SOAP给客户端后,代理进行解密和解析,如果调用本地对象的方法一样返回数据。
5. 协议和标准 HTTP,XML,SOAP
5.1 HTTP, 它是TCP/IP最高层的协议,超文本传输协议。它的作用主要是实现浏览器和服务器端之间的通信。举个例子,当浏览器发出一个HTTP 请求时,服务器就会开始处理请求,通常会返回HTML页面,通过浏览器呈现。对于WebService 服务器端而言,它返回的是SOAP消息,消息中包含了被调用WebService所返回的消息。
HTTP请求,这个请求从浏览器发出,传递名称和值到服务器。它有GET和POST两种请求方式。
GET:GET请求中,名称和值会被附加到url上,数据是未加密的。当所有需要传递的数据可以使用名称和值成对表示,而且只需要传递少量字段,字段长度较短时,比较适合GET请求。另外,如果不需考虑安全问题时,也可以使用GET。
POST请求中,配对的名称和值是作为请求消息的一部分发送的。当有大量字段或者参数很长时,适合使用POST请求。从安全方面看,POST比GET更安全,因为POST请求可以被加密。和GET请求一样,POST请求无法传递复杂的数据类型(如类、结构体和DataSet)。
5.2 XML, 是有W3C公布的开放标准的一种描述数据的方法。优点是数据交换。
XML和HTML十分类似。不同的是HTML使用的是预定义元素,这些元素规定了HTML在浏览器中如何显示,而XML的元素则是由开放人员自己定义的,所以几乎所有的数据都可以表示。制定XML的目的是为了使其成为一种平台无关、语言无关的标准。
XML架构(Schema)是用于定义元素(XML元素都是小写的)。在架构中将指定元素名称和内容类型。HTML与XML的显著差别:大多数HTML读取器有很好的容错能力,而XML读取器则完全不同,所以XML文件的格式必须正确。
5.3 SOAP :(simple object access protocol,简单对象访问协议),它是简单,轻量级的信息交换协议。
作用是:数据交换。
语法:使用XML语法格式化内容。
结构:消息内容和一个或多个头模块组成,封装在SOAP envelope中。
优点: SOAP不需HTTP的GET和POST,它不受“名称/值”对的限制,我们可以使用它来发送复杂的对象,包括DataSet、类和其他对象。
缺点: 由于SOAP消息十分冗长,因此如果存在带宽或者传输性能的问题,会导致接收和发送的消息遗失,在此情况下,建议使用POST或GET。