Try again

200512270453934121.gif

博客园 首页 联系 管理

XML Web services 发现是对 XML Web services 说明进行定位和询问的过程,是访问 XML Web services 的基本步骤。通过发现进程,XML Web services 客户端能够在设计阶段了解某个 XML Web services 是否存在,它的功能如何,以及如何正确与它进行交互操作。
然而,实现 XML Web services 的 Web 站点不需要支持该发现进程,而是由另一个站点负责说明服务(如 XML Web services 目录)。另外,可能没有一个公开的方法可用来查找服务,例如在创建专用服务时。

有关详细信息,请参阅 XML Web services Discovery。

静态发现 (.disco)
可以通过发布 .disco 文件(一个 XML 文档,包含指向其他发现文档、XSD 方案和服务说明的链接)来启用 XML Web services 的程序发现。使用 ASP.NET 自动创建的 XML Web services 能够提供生成的发现文档。例如,要访问名为 Service1.asmx(本地计算机中 WebService1 项目的一部分)的 XML Web services 发现文档,可使用以下 URL:

以下示例显示了发现文档的结构:

<?xml version="1.0" ?>
<disco:discovery  xmlns:disco="http://schemas.xmlsoap.org/disco"
xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl">
      <wsdl:contractRef ref="http://MyWebServer/UserName.asmx?WSDL"/>
</disco:discovery>
注意:发现文档是一个元素容器,通常包含提供 XML Web services 发现信息的资源链接 (URL)。如果 URL 是相对的,则假定它们是相对于发现文档的位置。
有关详细信息,请参阅 Fine-Tuning Discovery Mechanisms。

动态发现 (.vsdisco)
动态发现是 ASP.NET 通过开发 Web 服务器上的文件夹层次结构执行迭代搜索以查找可用的 XML Web services 的过程。动态发现 (.vsdisco) 文件是基于 XML 的文件,可以包含零或多个 <exclude> 节点。每个 <exclude> 节点包含一个“path”属性,path 属性包含指向子文件夹(动态发现进程不应搜索的子文件夹)的相对路径。以下是 .vsdisco 示例文件:

<?xml version="1.0" encoding="utf-8" ?>
<dynamicDiscovery xmlns="urn:schemas-dynamicdiscovery:disco.2000-03-17">
     <exclude path="_vti_cnf" />
     <exclude path="_vti_pvt" />
     <exclude path="_vti_log" />
     <exclude path="_vti_script" />
     <exclude path="_vti_txt" />
     <exclude path="Web References" />
</dynamicDiscovery>
当从启用了动态发现的 Web 服务器请求 .vsdisco 文件时,对于已通过动态发现进程进行定位的每个 Web Service,都会返回一个包含 Web Service 发现信息的发现文档。

默认情况下,web.config 中禁用了动态发现。要积极控制哪些 XML Web services 客户端可以发现服务,应该在开发 Web 服务器上只使用动态发现。当向生产 Web 服务器部署 XML Web services 时,应为那些希望客户端能够发现的 XML Web services 创建并发布一个静态发现文件 (.disco)。

有关详细信息,请参阅 Deploying XML Web services in Managed Code。


posted on 2005-03-29 10:30  共同学习,共同进步  阅读(663)  评论(0编辑  收藏  举报