我最初开始 ServiceStack 是因为使用替代 .NET 框架创建 Web 服务时效率低下(开发和运行时)和摩擦。
Json 序列化比 MVC 快 3-4 倍
ServiceStack 具有强大的焦点性能,因为我们相信 it provides the best end-user UX 这就是为什么它内置了 strong set of Caching providers,包括 fastest JSON Serializer for .NET - 3-4x times faster,而不是 .NET 和 MVC 附带的序列化程序(它的默认 JavaScriptSerializer是 .NET 中最慢的)。为了获得最佳性能,没有使用运行时反射或正则表达式。它采用智能非线性路由匹配,建议您使用更快的内置缓存提供程序来解决poor performance of ASP.NET's Session。
专注于类型化、迭代、代码优先的开发
ServiceStack 让您可以使用最少代码量并自动无需任何代码生成来开发开箱即用的强类型 Web 服务,以推广最佳实践,配置,前/后构建步骤等。
一个简单的Hello World服务示例:
public class Hello { public string Name { get; set; } }
public class HelloResponse { public string Result { get; set; } }
public class HelloService : IService
{
public object Get(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
仅通过这些类,您的所有 Web 服务都会自动以各种不同的格式(JSON、XML、JSV、CSV、SOAP)提供,所有这些都是开箱即用的零努力。
使用 C# 的强类型客户端 API 示例:
var client = new JsonServiceClient("http://localhost/Service");
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
使用 jQuery 的 JavaScript 示例:
$.getJSON("http://localhost/Service/hello/World!", function(r) {
console.log(r.Result);
});
开发友好
因为在迭代开发 Web 服务时可视化 Web 服务很重要,所以在浏览器中查看 Web 服务时的默认 Content-Type 是人类友好的 JSON HTML5 Report 格式(也可在 http://ajaxstack.com/jsonreport/ 单独使用),它使您能够一目了然地可视化您的 Web 服务的响应。
您还可以获得automatically generated metadata page(您可以使用自己的自定义描述进行注释),这是记录您的网络服务 API 的好方法。
但是如果他们决定停止呢?
发展
作为 ServiceStack 的创建者,我认为自己在可预见的未来不会放弃开发。我每天都用它构建系统仅仅是因为我发现它是一个更清洁、更快、更高效的开发框架。
推广最佳实践
很少有 .NET Web 服务框架可以推广 DTO-first message-based 架构以支持 Service Interface pattern - Java 生态系统中常见的一种 Web 服务最佳实践,可以轻松开发基于 SOA 的批量全粗粒度 SOA网络服务。
有0 风险它将被放弃以支持另一个 .NET Web 服务框架。仅仅是因为我们不相信任何其他 .NET 框架会积极促进 Web 服务最佳实践(即 DTO / 远程外观和服务接口模式)以及对性能的主要关注。
但即使作为一个拥有近 20 名贡献者的开源项目,这种担忧也有所缓解。 MS 放弃了多少专有的闭源框架,并迫使每个人都转向继任者?开源软件不断发展,不会被抛弃和重写。
ServiceStack 的整个源代码位于 http://github.com/ServiceStack 下,没有锁定,GitHub 让任何人都可以轻松地进行分叉并继续开发,就像许多人已经做过的那样。
无处不在
最后,ServiceStack 可以在 Windows 或 Linux/OSX 上使用 Mono 的 IIS 6/7 中的任何 ASP.NET 主机上运行。它还支持独立的 HttpListener 主机,允许您在没有 Web 服务器的情况下运行它,即嵌入在任何控制台或 Windows 应用程序中、在 Windows 服务中,甚至有 hosted inside a MonoTouch iPhone application。