REST并非是标准而是一种再互联网环境下开发提供服务的方法规范。REST 遵循 web 应用程序的体系结构风格,用户通过类似于选择翻页链接去往下一页的方式访问web应用程序。REST基于唯一URI标识的资源。
只要服务遵从定义的标准或特性,我们可以将这个服务称为 rest。REST 并不与任何特定的平台联系在一起, 当前在Web上使用 HTTP 完成的。
关注点分离是将用户界面与数据存储分离的原则。这使得程序的用户界面能够移植到其他的平台,并通过简化服务器组件来提高可伸缩性。
每个发向服务器的请求都应该带有理解完成请求所需的全部信息
返回的数据能够缓存以便于用户再其他时间调用,这能够提升性能并且减少网络通信。
代理服务器或缓存服务器等中间服务器可用于提高性能或引入安全性。
统一的接口 (如 HTTP HTTP GET, POST, DELETE, PUT) 用于访问资源。
统一资源标识符-这是互联网上资源的唯一标记。web上的每个资源都有这样一个唯一标识符-通用标识符 (例如, URL)。所有的web浏览器,服务器,应用都能理解这个标识符,这使得人们能够再互联网上无障碍的连接交换信息。
例如:XML, HTML, and JSON.
HTTP创造了一种与web上的资源进行通信的标准方式。获取、放置、删除、张贴是访问资源的一些常用方法。
设计RESTful服务的第一步是确定需要公开的资源,然后是把这些资源映射到url。我们不应该局限在应用的方法设计上面,而是应该致力于设计资源的url。有许多可以和REST配合使用的数据格式,xml是最简单也是用的最多的。但是json也常常用到。
WCF并非仅仅能用来否剑SOAP服务,他是一个具有通用编程模型并且完全基于插件的通信基础框架。WCF运行时的基础工作是监听处理来自网络位置的消息,并将他们传递给应用程序(服务),使用WCF开发REST应用程序是一项简单的任务。微软提供了一个用来创建新项目的rest模板,它能够在创建除一个resst的基础结构。
如果您查看上述描述, 您将注意到这个缺陷, 此服务没有内置任何安全方面。但是, 当我们构建服务公开端点时, 应该注意安全问题。rest风格的服务只http端点, 因此使用 http (如 HTTPS、证书) 实现的所有安全方面也可以用 rest 实现。
有两种类型的托管服务、自寄宿web服务和与应用程序服务器(如 IIS)承载的 web 服务。自寄宿web服务中, 大部分的安全方面都应该在代码中得到注意;另一方面, 在 iis 中托管时, iis中设置会处理安全问题。
开放口的安全性由WebHttpBinding的安全属性设置。安全属性的类型为WebHttpSecurity,用于确定绑定所需的安全模式以及客户端凭据类型。WebHttpSecurity有两个属性: Mode 类型 WebSecurityHttpMode)和Transport (类型为 HttpTransportSecurity)。可使用WebHttpSecurityMode 指定的安全级别有三:
类型为HttpTransportSecurity的WebHttpBinding.Security.Transport有助于对客户端进行身份验证。它有以下三属性:
HttpClientCredentialType的值可以是下列任一项: None, Basic, Digest, NTLM, Windows, Certificate.
在IIS上承载终结点时, 使用web.config文件进行配置,可以对运行服务的虚拟目录进行配置。我们需要知道客户机配置和虚拟目录配置。
一旦经过验证,下一步就是授权客户端他们能做什么,他们不能做什么。
1.模拟: 通过模拟客户端, 授权被委派给另一个层。例如, 当客户端试图将数据插入或更新到 sql server 数据库中时, 如果客户端没有权限, sql server 将引发异常, 这可能会冒泡回客户端。
2.基于角色: 通过限制对某些 Windows 用户或组的操作的访问来实现授权。
从开发者角度来说主要缺点是没有主数据。因而需要料及其中的实现细节。从安全性的角度来说,RESTful服务依赖于HTT的安全性。
当我们计划设计一个专门在web上使用的应用程序时, 或者当我们需要快速客户端集成时, 可以使用REST。
在设计面向服务的体系结构的应用时, 它互联了许多系统并使用了许多传输通道, 所以最好使用 SOAP。
http://www.linkedin.com/pulse/rest-representational-state-transfer-madan-kumar