Bri*_*per 17 rest asp.net-mvc wcf
在你提到它之前我知道这个问题之前已被问过,但自从WCF4推出以来就没有!
因此,经过大量阅读后,我认为RESTful架构是开始数据提供API的前进方向.考虑到发布WCF 4,ASP.NET MVC 2和WCF REST入门套件,现在开始实施RESTful架构的最佳方法是什么?
我:我对ASP.NET MVC非常熟悉,所以我觉得很舒服.但是,我对WCF的了解却很少.
那么WCF4还是ASP.NET MVC?(或其他类似wcf rest starter kit)?具体来说我正在寻找:
Joh*_*ell 20
我实际上已经实现或正在使用所有3个已发布的选项,所以我会给出我的看法.现在你已经澄清了你想要的东西,它更容易回答.
的OData
在以下情况下,OData非常适合内部应用:
Odata很棒,因为你可以在客户端使用IQueryable.但这有一些限制.我的头脑中的两个包括你使用继承模型有点尴尬,你不能做嵌套集合.
还有一个问题是不知道支持的LINQ功能是什么.
我建议OData你绝对需要一个服务层,只希望用它们做简单的CRUD操作.每个OData问题的主要问题都会导致你有时无法绕过的硬墙.客户端消费者代码确实是最好的部分,如果你不使用C#来消费它可能不值得.
此外,如果不使用EFs自动元数据支持,您将编写相同数量的代码以符合您的消费者可能喜欢或可能不喜欢写的模式.虽然OData有一个Rails包装器,但所有这些都是相对较新的.除了非常大的MS合作伙伴之外,我没有在野外看到OData.
OData身份验证和过滤也是相当简单的ATM.如果您需要限制数据,您将自己编写许多与权限相关的代码.如果您希望SELECT*FROM TABLE受权限限制,请准备编写一些尴尬的代码.
MVC 2
MVC非常适合制作RESTful服务.你有动词支持,并且return JSONResult很容易.唯一潜在的缺点是您自己编写了大量错误处理代码,并且所有视图模型都应该从显示状态代码和错误消息的基类继承.
您也可能想稍微调整视图引擎,具体取决于您希望消息回复的花哨或约定驱动程度.MVC的巨大好处是它非常可扩展,您几乎可以随心所欲地做任何事情.我很擅长将表单/ ajax调用/和休息服务组合到同一个控制器操作中.实施一次,获得相同操作的三种风格.很难让MVC失败,因为它可以被扭曲以做几乎你需要的任何事情.
MVC服务的一大好处是,您可以在与服务一起部署的应用程序中隐藏一些管理UI.非常方便,没有两个站点要部署.
WCF REST
所以我只是在一个非常有限的容量中使用WCF休息,看起来......好吧......我已经使用了3年的WCF而且我总是不满意扩展它的复杂程度是多么令人沮丧.就像ODATA一样,如果你走出人迹罕至的道路,你会遇到密封的类和不可扩展的功能洞穴.这与MVC的可扩展性量形成鲜明对比.
另一个问题是你在WCF之上建立以及随之而来的所有疯狂.我总是说它需要博士才能有效地使用WCF.Rick Strahl有一篇关于WCF REST痛点的好文章.不确定事情是否已经改变但值得一读.
WCF REST看起来非常有前途,我现在正在使用它我只是不太了解它推荐.
要点
如果您不了解您的消费者,那么我认为您不了解您的API.在有用例之前不要构建服务,并且可以对其进行编码.
MVC是最具扩展性的,如果你熟悉内幕如何工作,你可能会比实现像OData和WCF这样难以扩展的MS更好.
所有像Facebook,亚马逊,PayPal,Ebay这样的"大男孩"都有API,这些API并不真正符合任何已知的模式或架构,如OData.您的REST服务实际上就是您的服务.这与#1有关.专注于让消费者首先轻松工作.
Dyl*_*tie 12
你应该看看OpenRasta.它是一个以资源为中心的框架,专门用于在.NET中实现RESTful架构,并且具有对HTTP内容协商和摘要式身份验证等功能的强大支持.
OpenRasta的方法是,不是根据动词(动作)实现API,而是应该根据资源(通常将紧密映射到您的API实体模型)和编解码器来定义API,这些编解码器提供这些资源的分离序列化/表示作为XML,JSON,HTML或您的API需要支持的任何其他内容格式.
它是开源的,完全用.NET编写,包括对IoC和依赖注入的内置支持(这是它在内部连接的大部分),并在MIT许可下分发.
版本2.0已经稳定了一段时间,并且正在几个地方的生产中使用 - 最值得注意的是Huddle.
在我看来,OpenRasta对资源的强烈关注意味着它更接近Roy Fielding最初的RESTful架构愿景,而不是许多"多用途"Web/HTTP框架,包括WCF和ASP.NET MVC.
在做出任何决定之前,请注意WCF中的HTTP/REST支持正在发生显着变化.见http://wcf.codeplex.com/.将存在大量向后兼容性,但是从HTTP和WCF的角度来看,新库是完全重写的.
另请注意,OData虽然对特定的应用程序子集很有用,但它不是通用的REST框架.
如果您现在需要.net,并且您真的想要正确地执行REST,请查看OpenRasta.如果你只想做REST,因为它有很好的营销热点,那么ASP.NET MVC对你来说可能已经足够好了.如果您刚刚进入实验阶段,那么我将继续关注新的WCF库.
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |