创建一个示例和WebMethod特性解析.doc_第1页
创建一个示例和WebMethod特性解析.doc_第2页
创建一个示例和WebMethod特性解析.doc_第3页
创建一个示例和WebMethod特性解析.doc_第4页
创建一个示例和WebMethod特性解析.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

创建一个示例和WebMethod特性解析本系列文章导航创建一个示例和WebMethod特性解析WebService特性和数组类型解析类和结构体解析利用YAHOO公开API做天气预报Web服务Webservice 的设计和模式Remoting和Webservice的区别现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正。希望能给跟我一样初学Web服务的朋友一些帮助。Web服务的宗旨是创建不需要用户界面就能与其他应用程序交互的Web应用程序。它是松耦合的,并与服务器端和客户端所使用的操作系统、编程语言都无关,这样就在一定的情况下就会使你的效率大大提高。但创建Web服务必须保证的是,服务器端和客户端都要支持行业标准协议HTTP、SOAP(simple object access protocal 简单对象访问协议)和XML。创建Web服务的过程:(1):打开VS,创建一个ASP.NET WEB服务应用程序;(2):输入下列代码,这是一个有关学生信息的二维数组和几个方法/构造并填充info数组string,strStuInfo=200511020120,贰零零五届,人文法律学院,社会工作,(1)班,无悔,1,200511020121,贰零零五届,人文法律学院,社会工作,(1)班,梁需,2,200511010122,贰零零五届,人文法律学院,法律专业,(1)班,陆磊,3,200511010220,贰零零五届,人文法律学院,法律专业,(2)班,白灵,4,200511010221,贰零零五届,人文法律学院,法律专业,(2)班,剑付,5,200511020222,贰零零五届,人文法律学院,社会工作,(2)班,敬意,6,200511100120,贰零零五届,化工生物学院,生物制药,(1)班,黄兴,7,200511100221,贰零零五届,化工生物学院,生物制药,(2)班,蕾蕾,8,200511100322,贰零零五届,化工生物学院,生物制药,(3)班,白冰,9,200611120120,贰零零六届,化工生物学院,发酵工程,(1)班,书并,10,200611120121,贰零零六届,化工生物学院,发酵工程,(1)班,小鱼,11,200611120421,贰零零六届,化工生物学院,发酵工程,(4)班,声声,12,;WebMethod(Description=根据学号获得学生的姓名)publicstringGetName(stringstrStuNum)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(strStuNum,strStuInfoi,0,true)=0)returnstrStuInfoi,5.ToString();return您输入的学号不存在;WebMethod(Description=根据学号获得学生的专业和班级)publicstringGetClass(stringstrStuNum)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(strStuNum,strStuInfoi,0,true)=0)returnstrStuInfoi,3.ToString()+strStuInfoi,4.ToString();return您输入的学号不存在;WebMethod(Description=根据学号获得学生的入学时间)publicstringGetYear(stringstrStuNum)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(strStuNum,strStuInfoi,0,true)=0)returnstrStuInfoi,1.ToString();return您输入的学号不存在;WebMethod(Description=根据学号获得学生的学院publicstringGetCollege(stringstrStuNum)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(strStuNum,strStuInfoi,0,true)=0)returnstrStuInfoi,2.ToString();return您输入的学号不存在;WebMethod(Description=点击次数,EnableSession=true)publicintHitCounter()if(SessionHitCounter=null)SessionHitCounter=1;elseSessionHitCounter=(int)SessionHitCounter)+1;return(int)SessionHitCounter);(3)生成Web服务,在浏览器中打开(效果如下)(4)创建个其他程序,调用就可以了!WebMethod特性的EnableSession属性此属性默认为false。如果设置为true,web方法将会启用会话状态,且继承自WebService类,那么会话状态集合可以使用WebService.Session属性访问,如果没有集成,则可以直接从HttpContext.Current.Session访问。上面代码中HitCounter()方法为每个会话准备了单击计数器。会话状态为应用程序增加了额外的开销,如果移除会话状态可以提高性能。然而,会话状态作为全局变量很有用,因为它能够超出成员变量的工作范围。需要注意的是:会话状态在Web服务中是通过cookies实现的,如果传输机制不是HTTP的话,则不可用。WebMethod特性的MessageName属性Web服务禁止使用函数重载。MessageName属性可以解决由多个相同的名称的方法造成的无法识别的问题,它允许对每一个方法的重载使用唯一的别名。当从在方法在SOAP消息中引用时,SOAP将使用MessageName而非方法名。在上面的例子中,为了试验这个属性,我改了一下,写两个GetCollege()方法。WebMethod(Description=根据学号获得学生的学院,MessageName=GetCollegeStuNum)publicstringGetCollege(stringstrStuNum)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(strStuNum,strStuInfoi,0,true)=0)returnstrStuInfoi,2.ToString();return您输入的学号不存在;WebMethod(Description=根据排名获得学生的学院,MessageName=GetCollegeStuRank)publicstringGetCollege(intintStuRank)for(inti=0;istrStuInfo.GetLength(0);i+)if(String.Compare(intStuRank.ToString(),strStuInfoi,6,true)=0)returnstrStuInfoi,2.ToString();return您输入的学生排名不存在;可是当你从新生成的时候,会发现不会在报错了,但是在浏览器打开时,却会出现下面的问题。后来看书发现了这个问题的原因在于:由于默认WebServiceBinding特性遵循WS-1 BP V1.1,如果两个方法处于相同的数据绑定,那么该规范不允许方法的重载(尽管使用了MessageName属性)可以做两种选择:(1)重命名方法,当然用这种方法最好是客户端没有链接到Web服务。(2)创建一个新的绑定来代特重载方法做法如下:1)为类添加新的属性(文件的摘要下面),代码如下:WebService(Namespace=/)WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1,Name=OverloadedGetCollege,EmitConformanceClaims=true)ToolboxItem(false)多添加了这个两个属性:Name = OverloadedGetCollege,EmitConformanceClaims=true2)在任意一个GetCollege()方法上部添加SoapDocumentMethod特性: SoapDocumentMethod(Binding=Over

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论