网站大量收购闲置独家精品文档,联系QQ:2885784924

WebService的一些封装技巧.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WebService的一些封装技巧

总结WebService的一些封装技巧2011-07-12 09:47 sxwgf 博客园 字号:T | T讨论一下WebService的一些封装技巧,也就是会碰到的常见问题的解决,希望能给大家以后在用WebService时一点帮助和启发吧。AD: 2014WOT全球软件技术峰会北京站 课程视频发布今天早上起来,想谈谈.NET中的WebService,当然我不想讲什么是WebService,或者怎么用WebService,因为那个大家随便Google一下前100页都能找到答案。今天我想来分享一下我在用WebService中的一些技巧(至少我认为是技巧,还有点成就感),希望能给大家以后在用WebService时一点帮助和启发吧。一、问题诞生 -- 大部分解决方案的背后总是一些头痛的问题很早以前就用过传说中的WebService,但一直是用常规的思路在用:创建WebService项目--写Web服务方法-- 在项目中添加Web引用--调用Web方法。这样貌似很好,非常符合规范,在一段时间内效果也还可以,但渐渐的随着项目的扩大和同时参与项目的人员增多,就越来越觉得这种常规的方法很是不爽,为什么呢?我每次修改WebService端(添加、删除Web方法,以及修改方法名称),在引用端我都要更新WebService引用,其实是就是更新WSDL文件,很是烦人。二、化分为合 -- 传说分久必合,合久必分好吧,既然增加、删除、修改web方法名都会引起WSDL的更新,那么我们索性用一个统一的方法来作为webservice的访问入口吧,然后内部用switch case来区分调用哪个方法,先贴代码吧,再来简单讲讲:统一访问接口IRemoteCall:public?interface?IRemoteCall{???? ?byte[]?GeneralCall(string?methodName,?params?byte[]?param);}?然后定义一个WebService并实现以上接口(以前还没真在webservice上实现过接口,哈哈):[WebService(Namespace?=?/)][WebServiceBinding(ConformsTo?=? ?WsiProfiles.BasicProfile1_1)][ToolboxItem(false)]public?class?BlogService?:?System.Web.Services.WebService,?IRemoteCall{???? ?[WebMethod(EnableSession?=?true)]??? ??public?byte[]?GeneralCall(string?methodName,?params?byte[]?param)????{???????? ?switch?(methodName)??????? ??{?????????? ???case?LoadBlog:?????????? ??????{??????????????? ?????long?blogId?=?Serializer.DeserializeToObjectlong(param);????????????????? ???BLLBlogArtical?ba?=?new?AppBlog().LoadBlog(blogId);??????????????? ?????return?Serializer.SerializeToBinary(ba);?????????? ??????}????????? ????case?DeleteBlog:???????? ????????{?????????????? ??????//To?Do?Your?Code?????? ??????????????return?null;???????? ????????}?? ????????}?????}}?这里为什么要定义接口IRemoteCall呢,主要是为接下来统一调用webservice服务的,所有实现这个接口的webservice类都可以通过GeneralCall来完成调用,待会将webservice访问器的时候会具体讲到,这里主要讲讲这个switch case。这里我们定义了一个统一的访问入口?byte[]?GeneralCall(string?methodName,params?byte[]?param)?意思是:传入要调用的方法名称以及序列化后的参数,返回序列化后的结果。这里为了统一数据,我们均对参数和返回值都序列化成byte数组,即用Serializer.SerializeToBinary(object)来实现,这样所有调用就都统一了格式。有人可能会提出质疑,这样方法名称都已字符串形式是不是会显得难

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档