.asmx处理程序提供的功能之自动生成WSDL

开发 后端
本文介绍.asmx处理程序提供的功能之自动生成WSDL。文档/WSDL 的自动生成是 WebMethod 框架中很有价值的一部分。

自动生成WSDL

在您写好并部署了 WebMethod 之后,客户端需要明确知道为了与它成功通讯而必须使 SOAP 消息具有什么样的外观。提供 Web 服务说明的标准方法是通过 WSDL(以及嵌入的 XSD 定义)进行的。为了帮助适应这种情况,.asmx 处理程序自动生成可读的文档页,以及能准确反映 WebMethod 接口的 WSDL 定义。如果您对 WebMethod 应用了许多映射属性,则它们都会反映在生成的文档中。

如果您浏览 .asmx 文件,将会看到一个如图 2 所示的可供人工读取的文档页。此文档页是由一个名为 DefaultWsdlHelpGenerator.aspx(位于 C:\windows\Microsoft.NET\Framework\ v1.0.3705\config)的 .aspx 页生成的。如果您打开这个文件,将会发现这仅仅是一个标准的 ASP.NET 页,该页使用 .NET 反射生成文档。此功能允许您的文档总是与代码保持同步。您只需修改此文件即可自定义所生成的文档。

还可以通过在 Web.config 文件中指定一个不同的文档文件来避免在虚拟目录中生成文档:

  1. < configuration>   
  2. < system.web>   
  3. < webServices>   
  4. < wsdlHelpGenerator href="MyDocumentation.aspx"/>   
  5. < /webServices>   
  6. ...   

如果客户端对 .asmx 终结点发出 GET 请求,而且查询字符串中有 “?wsdl”,那么,.asmx 处理程序会生成 WSDL 定义,而不生成可供人工读取的文档。客户端可以使用 WSDL 定义来生成代理类,这些类可自动了解如何与 Web 服务通讯(例如,使用 .NET 中的 Wsdl.exe)。

自动生成WSDL:自定义过程

要自定义 WSDL 生成过程,可以编写一个 SoapExtensionReflector 类,并在 Web.config 文件中向 WebMethod 框架注册该类。然后,当 .asmx 处理程序生成 WSDL 定义时,它将调用反射器类,并使您有机会自定义向客户端提供的最终定义。有关如何编写 SoapExtensionReflector 类的更多信息,请查看 SoapExtensionReflectors in ASP.NET Web Services。

您还可以使用两种不同的方法来完全跳过 WSDL 生成过程。***种方法是,在虚拟目录中提供一个可供客户端访问的静态 WSDL 文档,然后通过将文档生成器从 Web.config 文件中删除来禁用它,如下所示:

  1. < configuration>   
  2. < system.web>   
  3. < webServices>   
  4. < protocols>   
  5. < remove name="Documentation"/>   
  6. < /protocols>   
  7. ...   

另一种自动化程度较之稍高的方法是,使用 [WebServicesBinding] 属性来指定由 WebMethod 类实现的静态 WSDL 文档在虚拟目录中的位置。您还必须使用 [SoapDocumentMethod] 属性为每个 WebMethod 实现的 WSDL 绑定指定名称。这样做之后,WSDL自动生成过程将导入静态 WSDL 文件,并在它周围包装一个新的服务说明。

目前,因为仍没有太多可用的 WSDL 编辑器,所以手工编写 WSDL 是极其困难的。因此,文档/WSDL 的自动生成是 WebMethod 框架中很有价值的一部分,没有它,许多开发人员的日子会很难过。

【编辑推荐】

  1. .asmx处理程序提供的功能之XML映射
  2. .asmx处理程序提供的功能之消息调度
  3. WebMethod框架:实现Web服务的更高效方法
  4. .NET框架基本要求(.NET1.1)
  5. P2PMessageQueue的实际用法
责任编辑:yangsai 来源: MSDN
相关推荐

2009-08-06 18:23:51

XML映射XmlSerializ.asmx处理程序

2009-08-06 18:15:31

消息调度.asmx处理程序

2021-11-07 14:33:48

算法Pairwise功能

2011-08-16 10:09:30

SQLPLUS学习笔记SQL的自动提交功能

2013-08-20 16:14:46

pythonpython文本处理

2011-03-07 11:12:36

FileZilla

2011-06-14 13:41:27

muleWSDL

2020-02-18 13:05:44

Windows 10功能Windows

2019-04-16 08:35:05

Selenium ID功能测试自动化

2020-11-19 07:20:07

微软Pluton处理器Windows PC

2009-06-26 10:12:00

Hibernate自动

2009-07-16 11:21:19

ibatis主键自动生成

2011-01-21 10:59:01

sendmail群发

2011-04-13 16:59:41

HTTPASP.NET

2012-05-15 09:31:11

Windows 8IE 10

2011-04-13 16:35:47

HTTPASP.NET

2017-04-06 10:45:53

开源Cillium网络

2021-02-23 08:18:32

Windows10操作系统微软

2012-04-19 17:16:32

Titanium实例代码分析

2010-03-01 09:57:55

Linux Makef
点赞
收藏

51CTO技术栈公众号