100165689.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 326 行 · 第 1/2 页

HTM
326
字号


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	
        26.1  SOAP
</title></head>
<body>
    <div class="area">

        

        <div class="col1">
            <div class="lineBlue">
            </div>
            <!-- title -->
            <div class="arcTitle">
                <h1>
                    <a href="../16">
                        C#高级编程(第3版)
                    </a>
                </h1>
                <div style="text-align: center; font-size: 15px">
                    <a href="100165689.htm">
                        26.1  SOAP
                    </a>
                </div>
                <div style="text-align: center; font-size: 15px">
                    <a class="url" href="../../default.htm">http://book.csdn.net/</a>
                    2006-10-13 14:41:00
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165689.htm'><font color='red'>26.1  SOAP</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165686.htm'>25.3.2  数据绑定的更多内容</a></div><div style='float:right;width:49%'>·<a href='100165687.htm'>25.4  应用程序配置</a></div><div style='float:left;width:49%'>·<a href='100165688.htm'>25.5  小结</a></div><div style='float:right;width:49%'>·<a href='100165690.htm'>26.2  WSDL</a></div><div style='float:left;width:49%'>·<a href='100165691.htm'>26.3  Web服务</a></div><div style='float:right;width:49%'>·<a href='100165692.htm'>26.3.1  创建Web服务</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text">
                  <div id="csdn_zhaig_ad_yahoo_2"></div>
                  
                 <link href="css.css" rel="stylesheet" type="text/css" />

<p class=MsoNormal><span lang=EN-US>Web</span><span style='font-family:宋体'>服务是利用</span><span
lang=EN-US>SOAP(</span><span style='font-family:宋体'>简单对象访问协议,</span><span
lang=EN-US>Simple Object Access Protocol)</span><span style='font-family:宋体'>在</span><span
lang=EN-US>HTTP</span><span style='font-family:宋体'>上执行远程方法调用的一种新方法。过去这个问题一直非常棘手,因为过去使用</span><span
lang=EN-US>DCOM(</span><span style='font-family:宋体'>分布式</span><span lang=EN-US>COM)</span><span
style='font-family:宋体'>的人们,在实例化远程服务器上的对象、调用方法和获取结果时感到非常麻烦,并且在进行必要的配置时需要他们具有很高的技巧。</span></p>

<p class=MsoNormal><span lang=EN-US>SOAP</span><span style='font-family:宋体'>的出现使事情变得简单多了。</span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>技术基于</span><span lang=EN-US>XML</span><span
style='font-family:宋体'>的标准,它详细描述了怎样在</span><span lang=EN-US>HTTP</span><span
style='font-family:宋体'>上以可重复的方式进行方法调用。远程的</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>服务器能够理解那些调用并执行所有困难的工作,例如实例化所需的对象、进行调用以及给客户返回</span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>格式的响应等。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>通过</span><span lang=EN-US>.NET
Framework</span><span style='font-family:宋体'>,可以非常容易地利用上述的技术。与</span><span
lang=EN-US>ASP.NET</span><span style='font-family:宋体'>一样,我们可以在服务器上使用完整的</span><span
lang=EN-US>C#</span><span style='font-family:宋体'>和</span><span lang=EN-US>.NET</span><span
style='font-family:宋体'>技术,而且</span><span lang=EN-US>(</span><span
style='font-family:宋体'>也许是更重要的</span><span lang=EN-US>)</span><span
style='font-family:宋体'>,可以在任何平台上通过</span><span lang=EN-US>HTTP</span><span
style='font-family:宋体'>轻松访问服务器的</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务。换句话说,</span><span lang=EN-US>Linux</span><span
style='font-family:宋体'>代码就可以使用</span><span lang=EN-US>.NET Web</span><span
style='font-family:宋体'>服务,或者通过</span><span lang=EN-US>Internet</span><span
style='font-family:宋体'>控制电冰箱。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>此外,也可以使用</span><span
lang=EN-US>WSDL(Web Service Description Language, Web</span><span
style='font-family:宋体'>服务描述语言</span><span lang=EN-US>)</span><span
style='font-family:宋体'>来完整地描述</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务,还可以在运行期间动态地查找</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务。</span><span lang=EN-US>WSDL</span><span
style='font-family:宋体'>使用带有</span><span lang=EN-US>XML</span><span
style='font-family:宋体'>模式的</span><span lang=EN-US>XML</span><span
style='font-family:宋体'>来提供对所有方法的描述</span><span lang=EN-US>(</span><span
style='font-family:宋体'>以及对调用方法所需类型的描述</span><span lang=EN-US>)</span><span
style='font-family:宋体'>。现在有各式各样的类型可用于</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务,既有简单的基本类型,又有完整的</span><span lang=EN-US>DataSet</span><span
style='font-family:宋体'>对象,这样,完全存储在内存中的数据库就可以被编组到客户,从而大大减少数据库服务器上载入的数据量。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>本章的内容如下:</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>和</span><span lang=EN-US>WSDL</span><span
style='font-family:宋体'>的语法,然后讲述如何通过</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务使用</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>和</span><span lang=EN-US>WSDL</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>讨论如何显示和使用</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>通过第</span><span lang=EN-US>25</span><span
style='font-family:宋体'>章建立的会议登记程序示例,来说明</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务的使用方法。</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US
style='color:black'>●<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='font-family:宋体'>如何使用</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>标题交换数据</span></p>

<h3 style='margin-top:11.4pt;margin-right:0cm;FTEL:11.4pt;margin-left:
0cm'><a FTEL="_Toc507815256"><span lang=EN-US>26.1 &nbsp;SOAP</span></a></h3>

<p class=MsoNormal><span style='font-family:宋体'>如前所述,</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>是一个与</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务交换数据的方法。有关这项技术的书有很多,尤其是微软公司决定在</span><span lang=EN-US>.NET
Framework</span><span style='font-family:宋体'>中采用这项技术之后,</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>方面的书就更多了。现在,随着</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>规范的完成,出版</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>技术方面书籍的浪潮正在渐渐消退。稍微考虑一下,可以<span style='letter-spacing:
-.1pt'>发现</span></span><span lang=EN-US style='letter-spacing:-.1pt'>SOAP</span><span
style='font-family:宋体;letter-spacing:-.1pt'>的工作原理和</span><span lang=EN-US
style='letter-spacing:-.1pt'>HTTP</span><span style='font-family:宋体;letter-spacing:
-.1pt'>的工作原理比较相似,这非常有趣,但并不是我们最关心的。</span><span style='font-family:宋体;
letter-spacing:.1pt'>大多数情况下,我们不必考虑与</span><span lang=EN-US style='letter-spacing:
.1pt'>Web</span><span style='font-family:宋体;letter-spacing:.1pt'>服务进行交换时所采用的格式,只要得到希望的结果就够</span><span
style='font-family:宋体'>了。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>因此,本节不深入探讨</span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>的技术细节,而是给出一些简单的</span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>请求和响应,以便您对</span><span
lang=EN-US>SOAP</span><span style='font-family:宋体'>有一个感性的认识。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>假定要用下面的语句调用</span><span
lang=EN-US>Web</span><span style='font-family:宋体'>服务中的方法:</span></p>

<p class=2 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>int
DoSomething(string stringParam, int intParam)</span></p>

<p class=MsoNormal><span style='font-family:宋体'>这个语句必需的</span><span lang=EN-US>SOAP</span><span
style='font-family:宋体'>标题和主体如下所示,最上面是</span><span lang=EN-US>Web</span><span
style='font-family:宋体'>服务的地址:</span></p>

<p class=2 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US>POST /SomeLocation/myWebService.asmx HTTP/1.1</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>Host:
karlivaio</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>Content-Type:
text/xml; charset=utf-8</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>Content-Length:
<i>length</i></span></p>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?