Service Stack 与 WCF

本文转载自 http://www.cnblogs.com/shanyou/p/3348347.html

 

ServiceStack是一个开源的、支持.NET与Mono平台的REST Web Services框架。同类产品微软自有的是WCF。

Web服务通常有远程过程调用(RPC)和RESTful (HTTP)两类,现在占据主导地位的Web服务是RESTful (HTTP)

 

    ServiceStack的组件见下:

包含高性能Razor Engine的Web应用框架;

支持例如HTML,XML,JSON,SOAP等多种格式的基于消息的Web服务框架;

包含内建IOC(Inversion of Control)的容器;若干内建库文件,诸如:Text serializer,Redis Client,ORM以及caching providers;

除了ASP.NET Hosting和Mono Hosting之外,还包含self-hosting选项。

 

    2年前REST就已经成为Web API部署方式的主流了,而且一直保持这种发展势头,现在基本上都是REST服务,SOAP在企业内网还存在.

    远程过程调用 (RPC) ,每个请求旨在类似于函数调用:

    public interface IService{ string DoSomething(int input);}

    RPC 方法对服务的修改非常不友好。 例如前面的代码段,如果要求从客户端来执行更高版本的 Web 服务的 DoSomething 方法的两个输入参数 — 或需要返回字符串值之外的另一个字段 —— 给老客户重大更改是不可避免的。 当然,您始终可以创建平行的 DoSomething_v2 方法,要带两个输入的参数,但久而久之会搞乱您的 Web 服务接口和消费者,服务变得越来越丑,用WCF实现的Web服务就是属于这种情况。

 

    本文假定您有一些熟悉 WCF 和.NET 框架。 为了更好地展示WCF 概念可以如何转化为 ServiceStack 的概念,首先会在WCF中实现服务层。我会告诉你如何通过将WCF Web 服务移植到等效的使用 ServiceStack 转换为跨平台的 Web 服务。

ServiceStack 规定每个唯一的请求是对象所标识唯一的请求,这意味着你不能重用 DTO 跨多个服务实现与 ServiceStack 的请求。ServiceStack 支持不同的操作,如有 Get 和 Post。 您的选择在这里仅影响的 HTTP 请求。 指定任何 Web 服务请求是指可以通过 HTTP GET 和 HTTP POST 调用操作。 这种强制措施,简化了 rest 风格的 Web 服务实现。要将您的 ServiceStack Web 服务变成 rest 风格的 Web 服务,只需添加 URL [Route(...)]向您的 Web 服务请求声明属性。

以ASP.NET Hosting承载ServiceStack,创建一个空的ASP.NET应用,使用 NuGet 包管理器控制台将 ServiceStack 引用添加到 ServiceStack.Host.AspNet中所示

 Service Stack 与 WCF_第1张图片

 

ServiceStack Web 应用程序启动时,您的服务合同列出作为元数据操作,如图所示:

Service Stack 与 WCF_第2张图片

你可能感兴趣的:(Service Stack 与 WCF)