博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过HTTP协议标准动作消费REST WCF 服务
阅读量:5754 次
发布时间:2019-06-18

本文共 1833 字,大约阅读时间需要 6 分钟。

  前几节介绍了REST WCF 服务的一些基本的特点,本节说明一下,如何基于HTTP的标准动作来使用REST WCF 服务。由于RESTful服务的架构风格基于HTTP协议,并且其设计原则中明确指出:通过通用的连接器接口来使用资源。对于REST架构风格的服务,主要通过它8个动作中的4个来使用资源,即:GET,POST,PUT,DELETE。

  在RESTful 服务中,GET,POST,PUT,DELETE的标准操作如下:
  GET:获取资源
  POST:修改资源
  PUT:创建资源
  DELETE:删除资源

本节涉及的要点如下:
1、如何定义接口规范,使客户端通过能通过HTTP协议的标准动作来使用REST WCF资源。
2、客户端如何通过HTTP标准动作使用使用资源
首先介绍一下开发环境:
VS2008 SP1。由于是基于Framework3.5的平台,所以本节介绍的只是REST WCF 3.5的一些特点。Ddmo结构图:

1、接口规范的定义:
  对REST 架构风格有一些了解的同学都知道,在System.ServiceModel.Web程序集中,微软为我们提供了两个特性:WebGetAttribute、WebInvokeAttribute.
前几节也做过一个简要的介绍,WebGetAttribute通过名称可以得知,它是用来获取资源的,所以它使用的HTTP动作是GET。在REST WCF中,其他的几个动作都是在WebInvokeAttribute中定义的。
  REST WCF中,就是通过在WebGetAttribute与WebInvokeAttribute中,通过UriTemplate属性定义了资源的使用方式。另外还可以通过RequestFormat、ResponseFormat定义客户端请求时使用的数据格式以及服务端返回给客户端的数据格式。
  在本例中,通过服务契约定义来定义接口规范以及客户端的使用规范。如下图示:

注:UriTemplate中类似Student/{name}中的{name}即为所定义方法中所需参数的占位符。
2、客户端使用REST WCF 。
2.1使用HTTP GET 动作获取资源:

string getMsg = client.DownloadString("http://localhost:6012/Student.svc/Student/zhangRest");Console.WriteLine(string.Format("get方法获取到的学生信息:{0}", getMsg));

  

2.2使用HTTP POST 动作修改资源:

string postMsg = client.UploadString("http://localhost:6012/Student.svc/Student/lizhi/0105245687", "POST",string.Empty);Console.WriteLine(string.Format("post方法修改到的学生信息:{0}", postMsg));

  

2.3使用HTTP DELETE 动作删除资源:

string deleteMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangRest", "DELETE", string.Empty);Console.WriteLine(string.Format("delete方法删除到的学生信息:{0}", deleteMsg));

  

2.4使用HTTP PUT动作添加资源:

string addMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangsan/0102356897", "PUT", string.Empty);Console.WriteLine(string.Format("put方法添加的学生信息:{0}", addMsg));

  

四种动作的使用方式如上所示。

  在REST WCF中,URI(Uniform Resources Identifier)就是在服务契约中定义通过UriTemplate定义的,而不像在SOA架构下的服务中直接使用方法名。

 

转载地址:http://nvckx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
DELL服务器RAID配置管理
查看>>
mtr命令详解诊断网络路由
查看>>
RHEL6.1部署Oracle 11g
查看>>
myeclipse在weblogic中的开发
查看>>
Linux文件系统十问,你知道吗?
查看>>
RAID5和RAID10的比较
查看>>
正则表达式和grep的介绍及使用
查看>>
CCNP学习之路之PVLAN(私有vlan)
查看>>
XtraGrid滚轮翻页
查看>>
ubuntu16和win10双系统时间不对
查看>>
从今天开始,要努力啊,每天坚持写点东西
查看>>
木门工厂木门、门套、套线公式和算法
查看>>
mongodb的命令行操作命令详解(增删改查、高级查询)
查看>>
[excel]对重复行汇总累计,不重复行直接统计
查看>>
查找文件的路径
查看>>
Exchange 2010批量删除指定主题邮件的一些事
查看>>
我的友情链接
查看>>
[C#自学第一天] Excel的读取和写入
查看>>
linux/android mk文件
查看>>