资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Web服务发现与调用Web服务技术湖南大学软件学院授课教师 陈浩2008年5月2/42大纲n WSDL 文档 n Web 服务发现 n Web 服务代理 n 使用 VS.NET 实现一个 Web 服务消费者3/42使用 XML Web Service 的步骤n 确定 XML Web Service 是否存在 n XML Web Service 发现 ,在获知供应商 URL 的情况下,调用 XML Web Service 发现 以获得该 URL 上每个可用 XML Web Service 的特定详细信息 n 在给定服务说明的情况下,生成一个代理类 ,该代理类可以根据服务说明中的精确定义与 XML Web Service 的方法进行通信 n 创建一个客户端应用程序,该应用程序调用 代理类的方法4/42WSDL 文档n WSDL 的定义 l当给定一个 Web 服务时,最好有一种标准方法 将 Web 服务接受和生成的消息归档,即将 Web 服务协定归档。一种标准的机制可以让开发人 员和开发工具更加便利地创建和解释协定 lWeb 服务描述语言 (WSDL) 是由 Microsoft 和 IBM 合作开发的一种基于 XML 的协定语言Web 服务消费者Web 服务5/42WSDL 文档的结构n definitions 元素:WSDL 文档的根元素 n types 元素:定义消息中的各种数据类型 n message 元素:描述通信中使用的消息 n portType 元素:定义操作消息以及与操作相关的消息 n binding 元素:定义每种操作使用的协议以及描述消息 使用的转换方法 n service 元素:定义了协议端点6/42Web 服务的 C# 代码示例XmlRoot(“account“) public class Acct XmlElement(“description“) public string Description; XmlElement(“number“) public string Number; XmlElement(“type“) public string Type; XmlElement(“balance“) public decimal Balance; XmlAttribute(“status“) public string Status; public class TheBank WebMethod public Acct GetAccount(string acctNumber) Acct a = new Acct(); a.Description = “Adams savings acct“; a.Balance=10000.0M; a.Number=“1234-XX“; a.Status=“active“; a.Type=“SV“; return a; 7/42WSDL 的 types 元素数据类型示例.输入参数 acctNumber返回值 Acct8/42WSDL 的 types 元素方法示例输入消息输出消息9/42WSDL 的 message 元素示例n message 元素主要用于定义 Web 服务的请求/响应 消息 n 一个 message 元素可以包含一个或多个 part 元素 n message 元素包括 In 和 Out 两种类型,分别定义输 入消息和输出消息10/42WSDL 的 portType 元素示例n portType 元素把消息和 Web 服务的操作关联起来11/42WSDL 的 binding 元素示例n 定义操作使用的协议以及描述消息使用的转换 方法b12/42WSDL 的 service 元素示例n Service 元素定义了协议端点13/42获得完整的 WSDL 文档点 击 这 里14/42大纲n WSDL 文档 n Web 服务发现 n Web 服务代理 n 使用 Visual Studio .NET 实现 Web 服务消费者15/42Web 服务发现n Disco简介 n 运用 Disco.exe 定位服务发现文档 n 演示 运用 Disco.exe 工具定位服务发现文档 n 服务发现编程Web 服务消费者Web 服务16/42服务发现简介n 服务发现的定义 lXML Web Service 发现是定位(或发现)使用 Web 服务 描述语言 (WSDL) 对特定 XML Web Service 进行描述的 一个或多个相关文档的过程 l并不是所有的 Web 服务器都要求支持服务发现,可以把 服务发现的任务交给一台服务器完成,而企业的内部 Web 服务可能根本就不需要服务发现 n WS-Inspection l由微软和 IBM 合作开发的服务发现标准17/42静态服务发现n 后缀为 .disco 的 XML 格式发现文件,包含 discoveryRef 和 contractRef 两个主要的子元素,提供 服务发现和服务协定方面的信息 n 使用 ASP.NET 创建的 XML Web Service 具有自动 生成发现文档的功能 n 当在客户端浏览器中使用带有“?DISCO”查询字符串 的URL 来访问 XML Web Service 时,自动生成该服务 的发现文档18/42静态服务发现代码示例n 静态发现文件的后缀是 .disco19/42动态服务发现n 如果不知道服务发现文件的 URL ,只知道服 务端点的 URL,可以使用动态服务发现 n 动态服务发现在默认情况下配置为“禁用”,必 须首先修改配置文件才能使服务器支持动态服 务发现(修改machine.config 文件或者 web.config 文件中的httpHandlers子元素,为 其添加“add”元素) n 在站点的根目录下创建名为 Default.vsdisco 的XML 格式文件,其中列出了服务发现过程中 不作为查找项的文件夹 n 除非用于测试,否则不要启用动态服务发现 ,因为这样会给系统带来安全隐患20/42.vsdisco 文件示例21/42使用 Disco.exe 工具定位发现文档n 语法n 主要用于在 Web 服务消费者生成 WSDL 文档 n 使用 Disco.exedisco options URL例子disco /out:d:disco /u:administrator /p:biffle http:/www.woodgrovebank.com/catalog.disco22/42演示 使用 Disco.exe 工具定位发现文 档运用 Disco.exe 定位服务发现文档23/42用编程的方式实现服务发现DiscoveryClientProtocol DiscoveryDocument DiscoveryClientResultCollection System.Web.Services.Discoveryn 可以使用编程的手段实现 disco.exe 命令行工具的所 有功能24/42大纲n WSDL 文档 n Web 服务发现 n Web 服务代理 n 使用 Visual Studio .NET 实现 Web 服务消费者25/42Web 服务代理n 代理与 WSDL n 运用 Wsdl.exe 生成代理 n 配置代理Web 服务消费者Web 服务26/42代理和 WSDLn 使用代理的原因 l可以使用行业标准协议(包括 SOAP)通过网 络与 Web 服务进行通信。也就是说,客户端和 Web 服务使用 SOAP 消息进行通信,SOAP 消 息将输入和输出参数封装为 XML。但是这种编 程手段非常复杂,对于 Web 服务消费者来说, 代理类处理将参数映射为 XML 元素,然后通过 网络发送 SOAP 消息27/42使用 Wsdl.exe 生成代理n 调用 Wsdl.exe 的语法wsdl options URL | Path例子例子wsdl http:/www.woodgrovebank.com/services/bank.asmx?wsdlwsdl /l:VB /protocol:HttpGet /out:Bank.vb http:/www.woodgrovebank.com/services/bank.asmx?wsdl28/42Wsdl.exe 常用参数参数描述WSDL 协协定、XSD 架构或 .discomap 文档的 URL 或路径/language:language 用于生成的代理类类的语语言,可用选项选项 包括“CS”、“VB”和“JS”,默认为认为 “CS”/protocol:protocol 用于和 Web 服务务方法进进行通信的协协 议议,可用选项选项 包括“SOAP”、“HTTP- GET”和“HTTP-POST”,默认协议认协议 是 “SOAP” /namespace:myName Space 生成的代理的命名空间间,默认认命名空 间为间为 全局命名空间间 /out:filename 要创创建的包含代理类类的文件的名称, 默认认名称从实现实现 Web 服务务的类类名称 派生 29/42代理类 n 由 wsdl.exe 生成的代理类包含所有方法的同步和异步 调用形式 n 代理类中的方法可以正确处理传递的消息 n 默认情况下,代理类使用 SOAP 协议,但是有些 Web 服务只支持 HTTP 协议,必须在使用 wsdl.exe 时使用参 数选定 HTTP 协议 n 代理类都是 HttpWebClientProtocol 类的派生类30/42配置代理n Url 属性 l用于修改 Web 服务的 URL,实现容错或者负 载平衡的功能 n Credentials 属性 l修改用于身份验证的消费者凭据 n Timeout 属性 l修改同步调用连接超时的默认值,单位为毫秒 n Proxy 属性 l使用其他代理配置替代系统默认设置 n AllowAutoRedirect 属性 l防止 Web 服务器向其他服务器提交用户凭据31/42配置代理的代码示例Dim theBank As New Bank() theBank.Url = _ “http:/eastcoast.woodgrovebank.com/Bank.asmx“ Dim credentials = New NetworkCredential _ (“Adam“, “ABarr-user“, “woodgrovebank.com“) theBank.Credentials = credentials theBank.Timeout = 20000 Dim proxyObject As IWebProxy = New _ WebProxy(“http:/proxyserver:80“, True) theBank.Proxy = proxyObject theBank.AllowAutoRedirect = TrueVisual BasicC#32/42大纲 n WSDL 文档 n Web 服务发现 n Web 服务代理 n 使用 Visual Studio .NET 实现一个 Web 服务消费者33/42使用 Visual Studio .NET 实现 Web 服务消费 者n 演示 实现一个控制台应用程序客户端 n 演示 实现一个 Web 窗体应用程序客户端 n 同步客户端与异步客户端的比较Web 服务消费者34/42演示 实现控制台消费者n 创建控制台应用程序 n 添加 Web 引用 n 使用代理调用 Web 服务Web 服务消费者Console 应用程序35/42演示 实现 Web 页面消费者n 创建 ASP.NET Web 窗体应用程序 n 添加 Web 引用 n 使用代理调用 Web 服务Web 服务消费者Web For
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号