一、前言

      前两天去面试的时候和面试官交流的时候,他说他们用到的技术是WCF REST,小编当时没有接触过,仅仅接触过WCF,但是当小编仔细研究后,做了一个demo后,发现他们大体还是一样的,下面就分析一下REST是什么。

二、什么是REST?

      要说REST是什么,就必须先说说提出他的人——Roy Thomas Fielding,Fielding博士是HTTP和URI等Web架构标准的主要设计者,也是Apache HTTP服务器的主要设计者,深入理解REST等Web架构背后的工作原理。

REST(Representational State Transfer)强调概念和层次的划分、无状态和存储这类的东西,这类东西以他们提供的优势,在许多分布式的体系结构中十分常见。优势包括交互性、独立的改进、拦截、改进的拓展性、效率以及总体上的性能。


三、和WCF其他类型的区别

      实际上,区别仅仅是客户端访问我们的服务的方式,通常,一个WCF服务支持SOAP、REST和POX。

  • WCF SOAP Service

SOAP的核心是一个基于xml的消息结构,由于遵循SOAP协议,所以返回的内容以xml方式组织。并且客户端需要添加服务端引用才能使用,所以给开发和部署带来了不小的麻烦。并且服务过多的时候,生成引用文件会很大,不方便,维护困难。

  • WCF RESTful Service

WCF通过WebGetAttribute、WebInvokeAttribute(Get、put、post、delete)、UriTemplate定义的服务的调用方式,通过WebMessageFormat(xml、json)定义传输格式。WCF RESTful Srevice完全使用Http协议来进行,并且无需添加客户端引用,所以方便很多。

      实际上区别仅仅是客户端访问我们的服务的方式。通常的,一个WCF服务会使用SOAP,但是如果你构建了一个REST服务,客户端会使用一个不同的结构样式来访问你的服务(调用,如JSON一般的序列化,等等)。

      REST使用一些常见的HTTP方法来插入、删除、更新、返回信息,这些方法如下:

  • GET - 请求针对资源的特定表达式
  • PUT - 根据提供的表达式创建或者更新一个资源
  • DELETE - 删除指定的资源
  • POST - 提交数据来让指定的资源处理

      名词解释:

      WCF :Windows Communication Foundation,Windows通讯接口,分布式的面向服务编程的架构。

      SOAP:Simple Object Access Protocol简单对象访问协议,用来描述传递信息的格式。

      WSDL:Web Services Description Language,用来描述如何访问具体的接口。

      UDDI:Universal Description Discovery and Integration,用来管理,分发,查询webService 。


四、为什么使用REST?

      服务,它能够支持多种语言、平台或系统的访问。它可以被iPhone、Android、Windows Phone、.Net Web应用、Java或者PHP所使用。使用Web服务,使用统一的系统来将它展现给每个人。

      1.更少的开销(对于每次调用不需要包裹SOAP外壳)

      2.更少的重复(HTTP已经提供了诸如DELETE、PUT、GET等等的方法,否则将表现在一个SOAP外壳当中)。

      3.更标准化 - HTTP方法很容易理解并且操作一致。一些SOAP实现可能变得过分挑剔。

      4.对于人类有更强的可读性和可测试性(很难仅仅用一个浏览器来测试SOAP)。

      5.不需要使用XML(好吧,对于SOAP貌似也不需要使用,不过这很难成立,因为你已经开始解析外壳了)

      6.使得SOAP(有点)容易。但正如我提到的,你正在抽出大量的底层冗余。确实,在理论上,在避免装载功能相同的顶层这一项上,SOAP能够超过其他的转换;但是在现实中你可能做的几乎所有SOAP工作,都是通过HTTP的。

四、小结

      总有自己不太知道的地方,所以还是要多多的学习,不断的理解新的知识,接触了才会有新的见解。