网络服务是一种可以和应用程序结合的十分强大的工具,它没有用户接口可以设计成被其他软件访问。使用调用远程实体而不是调用链接的方式来表示一个网页的位置。同样地,也不是收到丰富多彩,而且栩栩如生的HTML代码,取而代之的是XML数据形式打包的XML信息。
当你的浏览器指向一个链接的时候,你不需要考虑服务器平台或者内建的应用编程接口。
同样,你不需考虑通信平台就可以调用网络服务。为了使它简洁,网络服务方式就是另外一种运行在普遍存在的HTTP协议定层的编程模式。
为了帮助你了解.NET网络服务怎样运行,我来举几个简单的例子来讨论一下怎样通过脚本来调用它们。
一般看来,网络服务是一种特定的平台组件,它可以被运行在其他平台的外部代码驱动和调用。它是Java的类或者com的组件。
在.NET平台上,网络服务就是用公开的可访问的方法来访问类。解释如何用.NET建造网络服务远远超过了我们这篇文章的范围,因此我就假设大家已经拥有一个在你的网络服务器上层运行的.NET的网络服务器。
作一个演示,复制列表A中的代码到一个新的文本文档中去,把它保存为一个扩展名为用.asmx的文件。然后,把这个文件放到IIS的虚拟文件夹中,运行.NET Framework和ASP.NET。做好这一切之后,你已经建立了你的第一个.NET网络服务。这只是一小步而已,实际上,讨论如何调用脚本是十分复杂的。
网络服务一般就是通过普通的包含呼叫方法,使用冲突信息的HTTP包来调用的。所有的这些信息都被打包在与SOAP词汇相关的XML字符串中。SOAP是通用的基于XML的语言,它用于定义一个远程启动方式。
到达网络服务器的HTTP包通常包含描述执行的SOAP信息。HTTP包加载着普通的HTTP命令在网络间传播,就像GET命令,或者更像POST命令。
以默认的方式调用网络服务,.NET网络服务可以以下三种方式调用:
每一种方法都表示了一种包含不同内容的对网络服务器采样的HTTP包的格式。换句话说,尽管SOAP协议被大肆宣传,在网络服务调用方面它还是不必要的。如果你直接使用GET或者POST命令,其结果依然有效。不过,你可以使用简单的HTTP命令这个事实并不足以暗示着这是最好的网络服务调用的方法。使用非SOAP信息可能会导致安全漏洞。
使用SOAP的好处随着处理数据复杂度的提高而越来越明显了。GET和POST命令仍然支持原始形式,包括阵列和枚举。但是,SOAP依赖于便携式的或者更复杂的基于XML的系统。另外,.NET网络服务也支持全部的.NET XML serializer可以处理的所有的类。
就像我提到的那样,POST,GET和SOAP都是默认的调用网络服务的方法。在.NET平台上,管理者能随意使这些调用协议无效。然而,SOAP协议被禁用是十分靠不住的;禁用HTTP POST和GET命令更可靠一些。让我们来看一个默认事件,这样我们就清楚了我们需要写些什么样的VBScript文件来调用简单的网络服务。