.net中的RESTful服务使用什么框架?

本文关键字:什么 框架 中的 RESTful 服务 net | 更新日期: 2023-09-27 18:01:27

我知道也有人问过类似的问题,但大多数都过时了。所以我们又来了:)。我需要为我们的应用程序实现一个完整的REST服务层。我的问题是,哪个框架将是最好的解决这个问题。我只需要一个好的框架,让我专注于问题,而不是REST或其他需要的东西。身份验证是必需的特性。以下是我的一些想法;你觉得呢?

    WCF:在我看来,这是一个超载的框架,使事情变得复杂。ServiceStack:似乎是一个不错的、轻量级的、开源的替代方案。但如果他们决定停止开发呢?
  • 使用asp.net mvc这样的自定义实现,但为什么要重新发明轮子?

.net中的RESTful服务使用什么框架?

我最初创建ServiceStack是因为效率低下(开发和运行时),以及在使用可选的。net框架创建web服务时产生的摩擦。

Json序列化速度比MVC快3-4倍

ServiceStack有很强的焦点性能,因为我们相信它提供了最好的最终用户体验,这就是为什么它内置了一组强大的缓存提供者,包括。net最快的JSON序列化器-比。net和MVC附带的序列化器快3-4倍(它的默认JavaScriptSerializer是。net中最慢的)。为了获得最佳性能,没有使用运行时反射或正则表达式。它采用智能非线性路由匹配,建议您使用更快的内置缓存提供商来解决ASP的糟糕性能。净的会议。

专注于类型化、迭代化、代码优先的开发

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服务的响应。

你也会得到一个自动生成的元数据页面(你可以用你自己的自定义描述来注释),这是一个很好的方式来记录你的web服务API。

但是如果他们决定停止呢发展

作为ServiceStack的创造者,我不认为自己会在可预见的未来放弃开发。我每天都用它来构建系统,因为我发现它是一个更干净、更快、更高效的开发框架。

促进最佳实践

很少有。net web服务框架提倡dto优先的基于消息的体系结构,支持服务接口模式——这是Java生态系统中常见的一种web服务最佳实践,它使开发全批处理的基于soa的粗粒度web服务变得容易。

存在0风险将被抛弃,转而支持另一个。net web服务框架。很简单,因为我们不相信任何其他。net框架积极地促进web服务最佳实践(即DTO/Remote farade和服务接口模式)和主要关注性能。

但是,即使作为一个拥有近20个贡献者的开源项目,这种担忧也被减轻了。有多少专有的、闭源的框架被微软抛弃,并迫使每个人转向继任者?开源软件是不断发展的,它不会被抛弃和重写。

ServiceStack的整个源代码位于http://github.com/ServiceStack下,没有锁定,GitHub使任何人都可以轻松地分叉并继续开发,就像许多人已经做过的那样。

工作到处

最后,ServiceStack可以在任何ASP上运行。. NET主机在IIS 6/7或Linux/OSX使用Mono。它还支持一个独立的HttpListener主机,允许你在没有web服务器的情况下运行它,即嵌入在任何控制台或Windows应用程序中,在Windows服务中,甚至在MonoTouch iPhone应用程序中托管。

我最近一直在和Nancy玩,我也在考虑Manos de Mono。这是Nancy主页上的一个例子。

public class HelloModule : NancyModule
{
    public HelloModule()
    {
        Get["/"] = parameters => "Hello World";
    }
}

对我来说,最简单和最干净的解决方案是在ASP中实现服务作为控制器。. NET MVC3的方法返回JsonResult。

优势:

  • MVC框架为你做了繁重的工作

  • 您可以使用属性而不是代码来实现模型验证

  • XCopy部署到任何版本的IIS

如果我今天开始这个,我会从你的第三个选项中选择在ASP中做一些自定义的事情。. NET MVC3或使用下面的框架之一

  • WCF预览版
    • 已被Glenn Block重写
    • 下面是一个REST项目示例RestBucks
  • OpenRasta
    • 巨人的肩膀解决方案现在可以通过CodePlex和NuGet…