2年前REST就已经成为Web API部署方式的主流了,而且一直保持这种发展势头,现在基本上都是REST服务,SOAP在企业内网还存在。...例如前面的代码段,如果要求从客户端来执行更高版本的 Web 服务的 DoSomething 方法的两个输入参数 — 或需要返回字符串值之外的另一个字段 —— 给老客户重大更改是不可避免的。...当然,您始终可以创建平行的 DoSomething_v2 方法,要带两个输入的参数,但久而久之会搞乱您的 Web 服务接口和消费者,服务变得越来越丑,用WCF实现的Web服务就是属于这种情况,下面我们介绍...QueueTicketRequest request); Ticket Any(PullTicketRequest request); } ServiceStack 规定每个唯一的请求是对象所标识唯一的请求,这意味着你不能重用...这种强制措施,简化了 rest 风格的 Web 服务实现。
REST是一种架构风格,它将每个服务对待为资源并通过Http协议方法(GET、POST、PUT、DELETE)获取数据。 REST风格的架构包含客户端和服务端。...比如:WS-Security是实现安全的规范 未定义标准规范 SOAP 消息包含了一个信封,里面包含了SOAP的Header、Body(用来存储你实际要发送的信息) REST 使用HTTP集成的header...它在现有WCF消息管道之上,构建简单的,基于非SOAP的HTTP服务。 它不像WCF REST service那样需要配置乏味的配置文件。 使用WEB API创建服务十分简单。...WCF Rest 将WCF 作为 WCF Rest 服务使用,您必须启用 webHttpBindings....主要的区别有以下几点: 在WEB API 路由模式中 {action}参数是可选的,但是你可以自行包含 一个 {action} 参数。在ASP.NET MVC中 {action} 参数是强制的。
前言 首先我们来了解一下WCF Rest吧。 Rest是一种设计风格,不是一个标准。 Rest通常使用HTTP,URI,XML,HTML等流行的协议和标准。...; case"2": return "Hello Asp.Net Mvc3.0 WCF Rest!"...routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的...URL new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 参数默认值...; case"2": return "Hello Asp.Net Mvc3.0 WCF Rest!"
WCF Web API允许开发人员通过HTTP开放他们的应用程序、数据和服务。...他们还可以利用网络的高速缓存和代理的基础设施,通过提供适当的控制和实体头的方式,在下个版本的WCF(.NET 4.5)设计了RESTful风格的,并不强制开发人员使用Rest的应用程序,你的应用程序可以从...REST风格获得可发现、演化性和可扩展性。...WCF的Web API也包含了简化的HTTP Body到.NET类转换的扩展方法。客户端还包括HttpRequestMessage和HttpResponseMessage是强类型的HTTP消息交涉。...在我们开发新的WCF HTTP版本可以直接访问底层的HTTP请求,并通过操作,而不是通过像WebOperationContext静态API的参数响应。
业务层通常包含有大量的业务逻辑。他也是实现接口层定义的接口的地方,也是保持服务层的轻量以及关注服务端客户端的契约以及通讯的地方。 数据层通常就是封装数据访问方法并给业务层提供抽象数据模型。...使用远程过程调用的方法来实现(RPC),比如会定义如下函数调用: public interface IService { string DoSomething(int input); } 这种RPC的方式使得服务不能很好的应对变化...面对这种情况,可以使用数据传输对象(DTO) 来定义前面的接口中的相关参数。...在ServiceStack中,方法和方法之间的区别是通过服务的参数及请求对象Request DTO来区分的,而不是像WCF中通过方法名称来区分。...这就表示一个请求DTO对象不能在ServiceStack的多个Service中复用。 创建服务端 有了服务接口层之后,需要编写服务端以实现这些逻辑,也就是前面定义的ITicketService接口。
也就是说处理这个Message所需要的上下文环境都应该包含在这个Message当中。...2)扩展 REST 鼓励每项资源包含处理特殊请求所需的所有必要状态。满足这一约束时,RESTful 服务更易于扩展且可以没有状态。...有一些虽然有工具包,但采用的是旧标准,不能保证与使用更新标准的工具包可靠沟通。...WCF 4的REST创建可以下载模板 WCF REST Service Template 40(CS),具体参考 Getting started with RESTful web services in...WCF 4。
按需代码(可选) 上述内容来自《REST实战》译者序。.NET上的分布式应用架构风格从WCF开始统一了Remoting,SOAP,以及对REST的支持。...现在我们来看下最新的.NET平台上都有哪些REST框架和工具库: WCF WebHttp Services in .NET 4 :WCF 3.5开始支持REST,实现方式上还是RPC 方式,Windows...Communication Foundation (WCF)Web HTTP 编程模型可以向非 SOAP 终结点公开 WCF 服务操作。...Open Rasta:OpenRasta是一个基于MIT协议开源的支持.NET 2.0以上的Rest开发框架,重点围绕这资源和HTTP方法开发的REST框架。...地址:http://restsharp.org/ Hammock是个免费开源的框架,托管在github上 对网络操作进行了很好的封装,包含OAuth。
REST基于唯一URI标识的资源。 只要服务遵从定义的标准或特性,我们可以将这个服务称为 rest。REST 并不与任何特定的平台联系在一起, 当前在Web上使用 HTTP 完成的。....NET 4 / REST / WCF WCF并非仅仅能用来否剑SOAP服务,他是一个具有通用编程模型并且完全基于插件的通信基础框架。...WCF运行时的基础工作是监听处理来自网络位置的消息,并将他们传递给应用程序(服务),使用WCF开发REST应用程序是一项简单的任务。...rest风格的服务只http端点, 因此使用 http (如 HTTPS、证书) 实现的所有安全方面也可以用 rest 实现。...授权 一旦经过验证,下一步就是授权客户端他们能做什么,他们不能做什么。 1.模拟: 通过模拟客户端, 授权被委派给另一个层。
要遵循REST的原则, protocol buffers 应作为一个新的超媒体类型的代表。 在当前版本(.NET 4) 的Windows通讯基础(WCF),包含一个新的媒体类型,需要相当数量的努力。...幸运的是,新版本的WCF HTTP堆栈,使媒体类型的WCF编程模型的一等公民,大家可以Glenn Block’s 博客去了解更详细的内容。...推荐大家假期可以看下这本书《REST实战》http://book.douban.com/subject/6854551/ 下面我们来介绍如何使用Google Protocol Buffers,只定义一个超媒体类型...这个例子我们使用入门:构建简单的Web API 的代码和WCF Web API Preview 6。...使用的媒体类型是application/x-protobuf ,REST服务的核心原则就是服务器和客户端之间的松耦合性,客户端需要知道书签的URI,但不应该知道任何其他的URI的知识,但是客户端必须知道链接关系
Ron Jacobs 有篇文章介绍如何在WCF Rest Service中使用API Key验证:http://blogs.msdn.com/b/rjacobs/archive/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net...-4.aspx ,在WCF Data Service中怎么做呢?...本文将介绍如何在WCF Data Service中使用API Key进行验证,主要代码来自于Ron Jacobs的这篇文章....API Key作为一个参数在URL中传递, 在Rob Jacobs的WCFWebHttpLibrary.APIKeyAuthorization的方法string GetAPIKey(OperationContext...17: apiKey = requestProp.Headers[APIKEY]; 18: } 19: return apiKey; 20: } WCF Data Service
我这里就是通过routes.MapRoute(参数)中的参数进行处理的。...:规则名称可以随意取,但是不能重名,否则会报错。...Url参数:url获取数据的规则,这里不是正则表达式,将要识别的参数括起来就可以了,比如{controller}/{action} 注:最少只需要传递name,url参数,就可以建立一条Routing规则...B,用于实现IRouteConstraint接口且包含Match方法的对象。...然后就会去匹配WCF Rest Service的Route routes.Add(new ServiceRoute("GetRegSourceData", new WebServiceHostFactory
WCF异常处理流程。...今年来,尽管随着REST的迅速发展,基于POX(Plain of XML)消息交换大行其道;AJAX的持续升温,又是的基于非XML(JSON)的消息开始火热,但是不可否认,在今后不短的一段时间内SOAP...1: 2: 被除数y不能为零!...,"en-US")); 3: reasonTexts.Add(new FaultReasonText("输入参数不合法!"... 3: 输入参数不合法!
REST framework提供了两个router SimpleRouter DefaultRouter 1.SimpleRouter 1.1 基本使用 from rest_framework import...请注意,如果视图集不包含属性,则必须在注册视图集时进行设置。...这些额外的操作将包含在生成的路由中。...可以通过在实例化路由器时将参数设置为来修改此行为。...路由器将匹配包含除斜杠和句点字符之外的任何字符的查找值。对于限制性更强(或宽松)的查找模式,请在视图集上设置属性。
02 基于Http协议的服务 如WebService、WCF、WebApi,甚至还有ashx一般处理程序,使用最广泛。....Net下的服务选型 细想后我们不难发现,从最初的WebService一统江山,到.NetFramework3.0推出的集大成者WCF,却在4.0的时候被更轻巧的WebApi所打败。...更好的REST风格支持(WCF也可以但很麻烦),对移动端的友好支持等,甚至跟MVC同一个开发技术栈,这些理由很充分的让技术团队都倾向于使用WebApi。...Core WebApi的变化 WebApi刚出来时,大家都非常兴奋,终于有原生的RESTful API了,但实践中却发现太多槽点,跟MVC框架同项目不同管道,鉴权授权参数绑定也很不友好,让学习者苦不堪言...的通用性更强,像典型的前后端分离架构,当下各公众平台对外数据提供,都是选择的REST接口,包括在微服务架构实施上,Core WebApi使用还是更广泛一些。
.NET Framework 3.0 中增加了不少新功能,例如 Windows Workflow Foundation (WF)、Windows Communication Foundation (WCF...此外,.NET Framework 3.5 还包含若干技术领域中的大量新功能,它们以新程序集的形式添加,以避免重大更改。这些新功能包括: 与语言集成查询 (LINQ) 和数据感知紧密集成。...用于生成 WCF 服务的全新 Web 协议支持,包括 AJAX、JSON、REST、POX、RSS、ATOM 和若干新的 WS-* 标准。...Visual Studio 2008 中面向 WF、WCF 和 WPF 的完整工具支持,其中包括支持工作流的服务这一新技术。
WCF 过得好好的, ASP.NET 也如此,每种技术都有使用其的理由。正如这篇文章说得好, "SOAP的世界与HTTP 服务的世界是完全不同的。...Kelly Sommers在澄清REST中撰写了我认为是REST的最好诠释,无论你想编写 RESTful专注于资源的 HTTP 服务还是只是POX或 POJ (Plain Old XML 或Plain...但如果对我来说不够动态的话,为什么我的方法的参数不能只采取一种"动态"。 C# 是静态类型,这是肯定的,但这并不意味着我不能静态化动态的东西。;) 再次注意Watch窗口。
资源(Resources) REST的名称"表现层状态转化"中,省略了主语。"...所有的服务是自包含的,合乎逻辑。他们就像黑盒子。总之,我们并不需要了解业务服务的内部工作细节。对于外部世界,它只是一个能够使用消息交互的黑盒子。...当我们说松耦合,这意味着每一个服务是自包含单独存在的逻辑。举例来说,我们采取了“支付网关”的服务,并将它附加到不同的系统。 (2) SOA服务是黑匣子。在SOA中,服务隐藏有内在的复杂性。...(3)只要有权限都可以进行访问 RESTFul与SOA的不同点 (1)REST风格下的,只有一种协议,那就是HTTP。而SOA下的WCF就和多种协议了。...(3)REST寄宿时,虽然可以选择多种寄宿方式,但必须有IIS的支持。SOA下的WCF却没有这个限制,寄宿方式有很多种,可以是控制台应用,windows应用或者寄宿于iis。
对于被拦截的请求,UrlRoutingModule利用注册的路由表对其进行匹配和解析,进而得到一个包含所有路由信息的RouteData对象。...实例演示:通过自定义Route对ASP.NET路由系统进行扩展 定义在ASP.NET路由系统中默认的路由类型Route建立了定义成文本模板的URL模式与某个物理文件之间的映射,如果我们对WCF REST...具体来说,WCF REST借助于System.UriTemplate这个对象实现了同样定义成某个文本模板的URI模式与目标操作之间的映射。...篇幅所限,我们不能对WCF REST的UriTemplate作详细的介绍,有兴趣的读者可以参考《UriTemplate、UriTemplateTable与WebHttpDispatchOperationSelector...在用于生成出栈URL的GetVirtualPath方法中,我们通过定义在URL模板中的模板(包括变量名包含在属性PathSegmentVariableNames的路径段变量和包含在QueryValueVariableNames
支持对于消息路由,WCF4.0之前的框架没有提供支持,在WCF4.0里又重新加入对于消息路由机制的支持。...WS-Routing(WS-路由): 早期的SOAP消息因为存在路径依赖问题,因此不能实现在多个协议之间转发,而WS-Routing 是解决路径依赖问题的第一个规范。...fwd"和"rev"元素都包含"via"元素,"via"元素用于描述每一个消息途径的节点,也就是中间的消息参与者。而"fwd"和"rev"元素包含的其他元素则被用于定义消息的标识、相关性和目的。...这其实在背后,WCF框架为我们生成了一个SOAP消息。而这个SOAP消息包含我们要调用服务的必要信息。...我们可以摆脱传统调度模型,实现SOAP 以外的调度方式 :实现 REST/POX 样式的服务。
RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑。...中通过 WebGetAttribute、WebInvokeAttribute (GET/PUT/POST/DELETE)、UriTemplate 定义 REST 的服务的调用方式, 通过 WebMessageFormat...3、 IService1.cs接口定义三个方法,包含GET和POST请求 using System; using System.Collections.Generic; using System.Linq...3、 通过RESTFul风格调用服务 (1)、http://localhost:9315/user/get/1调用服务string GetData(string value),参数值为1 (2)、http...RESTFul生成的URL与调用WCF服务的URL端口号要保持一致,要不然用ajax调用浏览器会认为跨域。