




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Web Service 编程-C#.NET,第五章 Web Service基础,本章要点,Web Service体系结构: Web Service是自包含模块化的应用程序,它可以在网络(通常称为Web)中被描述、发布、查找以及调用。 实例介绍:本章通过两个实例的分析,帮助读者及时应用学习的知识,更快更好地掌握Web Service的开发。,Web 服务简介,Web 服务的定义 Web 服务是可以使用标准 Internet 协议进行访问的可编程应用程序逻辑 基于 Internet 技术 实现可以重复使用的黑匣功能 是未来分布式应用程序的发展方向,XML Web Service的定义,XML We
2、b Service实现了在异类系统之间以 XML 消息的形式进行数据交换 远程访问数据和应用程序逻辑并不是新的技术,但以松耦合的方式执行该操作却是一个全新的概念 在客户端和服务器之间要求接收方可以理解收到的消息,客户端和服务器共同遵守一个协定(通常在 Web 服务中使用 WSDL 和 XSD),然后通过在指定的传输协议(例如 HTTP)之上生成遵守该协定的消息来进行通信 使用文本格式(如 XML)的灵活性使消息交换随时间的推移以一种松耦合的方式进化成为可能,Web 服务的功能和优点,黑匣功能使用户不需要了解服务具体是如何实现的 功能的粒度没有限制,大型和小型系统都可以使用 既可以访问静态资源也
3、可以访问动态资源 便于和其他 Web 服务集成 平台无关,互操作性强 支持多种语言 把现有系统改造为 Web 服务比较容易 全部采用业界标准而不是厂商标准,TCP/IP,System.Net.Sockets,Sockets,HTTP,XML or Binary Formats,SOAP,System.Net.Sockets,System.Net,System.Runtime.Remoting,System.Web.Services,Web 技术栈与 .NET,面向服务的体系结构,面向服务的体系结构的组成部分,服务提供者 网络中负责提供软件服务接口、实现特定功能的节点 服务消费者 网络中使用服务
4、提供者定义的接口,实现业务解决方案的节点 服务代理 网络中负责存储服务描述,并帮助服务消费者定位服务的节点,各组成部分间的基本操作过程,服务的发布 服务提供者把服务发布到服务代理,包括服务接口定义、服务提供者位置以及其他相关文件 服务的查找 服务消费者在服务代理那里查找需要的服务 服务的绑定 服务消费者绑定由服务提供者提供的服务,这个过程包括提供商对消费者的身份验证,Web 服务体系结构简介,Web 服务是面向服务体系结构的具体实现,Web 服务体系结构的组成部分,Web 服务的服务提供者 由 ASP.NET 页面来实现,扩展名是 .asmx Web 服务的服务代理 UDDI 提供的目录服务
5、Web 服务的服务消费者 采用 SOAP 或 HTTP 协议与服务提供者进行通信,并且支持必要的安全身份验证,Web 服务体系结构中各部分的功能,Web 服务提供者 Web 服务消费者 Web 服务代理,Web 服务提供者,Web 服务 可以运行在 IIS Web 服务器上 .NET 公共语言运行库 Web 服务提供者的例子,IIS 与 Web 服务,IIS 提供对 HTTP 协议的侦听 IIS 可以通过使用 ISAPI 体系结构来同时提供多个独立的 Web 服务,其中ISAPI 起到分选器的作用,可以根据客户端访问文件的后缀名,将不同类型的请求定向到不同的应用程序来进行处理 IIS 有完整的
6、安全结构,可以提供身份验证和数据加密等多种安全服务,Web 服务消费者,最低功能要求 可以使用该服务支持的协议来调用服务提供者的 Web 服务接口 在消息发往服务提供者前进行正确的格式化 服务定位 不使用硬编码形式,可以动态定位 代理 异步调用 消费者在等待服务完成的 同时可以处理其他任务 Web 服务消费者的示例,代理的任务,负责处理底层的协议 解析字节流以提取数据 验证入站数据流 构造出站数据包,Web 服务代理,在提供商和代理之间完成的操作 对 Web 服务进行分类 提供 Web 服务的协定信息 提供 Web 服务的文本描述 提供 Web 服务的文档链接 提供 Web 服务的定位信息 在
7、代理和消费者之间完成的操作 最重要的功能就是实现查找 UDDI 注册,UDDI 注册包含的信息,Web 服务的位置、协定信息和标识符 行业的分类信息 Web 服务的技术信息,Web 服务基础结构,Web 服务编程模型,Web 协议 HTTP SOAP XML 无状态 松耦合 通用数据格式 SOAP 协议基于 XML 格式 Web 服务描述文件使用 XML 格式 从 Web 服务返回的数据使用 XML 格式 UDDI 注册 Web 服务使用 XML 格式的文档 ASP.NET 使用 XML 格式的配置文件,HTTP 协议基本原理,HTTP 协议概述 HTTP 请求与HTTP响应的结构 HTTP
8、的 GET 与 POST 方法,URL、URI 和 URN,URI,Uniform Resource Identifier 统一资源标识符,用字符串惟一标识信息资源 URL,Uniform Resource Locator 统一资源定位符,通过“通讯协议网络地址”字符串惟一标识信息位置和资源访问途径 URN,Uniform Resource Name 统一资源命名符,用于惟一标识全球范围内由专门机构负责的稳定的信息资源,HTTP 协议概述,URL 结构 无状态协议 在客户端发出 HTTP 请求并收到服务器端响应后,连接就会断开,下次的访问与前一次的访问无关,因此如果需要维护客户端的信息,必须在
9、服务器端维持状态数据,实例,http:/host:portpath?querystring,主机,路径,查询字符串,HTTP 请求的结构,请求的结构,例子,POST /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 11 Symbol=MSFT,注意空行,Method URL Version Headers Message body,注意空行,响应的结构,例子,HTTP/1.1 2
10、00 OK Content-Type: text/xml; charset=utf-8 Content-Length: 75 ,HTTP 响应的结构,注意空行,Version Status-Code Description Headers Message body,注意空行,HTTP 的 GET 和 POST 方法,HTTP-GET HTTP-POST,例子,例子,GET /Trading/GetStockPrice.asp?Symbol=MSFT HTTP/1.1 Host: localhost,POST /Trading/GetStockPrice.asp HTTP/1.1 Host: l
11、ocalhost Content-Type: application/x-www-form-urlencoded Content-Length: 11 Symbol=MSFT,GET 和 POST 方法的区别,GET 方法通常没有消息主体 GET 方法支持最大1024个字节的查询字符串,POST 方法没有限制 POST 方法把查询字符串放在消息主体中传输,因此比 GET 方法支持更多的数据类型,.NET 中与 HTTP 相关的类,HttpWebRequest 由 WebRequest 派生,封装了对HTTP 协议的支持 HttpWebResponse 由 WebResponse 派生,封装了对
12、 HTTP 协议的支持 支持同步和异步操作,HttpWebRequest HttpWebResponse,System.Web,System.IO,StreamReader StreamWriter,HttpWebRequest 类,HttpWebRequest不使用构造函数来进行初始化,而是调用 WebRequest 的 Create 方法 GetResponse 方法向 RequestUri 属性中指定的 Internet 资源发出同步请求并返回包含该响应的 HttpWebResponse 实例,可以使用 BeginGetResponse 和 EndGetResponse 方法向 Inte
13、rnet 资源发出异步请求 向 Internet 资源发送数据时,GetRequestStream 方法返回用于发送数据的 Stream 实例,BeginGetRequestStream 和 EndGetRequestStream 方法提供对发送数据流的异步访问,同步调用与异步调用,在 .NET Framework 指定的异步调用方法的设计模式中,每个同步方法都有两个对应的异步方法,即一个 Begin 异步方法和一个 End 异步方法 客户端调用 Begin 方法启动该方法的异步调用,实质是指示开始进行方法调用,但立即返回,不需要等待结果 客户端调用 End 方法获取 XML Web Serv
14、ice 方法执行的结果,1.HttpWebRequest req = (HttpWebRequest ) WebRequest.Create(url); 2.req.ContentType=contentType; 3.req.Method = method; 4.req.ContentLength=content.Length; 5.Stream s; 6.s = req.GetRequestStream(); 7.StreamWriter sw = new StreamWriter(s,Encoding.ASCII); 8.sw.Write(content); 9.sw.Close();
15、10. HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 11. s = res.GetResponseStream(); 12.StreamReader sr = new StreamReader(s,Encoding.ASCII); 13. StringBuilder sb = new StringBuilder(); 14. char data = new char1024; 15. int nBytes; 16. do nBytes = sr.Read(data,0,(int)1024); 17. sb.Append(d
16、ata); 18. while (nBytes = 1024);,下面的代码是异步调用代码实现,1. public class Handler 2. 3. public void Callback(IAsyncResult ar) 4. HttpWebRequest req = (HttpWebRequest)ar.AsyncState; 5. HttpWebResponse res = (HttpWebResponse)req.EndGetResponse(ar); 6. Stream s = res.GetResponseStream(); 7. StreamReader sr = new
17、 StreamReader(s,Encoding.ASCII); 8. StringBuilder sb = new StringBuilder(); 9.char data = new char1024; 10.int nBytes; 11.do 12. 13.nBytes = sr.Read(data,0,(int)1024); 14.sb.Append(data); 15. while (nBytes = 1024); 16. 17. 18.,1.Stream s; 2.HttpWebRequest req = (HttpWebRequest )WebRequest.Create(url
18、); 3.req.ContentType=contentType; 4.req.Method = method; 5.req.ContentLength=content.Length; 6.s = req.GetRequestStream(); 7.StreamWriter sw = new StreamWriter(s); 8.sw.Write(content); 9.sw.Close(); 10. Handler h = new Handler(); 11.AsyncCallback callback = new AsyncCallback(h.Callback) 12. req.Begi
19、nGetResponse(callback, req); 13. .,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,建立一个简单的Web Service,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实
20、现之Web 服务代理,代理与 WSDL 运用 Wsdl.exe 生成代理 配置代理,代理和 WSDL,使用代理的原因 可以使用行业标准协议(包括 SOAP)通过网络与 Web 服务进行通信。也就是说,客户端和 Web 服务使用 SOAP 消息进行通信,SOAP 消息将输入和输出参数封装为 XML。但是这种编程手段非常复杂,对于 Web 服务消费者来说,代理类处理将参数映射为 XML 元素,然后通过网络发送 SOAP 消息,使用 Wsdl.exe 生成代理,调用 Wsdl.exe 的语法,wsdl options URL | Path,例子,例子,wsdl ,wsdl /l:VB /protoc
21、ol:HttpGet /out:Bank.vb ,Wsdl.exe 常用参数,代理类,由 wsdl.exe 生成的代理类包含所有方法的同步和异步调用形式 代理类中的方法可以正确处理传递的消息 默认情况下,代理类使用 SOAP 协议,但是有些 Web 服务只支持 HTTP 协议,必须在使用 wsdl.exe 时使用参数选定 HTTP 协议 代理类都是 HttpWebClientProtocol 类的派生类,配置代理,Url 属性 用于修改 Web 服务的 URL,实现容错或者负载平衡的功能 Credentials 属性 修改用于身份验证的消费者凭据 Timeout 属性 修改同步调用连接超时的默
22、认值,单位为毫秒 Proxy 属性 使用其他代理配置替代系统默认设置 AllowAutoRedirect 属性 防止 Web 服务器向其他服务器提交用户凭据,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 Wsdl.exe 生成代理示例,使用 SOAP 头自定义身份验证,在 Web 服务中使用 SO
23、AP 头 在一个 Web 服务消费者中使用 SOAP 头,在 Web 服务中使用 SOAP 头,在 Web 服务中使用 SOAP 头代码示例,using System.Web.Services; using System.Web.Services.Protocols; public class AuthHeader : SoapHeader public string Username; public string Password; public class AccountService : WebService public AuthHeader sHeader; WebMethod SoapHeader(sHeader) public decimal GetAcctBalance(string acctID) . ,红色:第一步 绿色:第二步 蓝色:第三步,修改配置使自定义身份验证模式生效,通过 SOAP 头的设计可以实现自定义的身份验证模式,要让这种模式生效还必须修改 web.config 文件, ,WSDL 中的 SOAP 头 Web 服务代理类和 SOAP 头 调用 Web 服务时使用 SOAP 头,在 Web 服务消费者
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧农业与农村电商技术创新考核试卷
- 职场沟通中的非言语信号解析考核试卷
- 薄膜在温室大棚中的抗结露性能分析考核试卷
- 电子游戏全球化中的国际竞争与合作策略考核试卷
- 保健品市场品牌差异化策略与产品生命周期管理研究考核试卷
- 应急心理疏导考核试卷
- 2025年中国LED扣灯数据监测报告
- 2025年中国EVA数据监测报告
- 2025年中国ABS鞋跟数据监测报告
- 2025年中国2-氯-3-喹啉甲醛数据监测研究报告
- 2025年全国普通话水平测试题标准试卷(共三十五套)
- 2025年全国保密知识竞赛经典试题库及答案(共270题)
- 2025年中医治未病服务工作计划及措施
- 资金入股公司合同范例
- 使用错误评估报告(可用性工程)模版
- 高中生物必修知识点总结(人教版复习提纲)高考基础
- 计量工程师招聘面试题与参考回答2024年
- TwinCAT 3 以FeedTable的形式实现NCI插补
- 小学小升初英语阅读理解练习题及答案
- 盘扣式卸料平台施工方案
- 2024年华阳新材料科技集团限公司校园招聘500人高频考题难、易错点模拟试题(共500题)附带答案详解
评论
0/150
提交评论