一、Webservice
WSE开发平台是依靠httpsoap方法完成它的工作的。实际生产中,应该禁用httpsoap之外的方法以增加产品的安全性。可以通过服务的web.config文件或machine.config文件。
加入以下代码实现:
<configuration>
<system.web>
<webservice>
<addname =”httpsoap
<addname =”httpsoap”>
<removename =”httpget”>
<removename=”httppost”>
<removename=”httppostlocalhost”>
<removename=”Documentation”/>
二、SOAP消息
SOAP是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。
SOAP的3个主要特性
A 能够对SOAP语言进行扩展以实现新的通信协议(加密、身份认证和事务)
B 能够使用SOAP语言编码的消息可以通过任意的网络协议如HTTP、TCP、UDP或SMTP传输
C SOAP支持任意类型的消息交换模型
SOAP 是一种简单的基于 XML 的协议,它使应用程序通过HTTP 来交换信息。
1、 SOAP消息包含一个名为<Envelope>的根元素,该元素在开始部分可以有选择地包含一个<header>元素但必须在之后包含一个<body>,<body>元素包含了被编码成XML格式的业务数据
2、 <header>元素包含了以XML格式编码的数据,它由诸如WS-*规范的实现这类的SOAP扩展创建并使用,SOAP语言本身没有定义<header>的子元素,只有WS-*规范为各自的应用定义了一些子元素。其中每个涉及消息传输的规范都在<header>中添加了各自的一些子元素,正是由于该机制的存在,SOAP语言才有良好的扩展性
3、 对SOAP消息体编码
Soap消息体中包含的数据(在 <body>元素中)通常以XML文档的形式表示,而它的Schema则是在服务的契约中指定的。该方式称为Document/Literal。因为数据被格式化成一份XML文档并在字面上遵循某个XSD Schema
而我们之前谈到的SOAP语言拥有一段面向对象的历史,这为我们提供了SOAP消息体中的数据的另一种编码方式,即RPC/encoded。该技术更适用于RPC风格的同步请求/响应消息交换模式。该编码方式作为SOAP规范中的一部分,描述了如何根据一套规则将方法的输入输出参数以XML格式序列化,其中的规则定义了对象、表、结构以及对象图的序列化方式是。
4、 SOAP错误消息
<Fault>元素
5、 SOAP与底层传输协议;
1.2版的SOAP规范只描述了它与HTTP协议之间的关系,其中它与HTTP协议所支持的同步请求/响应消息交换模型建立了自然的联系
三、 消息交换模型
五、WEB服务契约与WSDL语言
Web service Description Language
WSDL语言由一个名为<definitions>的根元素及7个子元素构成,这7个元素可以分成以下两类:
1、<type><message><operation>与<portType>元素用于描述一个web服务所提供的契约。
2、<binding><port><service>元素用于指定契约与它们的实现之间的联系,除了建立web方法与服务的特定操作的联系,还涉及描述服务实现的其他方面的联系,如网络协议以及Soap消息中数据的编码格式。
<type>元素
包含了将出现在交换的SOAP中的数据的XSD架构,注意,<type>元素是必须的,不过,如果在<import>根元素中导入了schema则它的内容可以为空
<message>元素
每个<message>元素定义了一个SOAP输入消息、输出消息或错误消息,每个<message>元素的<part>子元素都引用了一个数据schema。由于一个SOAP消息可以包含多个组成部分,一次一个<message>元素可以包含多个<part>项
<wsdl:message name="GetTownFromLatLonSoapIn">
<wsdl:part name="parameters" element="tns:GetTownFromLatLon" />
</wsdl:message>
- <wsdl:message name="GetTownFromLatLonSoapOut">
<wsdl:part name="parameters" element="tns:GetTownFromLatLonResponse" />
</wsdl:message>
<operation>元素
每个<operation>元素都定义了web服务中每个操作所支持的SOAP消息,
<porttype>元素
定义一系列服务所支持的操作。
如果从面向对象的角度看待WSDL语言,那么<type>元素的类型可以看作是结构
<message>看作是方法签名,而<operation>和<porttype>看作是面向对象语言的方法与接口