rai*_*isr 22 c# asp.net rest service web-services
我知道已经提出了类似的问题,但大多数问题已经过时了.所以我们再来一次:).我需要为我们的应用程序实现一个完整的REST服务层.我遇到的问题是哪个框架最能解决这个问题.我只需要一个很好的框架,让我专注于问题,而不是REST或任何需要.身份验证是必需的功能.以下是我的一些想法; 你怎么看?
myt*_*thz 22
我最初启动ServiceStack是因为效率低下(开发和运行时)以及使用备用.NET框架创建Web服务时所施加的摩擦.
ServiceStack拥有强大的对焦性能,因为我们认为它提供了最佳的最终用户UX这就是为什么它有内置了强大的集缓存供应商,包括最快的JSON序列的.NET - 3-4倍倍的速度比附带的串行使用.NET和MVC(其默认的JavaScriptSerializer是.NET中最慢的).为了获得最佳性能,不使用运行时反射或正则表达式.它采用智能非线性路由匹配,建议您使用速度更快的内置缓存提供程序来解决ASP.NET会话的糟糕性能.
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 };
}
}
Run Code Online (Sandbox Code Playgroud)
只需这些类,您所有的Web服务都可以自动提供各种不同的格式(JSON,XML,JSV,CSV,SOAP),所有这些都是开箱即用的,无需任何工作.
使用C#的强类型客户端API示例:
var client = new JsonServiceClient("http://localhost/Service");
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
Run Code Online (Sandbox Code Playgroud)
使用jQuery的JavaScript示例:
$.getJSON("http://localhost/Service/hello/World!", function(r) {
console.log(r.Result);
});
Run Code Online (Sandbox Code Playgroud)
因为在迭代开发Web服务时可视化Web服务很重要,所以在浏览器中查看Web服务时的默认Content-Type是一种人性化的JSON HTML5报告格式(也可以在http://ajaxstack.com/jsonreport/上单独使用)这使您可以一目了然地可视化Web服务的响应.
您还可以获得自动生成的元数据页面(可以使用自己的自定义描述进行注释),这是记录Web服务API的好方法.
但如果他们决定停止发展呢?
作为ServiceStack的创建者,我认为在可预见的未来我不会放弃开发.我每天用它构建系统只是因为我发现它是一个更清洁,更快,更高效的框架来开发.
很少有.NET Web服务框架可以促进基于DTO的基于消息的体系结构,从而实现服务接口模式 - 在Java生态系统中常见的Web服务最佳实践,可以轻松开发基于批处理的粗粒度SOA网页服务.
有0风险,将有利于其他.NET Web服务框架被抛弃.仅仅因为我们不相信任何其他.NET框架积极推动Web服务最佳实践(即DTO /远程外观和服务接口模式)以及主要关注性能.
但即便如此,作为一个拥有近20名贡献者的开源项目,这种担忧也会得到缓解.有多少专有的封闭源框架让MS被抛弃并迫使每个人都转向继任者?开源软件不断发展,不会被遗弃和重写.
ServiceStack的完整源代码位于http://github.com/ServiceStack下,没有锁定,GitHub使任何人都可以轻松地分叉并继续开发许多已经完成的开发.
最后,ServiceStack可以使用Mono在Windows或Linux/OSX上的IIS 6/7中的任何ASP.NET主机上运行.它还支持独立的HttpListener主机,允许您在没有Web服务器的情况下运行它,即嵌入在Windows服务中的任何控制台或Windows应用程序中,甚至托管在MonoTouch iPhone应用程序中.
ken*_*nny 22
最近我和Nancy一起玩,我也在考虑Manos de Mono.这是Nancy主页上的一个例子.
public class HelloModule : NancyModule
{
public HelloModule()
{
Get["/"] = parameters => "Hello World";
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,最简单,最干净的解决方案是使用返回JsonResult的方法将服务实现为ASP.NET MVC3中的控制器.
好处:
MVC框架为您提供了繁重的工作
您可以使用属性而不是代码来实现模型验证
XCopy部署到任何版本的IIS
归档时间: |
|
查看次数: |
35671 次 |
最近记录: |