所以,经过大量的阅读,我决定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在某些时候会缩短?
解决方法
的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。专注于让消费者轻松工作。