微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 今天在.NET中实现RESTful架构的最好方法是什么?

在你提到之前,我知道这个问题以前已经被问过了,但是从WCF4推出以来就没有这个问题!

所以,经过大量的阅读,我决定RESTful架构是开始提供数据的API的前进之路。考虑到发布WCF 4,ASP.NET MVC 2和WCF REST入门工具包,现在开始实施RESTful架构的最好方法是什么?

我:
我非常熟悉ASP.NET MVC,所以我觉得很舒服。但是,我对WCF的了解是缺乏的。

那么WCF4或ASP.NET MVC? (或其他类似wcf休息入门套件)?具体来说我在找:

>易于实施
>我知道ASP.NET MVC,而不是WCF。 WCF值得学习曲线吗?
> WCF4是否超额用于REST或ASP.NET MVC在某些时候会缩短?

解决方法

我实际上已经实施或正在使用所有3个发布的选项,所以我会给我的。现在你已经澄清了一下你想要什么,更容易回答。

的OData

OData对于内部应用来说非常棒:

>您既是服务器又是客户端。
>您正在使用实体框架。
>您不要在模型中使用继承,并不期望查询子集合。

Odata是非常棒的,因为您可以在客户端使用IQueryable。这有一些限制。我的头顶上的两个包括你与继承的模型的工作有点尴尬,你can’t do nested collections

还有一个问题,不知道什么是supported LINQ capabilities are

我推荐OData是绝对需要一个服务层,只希望与他们进行简单的CRUD操作。每个OData问题的主要问题导致一个硬壁,你无法绕过有时。客户端消费者代码真的是最好的部分,如果你不使用C#来消费它可能不值得。

同样没有使用EFs自动元数据支持,您将只编写相同数量代码,以符合您的消费者可能或不会喜欢写入的模式。虽然OData的Rails包装器都是相对较新的。除了真正的大MS合作伙伴之外,我还没有看到OData在野外。

OData认证和过滤也是非常裸体的自动柜员机。如果需要限制数据,您将自己编写许多相关的权限代码。如果你希望SELECT * FROM TABLE受到权限的限制,准备写一些尴尬的代码

MVC 2

MVC非常适合做一个RESTful服务。你有动词支持和返回JSONResult就像它一样容易。唯一的潜在缺点是您的编码很多错误处理自己,所有的视图模型都应该继承自显示状态代码错误消息的基类。

您还可能想要调整视图引擎,具体取决于您希望您的消息回复如何花哨或惯例驱动。 MVC的巨大优势是它的可扩展性,你可以做任何你想要的几乎任何事情。我将form / ajax调用和休息服务组合到同一个控制器动作中很大。实施一次,获得三种口味的相同操作。这将是很难使MVC掉线,因为它可以扭曲几乎任何你需要做任何事情。

MVC服务的一大优点是您可以在与服务一起部署的应用程序中潜行一下管理UI。非常方便,没有两个站点部署。

WCF REST

所以我只是使用WCF休息在一个非常有限的容量,似乎…好的…我已经使用WCF 3年,我总是不满意它是如何令人沮丧的复杂是扩展它。就像ODATA一样,如果你离开了被打破的路径,你将会遇到密封类和不可扩展的功能非常快的洞穴。这与MVC的可扩展性成正比。

一个问题是您在WCF之上的建筑以及与之相伴的所有精神错乱。我一直说要求博士有效地使用WCF。 Rick Strahl有一篇关于pain points of WCF REST的好文章。不知道事情有没有改变,但值得一读。

WCF REST看起来真的很有前途,我正在使用它,现在我只是不了解它推荐。

要点

>如果你不知道你的消费者,那我会假设你不知道你的API。在您使用用例并且可以对其进行编码之前,不要构建服务。> MVC是最可扩展的,如果你熟悉如何在封面下工作,你可能会比实现一个很难扩展MS的东西,如OData和WCF更好。>所有像Facebook,Amazon,PayPal,Ebay这样的“大男孩”都有不符合任何已知的模式或类似OData的模式的API。你的REST服务真的是你所做的。这涉及#1。专注于让消费者轻松工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: ' Style="position: relative" AppendDataBoundItems="True"> (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke '*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you