WCF简单教程(11)REST调用-创新互联

第十一篇:REST调用

创新互联科技有限公司专业互联网基础服务商,为您提供内江服务器托管高防物理服务器租用,成都IDC机房托管,成都主机托管等互联网服务。

上篇写的是Ajax调用WCF,今天写一篇如何以REST方式调用WCF服务。不知道REST是什么的同学,可以去google一下。对某些类型的应用,REST还是相当不错的方式,所以专门写一篇来说明一下开发方法。

老规矩,上代码,直接在代码注释里讲解。


1、服务端:

服务契约,我们定义CRUD4个方法(增查改删),对应HTTP METHOD分别为PUT/GET/POST/DELETE:

  1. using
  2. using
  3. using//这个命名空间要求引入System.ServiceModel.Web.dll
  4. namespace
  5. "WCF.Demo"
  6. publicinterface
  7. //WebInvoke中标明REST的相关属性,以这个方法为例,调用的Url是 ..../Data/key/data,HTTP方法是PUT,响应为Json格式(也可以换成xml)
  8. //这样如果客户端用PUT方法访问 ..../Data/1/100,就会映射到CreateData方法上来,并且传入key=1,data=100
  9. "Data/{key}/{data}""PUT"
  10. voidstringstring
  11. "Data/{key}""GET"
  12. stringstring
  13. "Data/{key}/{data}""POST"
  14. voidstringstring
  15. "Data/{key}""DELETE"
  16. voidstring

然后是实现类,这个简单,没什么可说的。

  1. using
  2. using
  3. using
  4. namespace
  5. //这个例子中用了Single Instance模式,这样m_DataDict的值才能保留住
  6. publicclass
  7. privatestringstringnewstringstring
  8. publicvoidstringstring
  9. publicstringstring
  10. return"NOT FOUND"
  11. publicvoidstringstring
  12. publicvoidstring

配置文件最关键了,注意里面绿色的注释部分:

  1. <?xmlversion"1.0"encoding"utf-8"?>
  2. <configuration>
  3. <system.serviceModel>
  4. <services>
  5. <servicename"Server.DataProvider">
  6. <!--必须使用webHttpBinding,而且要定义此endpoint的behaviorConfiguration(见后)-->
  7. <endpointaddress""binding"webHttpBinding"contract"Server.IData"behaviorConfiguration"restBehavior"/>
  8. <host>
  9. <baseAddresses>
  10. <addbaseAddress"http://localhost:8080/wcf"/>
  11. </baseAddresses>
  12. </host>
  13. </service>
  14. </services>
  15. <behaviors>
  16. <!--定义endpoint的behavior,webHttp节点表示启用web方式访问,这对REST是非常关键的-->
  17. <endpointBehaviors>
  18. <behaviorname"restBehavior">
  19. <webHttp/>
  20. </behavior>
  21. </endpointBehaviors>
  22. </behaviors>
  23. </system.serviceModel>
  24. </configuration>

最后发布服务,没什么特殊的,和以前一样:

  1. using
  2. using
  3. namespace
  4. class
  5. staticvoidstring
  6. usingnewtypeof
  7. "Running ..."

这个服务端没有用IIS做HOST,直接用自己的进程做的宿主(当然了,本质还是http.sys在工作)。


2、客户端

我们这回要用REST形式访问服务端,所以不是普通意义上的WCF客户端了,再也用不着那么麻烦的写配置文件创建Channel或者代理了。

  1. using
  2. using
  3. namespace
  4. class
  5. staticvoidstring
  6. //用一个WebClient就可以搞定了
  7. new
  8. //以PUT方式访问Data/1/100,会映射到服务端的CreateData("1", "100")
  9. "http://localhost:8080/wcf/Data/1/100""PUT"string
  10. //以GET方式访问Data/1,会映射到服务端的RetrieveData("1"),应该返回"100"
  11. "http://localhost:8080/wcf/Data/1"
  12. //以POST方式访问Data/1/200,会映射到服务端的UpdateData("1", "200")            
  13. "http://localhost:8080/wcf/Data/1/200""POST"string
  14. //再GET一次,应该返回"200"
  15. "http://localhost:8080/wcf/Data/1"
  16. //以DELETE方式访问Data/1,会映射到服务端的DeleteData("1")
  17. "http://localhost:8080/wcf/Data/1""DELETE"string
  18. //再GET一次,应该返回"NOT FOUND"
  19. "http://localhost:8080/wcf/Data/1"

OK,运行一下客户端,返回如下,和预期一致:

WCF简单教程(11) REST调用

需要补充一下,如果用IIS做HOST,比如DataService.svc.cs是实现类,一定要在DataService.svc中加上Factory,如下:

  1. <%@ ServiceHost Language="C#""true""WebServer.DataService""DataService.svc.cs""System.ServiceModel.Activation.WebServiceHostFactory"

表明不是使用默认的ServiceHostFactory,而是适应WEB HTTP开发的WebServiceHostFactory。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网页名称:WCF简单教程(11)REST调用-创新互联
本文链接:https://www.cdcxhl.com/article28/dpgojp.html

成都网站建设公司_创新互联,为您提供网站导航外贸建站定制开发App开发软件开发自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站