Web Service 编程第五章讲稿.ppt_第1页
Web Service 编程第五章讲稿.ppt_第2页
Web Service 编程第五章讲稿.ppt_第3页
Web Service 编程第五章讲稿.ppt_第4页
Web Service 编程第五章讲稿.ppt_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebService编程-C#.NET,第五章WebService基础,本章要点,WebService体系结构:WebService是自包含模块化的应用程序,它可以在网络(通常称为Web)中被描述、发布、查找以及调用。实例介绍:本章通过两个实例的分析,帮助读者及时应用学习的知识,更快更好地掌握WebService的开发。,Web服务简介,Web服务的定义Web服务是可以使用标准Internet协议进行访问的可编程应用程序逻辑基于Internet技术实现可以重复使用的黑匣功能是未来分布式应用程序的发展方向,XMLWebService的定义,XMLWebService实现了在异类系统之间以XML消息的形式进行数据交换远程访问数据和应用程序逻辑并不是新的技术,但以松耦合的方式执行该操作却是一个全新的概念在客户端和服务器之间要求接收方可以理解收到的消息,客户端和服务器共同遵守一个协定(通常在Web服务中使用WSDL和XSD),然后通过在指定的传输协议(例如HTTP)之上生成遵守该协定的消息来进行通信使用文本格式(如XML)的灵活性使消息交换随时间的推移以一种松耦合的方式进化成为可能,Web服务的功能和优点,黑匣功能使用户不需要了解服务具体是如何实现的功能的粒度没有限制,大型和小型系统都可以使用既可以访问静态资源也可以访问动态资源便于和其他Web服务集成平台无关,互操作性强支持多种语言把现有系统改造为Web服务比较容易全部采用业界标准而不是厂商标准,TCP/IP,System.Net.Sockets,Sockets,HTTP,XMLorBinaryFormats,SOAP,System.Net.Sockets,System.Net,System.Runtime.Remoting,System.Web.Services,Web技术栈与.NET,面向服务的体系结构,面向服务的体系结构的组成部分,服务提供者网络中负责提供软件服务接口、实现特定功能的节点服务消费者网络中使用服务提供者定义的接口,实现业务解决方案的节点服务代理网络中负责存储服务描述,并帮助服务消费者定位服务的节点,各组成部分间的基本操作过程,服务的发布服务提供者把服务发布到服务代理,包括服务接口定义、服务提供者位置以及其他相关文件服务的查找服务消费者在服务代理那里查找需要的服务服务的绑定服务消费者绑定由服务提供者提供的服务,这个过程包括提供商对消费者的身份验证,Web服务体系结构简介,Web服务是面向服务体系结构的具体实现,Web服务体系结构的组成部分,Web服务的服务提供者由ASP.NET页面来实现,扩展名是.asmxWeb服务的服务代理UDDI提供的目录服务Web服务的服务消费者采用SOAP或HTTP协议与服务提供者进行通信,并且支持必要的安全身份验证,Web服务体系结构中各部分的功能,Web服务提供者Web服务消费者Web服务代理,Web服务提供者,Web服务可以运行在IISWeb服务器上.NET公共语言运行库Web服务提供者的例子,IIS与Web服务,IIS提供对HTTP协议的侦听IIS可以通过使用ISAPI体系结构来同时提供多个独立的Web服务,其中ISAPI起到分选器的作用,可以根据客户端访问文件的后缀名,将不同类型的请求定向到不同的应用程序来进行处理IIS有完整的安全结构,可以提供身份验证和数据加密等多种安全服务,Web服务消费者,最低功能要求可以使用该服务支持的协议来调用服务提供者的Web服务接口在消息发往服务提供者前进行正确的格式化服务定位不使用硬编码形式,可以动态定位代理异步调用消费者在等待服务完成的同时可以处理其他任务Web服务消费者的示例,代理的任务,负责处理底层的协议解析字节流以提取数据验证入站数据流构造出站数据包,Web服务代理,在提供商和代理之间完成的操作对Web服务进行分类提供Web服务的协定信息提供Web服务的文本描述提供Web服务的文档链接提供Web服务的定位信息在代理和消费者之间完成的操作最重要的功能就是实现查找UDDI注册,UDDI注册包含的信息,Web服务的位置、协定信息和标识符行业的分类信息Web服务的技术信息,Web服务基础结构,Web服务编程模型,Web协议HTTPSOAPXML无状态松耦合通用数据格式SOAP协议基于XML格式Web服务描述文件使用XML格式从Web服务返回的数据使用XML格式UDDI注册Web服务使用XML格式的文档ASP.NET使用XML格式的配置文件,HTTP协议基本原理,HTTP协议概述HTTP请求与HTTP响应的结构HTTP的GET与POST方法,URL、URI和URN,URI,UniformResourceIdentifier统一资源标识符,用字符串惟一标识信息资源URL,UniformResourceLocator统一资源定位符,通过“通讯协议网络地址”字符串惟一标识信息位置和资源访问途径URN,UniformResourceName统一资源命名符,用于惟一标识全球范围内由专门机构负责的稳定的信息资源,HTTP协议概述,URL结构无状态协议在客户端发出HTTP请求并收到服务器端响应后,连接就会断开,下次的访问与前一次的访问无关,因此如果需要维护客户端的信息,必须在服务器端维持状态数据,实例,http:/host:portpath?querystring,主机,路径,查询字符串,HTTP请求的结构,请求的结构,例子,POST/TheStockExchange/Trading/GetStockPrice.aspHTTP/1.1Host:localhostContent-Type:application/x-www-form-urlencodedContent-Length:11Symbol=MSFT,注意空行,MethodURLVersionHeadersMessagebody,注意空行,响应的结构,例子,HTTP/1.1200OKContent-Type:text/xml;charset=utf-8Content-Length:75,HTTP响应的结构,注意空行,VersionStatus-CodeDescriptionHeadersMessagebody,注意空行,HTTP的GET和POST方法,HTTP-GETHTTP-POST,例子,例子,GET/Trading/GetStockPrice.asp?Symbol=MSFTHTTP/1.1Host:localhost,POST/Trading/GetStockPrice.aspHTTP/1.1Host:localhostContent-Type:application/x-www-form-urlencodedContent-Length:11Symbol=MSFT,GET和POST方法的区别,GET方法通常没有消息主体GET方法支持最大1024个字节的查询字符串,POST方法没有限制POST方法把查询字符串放在消息主体中传输,因此比GET方法支持更多的数据类型,.NET中与HTTP相关的类,HttpWebRequest由WebRequest派生,封装了对HTTP协议的支持HttpWebResponse由WebResponse派生,封装了对HTTP协议的支持支持同步和异步操作,HttpWebRequestHttpWebResponse,System.Web,System.IO,StreamReaderStreamWriter,HttpWebRequest类,HttpWebRequest不使用构造函数来进行初始化,而是调用WebRequest的Create方法GetResponse方法向RequestUri属性中指定的Internet资源发出同步请求并返回包含该响应的HttpWebResponse实例,可以使用BeginGetResponse和EndGetResponse方法向Internet资源发出异步请求向Internet资源发送数据时,GetRequestStream方法返回用于发送数据的Stream实例,BeginGetRequestStream和EndGetRequestStream方法提供对发送数据流的异步访问,同步调用与异步调用,在.NETFramework指定的异步调用方法的设计模式中,每个同步方法都有两个对应的异步方法,即一个Begin异步方法和一个End异步方法客户端调用Begin方法启动该方法的异步调用,实质是指示开始进行方法调用,但立即返回,不需要等待结果客户端调用End方法获取XMLWebService方法执行的结果,1.HttpWebRequestreq=(HttpWebRequest)WebRequest.Create(url);2.req.ContentType=contentType;3.req.Method=method;4.req.ContentLength=content.Length;5.Streams;6.s=req.GetRequestStream();7.StreamWritersw=newStreamWriter(s,Encoding.ASCII);8.sw.Write(content);9.sw.Close();10.HttpWebResponseres=(HttpWebResponse)req.GetResponse();11.s=res.GetResponseStream();12.StreamReadersr=newStreamReader(s,Encoding.ASCII);13.StringBuildersb=newStringBuilder();14.chardata=newchar1024;15.intnBytes;16.donBytes=sr.Read(data,0,(int)1024);17.sb.Append(data);18.while(nBytes=1024);,下面的代码是异步调用代码实现,1.publicclassHandler2.3.publicvoidCallback(IAsyncResultar)4.HttpWebRequestreq=(HttpWebRequest)ar.AsyncState;5.HttpWebResponseres=(HttpWebResponse)req.EndGetResponse(ar);6.Streams=res.GetResponseStream();7.StreamReadersr=newStreamReader(s,Encoding.ASCII);8.StringBuildersb=newStringBuilder();9.chardata=newchar1024;10.intnBytes;11.do12.13.nBytes=sr.Read(data,0,(int)1024);14.sb.Append(data);15.while(nBytes=1024);16.17.18.,1.Streams;2.HttpWebRequestreq=(HttpWebRequest)WebRequest.Create(url);3.req.ContentType=contentType;4.req.Method=method;5.req.ContentLength=content.Length;6.s=req.GetRequestStream();7.StreamWritersw=newStreamWriter(s);8.sw.Write(content);9.sw.Close();10.Handlerh=newHandler();11.AsyncCallbackcallback=newAsyncCallback(h.Callback)12.req.BeginGetResponse(callback,req);13.,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,建立一个简单的WebService,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现,客户端程序实现之Web服务代理,代理与WSDL运用Wsdl.exe生成代理配置代理,代理和WSDL,使用代理的原因可以使用行业标准协议(包括SOAP)通过网络与Web服务进行通信。也就是说,客户端和Web服务使用SOAP消息进行通信,SOAP消息将输入和输出参数封装为XML。但是这种编程手段非常复杂,对于Web服务消费者来说,代理类处理将参数映射为XML元素,然后通过网络发送SOAP消息,使用Wsdl.exe生成代理,调用Wsdl.exe的语法,wsdloptionsURL|Path,例子,例子,wsdl,wsdl/l:VB/protocol:HttpGet/out:Bank.vb,Wsdl.exe常用参数,代理类,由wsdl.exe生成的代理类包含所有方法的同步和异步调用形式代理类中的方法可以正确处理传递的消息默认情况下,代理类使用SOAP协议,但是有些Web服务只支持HTTP协议,必须在使用wsdl.exe时使用参数选定HTTP协议代理类都是HttpWebClientProtocol类的派生类,配置代理,Url属性用于修改Web服务的URL,实现容错或者负载平衡的功能Credentials属性修改用于身份验证的消费者凭据Timeout属性修改同步调用连接超时的默认值,单位为毫秒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服务中使用SOAP头在一个Web服务消费者中使用SOAP头,在Web服务中使用SOAP头,在Web服务中使用SOAP头代码示例,usingSystem.Web.Services;usingSystem.Web.Services.Protocols;publicclassAuthHeader:SoapHeaderpublicstringUsername;publicstringPassword;publicclassAccountService:WebServicepublicAuthHeadersHeader;WebMethodSoapHeader(sHeader)publicdecimalGetAcctBalance(stringacctID).,红色:第一步绿色:第二步蓝色:第三步,修改配置使自定义身份验证模式生效,通过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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论