ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:37.27KB ,
资源ID:6858549      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6858549.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Web服务和ASPNET.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Web服务和ASPNET.docx

1、Web服务和ASPNETWeb服务和ASP.NET 本章的内容如下: SOAP和WSDL的语法 如何通过Web服务使用SOAP和WSDL 提供和使用Web服务 Web服务的用法。 使用SOAP标题交换数据 Web服务是利用SOAP(Simple Object Access Protocol,简单对象访问协议)在HTTP上执行远程方法调用的一种新方法。过去这个问题一直非常棘手,因为使用过任何 DCOM(分布式 COM)的人们,在实例化远程服务器上的对象、调用方法和获取结果时感到非常麻烦,并且在进行必要的配置时,需要具有很高的技巧。 SOAP的出现使事情变得简单多了。SOAP技术是一个基于XML的

2、标准,它详细描述了怎样在HTTP 上以可重复的方式进行方法调用。远程SOAP 服务器能够理解这些调用并执行所有困难的工作,如实例化所需的对象、进行调用以及给客户端返回SOAP格式的响应等。 通过.NET Framework,可以非常容易地利用上述技术。与ASP.NET一样,我们可以在服务器上使用完整的C#和.NET 技术,而且(也许是更重要的)可以从任何平台上通过HTTP 访问服务器,从而实现的Web服务的简单利用。换句话说,例如,Linux代码就可以使用.NET Web服务,或者Internet启用的电冰箱。过去作者就曾经成功地把ASP.NET Web服务和Macromedia Flash组

3、合在一起,创建启用数据的Flash内容。 此外, 也可以使用WSDL(Web Service Description Language, Web服务描述语言)完整地描述Web服务,还可以在运行期间动态地查找Web服务。WSDL使用带有XML架构的XML提供对所有方法的描述(以及对调用方法所需类型的描述)。现在各式各样的类型可用于Web服务,既有简单的基元类型,又有完整的 DataSet 对象,这样,完全存储在内存中的数据库就可以被编组到客户端,从而大大减少加数据库服务器上加载的数据量。 55 第 章注意,本章讨论的是ASP.NET Web服务,而不是WCF Web服务,后者是近期才添加到.NE

4、T 中。ASP.NET Web 服务使用起来比较简单,足以满足大多数需要,而Windows Communication Foundation(WCF) Web服务包含ASP.NET Web服务的全部功能,还添加了额外的功能。WCF详解第43章。C#高级编程(第7版) E24055.1 SOAP 如前所述,SOAP是一个与Web服务交换数据的方法。有关这项技术的书有很多,尤其是微软公司决定在.NET Framework中采用这项技术之后,SOAP方面的书就更多了。稍微考虑一下,可以发现SOAP的工作原理和HTTP的工作原理比较相似, 这非常有趣, 但并不是必需的。 大多数情况下,我们不必考虑与W

5、eb服务进行交换时所采用的格式,只要得到希望的结果就够了。 因此,本节不深入探讨SOAP的技术细节,而是给出一些简单的SOAP请求和响应,以便您对SOAP有一个感性的认识。 假定要用下面的签名调用Web服务中的方法: int DoSomething(string stringParam, int intParam) 这条语句必需的SOAP标题和主体如下所示,最上面是Web服务的地址: POST /SomeLocation/myWebService.asmx HTTP/1.1 Host: hostname Content-Type: text/xml; charset=utf-8 Content

6、-Length: length SOAPAction: http:/tempuri.org/DoSomething string int length参数用于指定内容的总字节数,它的大小随着string和int参数中发送的值而变化。Host也是变化的,它取决于Web服务的位置。 上面代码引用的soap名称空间定义用于构建消息的各种元素。 通过HTTP发送上面的代码时, 实际发送的数据将有所不同(但是相关)。例如,可以使用简单的GET方法调用上面的方法: GET /SomeLocation/myWebService.asmx/DoSomething?stringParam= string & i

7、ntParam= int HTTP/1.1 Host: hostname 这个方法的SOAP响应如下: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length 第55章 Web服务和ASP.NET E241 int 其中length参数的值根据int参数值的变化而改变。 此外,通过HTTP的实际响应也比较简单,例如: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length int 这是一种比较简单的X

8、ML格式。 如本节开始时所讨论的,有许多语法问题可以完全忽略。只有在需要考虑语法时,语法才会变得很重要。 55.2 WSDL WSDL可以完整地描述Web服务、可用的方法,以及调用这些方法的各种方式。此外,虽然过多地讨论WSDL的细节对我们并没有太多的好处,但对WSDL的总体理解却非常有用。 WSDL是另一种与XML完全兼容的语法。WSDL通过可用的方法、这些方法所使用的类型、通过各种协议(纯 SOAP、HTTP GET 等)发送给方法的请求消息和从方法中发送出的响应消息的格式,以及上面规范的各种绑定,指定 Web 服务。WDSL 由各种客户端读取,而不只是.NET,还有本章前言提及的Macr

9、omedia Flash。 WSDL 文件中最重要的部分或许是类型定义部分。这一部分使用XML 架构描述数据交换的格式,数据交换的格式要通过可使用的XML元素和元素之间的关系定义。 例如,上一节中的示例所使用的Web服务方法: int DoSomething(string stringParam, int intParam) 下面是为请求所做的类型声明: C#高级编程(第7版) E242 .other definitions. 这些类型都是以前我们看到的SOAP和HTTP请求及响应所必需的,并且这些类型被绑定在文件中的后期操作上。所有这些类型都使用标准的XML架构语法指定,例如: 这个示例指定

10、一个DoSomethingResponse元素, 该元素包含一个子元素DoSomething Result, 这个子元素包含了一个整数。这个整数必须出现1次,即它必须包含在内。 如果可以访问Web服务的WSDL,就可以使用WSDL。不久我们可以看到,对WSDL的使用并不困难。 上面对SOAP和WSDL进行简短的讨论,接下来讨论如何创建和使用Web服务。 55.3 Web服务 Web服务的讨论分为两个方面: 创建Web服务,这一部分主要讨论如何编写Web服务和如何把它们放在Web服务器上。 使用Web服务,这一部分主要讨论如何在客户端应用程序中使用Web服务。 55.3.1 提供Web服务 把代

11、码直接放到.asmx文件中或者从这些文件中引用Web服务类,都可以提供Web服务。如同ASP.NET页面一样,在Visual Studio .NET中创建Web服务也使用后一种方法,目的是把问题讲述第55章 Web服务和ASP.NET E243得更清楚一些。 如图55-1所示,使用File | New | Web Site命令在C:ProCSharpChapter55目录下创建一个Web服务项目PCSWebService1,此时系统会生成一组类似的文件,它们与创建Web 应用程序项目时所生成的一组文件相似,其位置选项也相同。实际上,唯一的区别就是创建 Web 应用程序时生成的文件是Defaul

12、t.aspx, 而创建Web服务项目时生成的文件是Service.asmx, 其代码隐藏是App_Code/ Service.cs。 图 55-1 Service.asmx中的代码如下所示: 它引用代码文件/App_Code/ Service.cs。下面的程序清单是生成的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; WebService(Namespace = http:/tempuri.org/) WebSe

13、rviceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) / To allow this Web Service to be called from script, using ASP.NET AJAX, / uncomment the following line. / System.Web.Script.Services.ScriptService public class Service : System.Web.Services.WebService public Service() /Uncomment the following

14、line if using designed components /InitializeComponent(); WebMethod public string HelloWorld() return Hello World; 代码段PCSWebService1App_CodeService.cs 可从 下载源代码 C#高级编程(第7版) E244这段代码包含几个标准名称空间引用,并定义Web服务类Service(它在Service.asmx中引用), Service类继承自System.Web. Services.WebService。WebService属性指定Web服务的名称空间,它允

15、许客户端应用程序区分不同Web服务中同名的Web服务方法。 WebServiceBinding属性与Web服务的交互操作性相关,如WS-I Basic Profile 1.1规范中的定义所示。简言之,这个属性可以声明,Web 服务为一个或多个 Web 方法支持标准的 WSDL 描述,或者像这个示例一样,指定一组新的WDSL定义。 其中还有一个注释掉的ScriptService属性, 如果取消注释, 就可以使用ASP.NET AJAX脚本调用Web方法。现在可以在这个Web服务类上提供其他方法。 在添加可以通过Web服务访问的方法时, 只需要把方法定义为public, 并给方法提供WebMeth

16、od属性。这个属性仅把方法标记为可通过Web服务访问。稍后将会学习返回类型和参数使用的类型,现在用下面的方法替换自动生成的HelloWorld()方法。 WebMethod public string CanWeFixIt() return Yes we can!; 现在编译该项目。 要检查是否一切正常工作, 可用Ctrl+F5组合键运行应用程序, 就会进入Web服务的测试页面,如图55-2所示。 图 55-2 第55章 Web服务和ASP.NET E245 在浏览器中显示的大多数文本都说明把 Web 服务的名称空间设置为 http:/tempuri.org/。这在开发过程中不是问题, 尽管以

17、后应修改它(如Web页面中的文本所示)。 为此可以使用WebService属性,但目前可以不修改它。 单击方法名称,可以得到SOAP请求和响应的信息,此外,还可以得到一个示例,说明了如何通过HTTP GET和HTTP POST方法获得请求和响应。另外,也可以单击Invoke按钮,对方法进行测试。如果方法需要简单的参数,那么在这个窗体中也可以输入这些参数(如果方法需要较复杂的参数,这个窗体就不允许以这种方式测试方法)。这样,就可以看到方法调用所返回的XML: Yes we can! 这说明方法运行良好。 单击图55-2的浏览器屏幕上的Service Description链接,可以查看Web服务

18、的WSDL描述。其中最重要的部分是关于请求和响应的元素类型的描述: 该描述文件比较长,除了包含服务的各种绑定之外,还可以包含请求和响应所需类型的描述。 1. 对于Web服务可用的类型 Web服务可以用于交换表55-1中所示的类型。 表 55-1 String Char Byte Boolean Int16 Int32 Int64 UInt16 UInt32 UInt64 Single Double 注意,这个测试页面默认仅可用于本地计算机的调用者,即使Web服务驻留在IIS(Internet Information Services,Internet信息服务)中,也是如此。 C#高级编程(第7

19、版) E246(续表) Guid Decimal DateTime XmlQualifiedName class struct XmlNode DataSet enum 以上所有类型的数组都可以使用,因为它们都是泛型集合类型,如List。还要注意,只能编组class和struct类型的公共属性和字段。 55.3.2 使用Web服务 既然明白了如何创建Web服务,接下来就讨论如何使用它们。为此需要在代码中生成一个知道如何与给定 Web 服务进行通信的代理类。这样,代码中对 Web 服务进行的任何调用都要通过这个代理类,从表面看,这个代理类就等同于Web服务,代码也会认为我们有了Web服务的本地副

20、本。而实际的情况是有许多HTTP通信工作在进行,只是对我们屏蔽了其中的细节。有两种方式可以完成这项任务:第一,可以使用WSDL.exe命令行工具;第二,可以使用Visual Studio .NET中的Add Web Reference菜单选项。 从命令行中使用WSDL.exe时,它会根据Web服务的WSDL描述生成一个包含代理类的.cs文件。使用Web服务的URL来指定该文件,例如: WSDL http:/localhost:53679/PCSWebService1/Service.asmx?WSDL 这样就会在Service.cs 文件中为上一节中的示例生成一个代理类。这个代理类将以Web

21、服务命名,在这个示例中就是Service,该代理类包含一些方法,那些方法将可以调用与服务同名的方法。在使用这个类时,只需把所生成的.cs文件添加到项目中,并在代码中使用下面的代码行: Service myService = new Service(); string result = myService.CanWeFixIt(); 默认情况下,生成的类将放在根名称空间中,因此不需要使用 using 语句,但是,可以使用WSDL.exe命令行选项/n:指定一个不同的名称空间。 虽然这项技术非常有效,但是,如果服务正处于开发或处于连续更改中,就比较麻烦。当然,为了在每次编译之前自动更新所生成的代理

22、,这项技术可以用项目的构建选项执行,但是我们有更好的方法。 在一个新的空白网站PCSWebClient1中, 为上一节中的示例创建客户端(在C:ProCSharpChapter55注意,这里和随后的例子使用默认的文件系统驻留Web应用程序。为了使上面的URL起作用,Web服务的Visual Web Developer Web Server必须正在运行。这仍不能保证 Web 服务的端口号(在这里是 61968)仍相同。这适合于演示,因为一般我们希望Web 服务驻留在固定的 Web 服务器(如 IIS)上,否则就必须继续重新生成代理类。确保Web服务可用于测试的一种方式是在一个解决方案中包含多个Web站点。 第55章 Web服务和ASP.NET E247目录下),阐明这个更好的方法。现在创建这个项目,添加Default.aspx页面,并在Default.aspx页面中添加下面的代码: 代码段PCSWebClient1Default.aspx

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1