MVC2还是WCF适用于XML/JSON REST API?

5
我花了很长时间学习如何从添加身份验证等方面来定制WCF RESTful服务的角度;我构建了一些自定义服务主机,然后添加了使用IOC容器来创建服务实例等功能。
我们有iPhone / iPad应用程序以及一些其他小玩意(技术术语!)现在使用这些(i平台上的XML,基于浏览器的JSON),我对性能和我们可以轻松添加新操作等感到非常满意。
我学会了DataContract序列化程序的所有缺陷(现在在WCF之外读取/写入对象时仅在隔离情况下使用它们),并且在那个陡峭的学习曲线之后,但现在我们拥有了它们,我对它们都非常满意。
现在,我们有一系列新的Web项目,我很高兴能够利用MVC - 并对此印象深刻;特别是模型绑定真正厉害。
我现在正在寻找类似的RESTful API,用于这些Web项目(它们将是类似的网站,但具有不同的品牌和根据自定义需求的业务逻辑中的微小更改)。最初,我希望在WCF上进行的所有这项工作都能为我们提供良好的支持 - 但是MVC对于RESTful XML / JSON有其自己的开发路径,现在我陷入了两者之间。
如果您正在编写MVC网站,是否会使用WCF来实现其REST API?
我将提出一个使用WCF的论点 - 如果编写正确,它可以被隔离为运行作为Windows服务,而无需Web服务器。但是,那似乎是一个绝望的情况!
更新
我应该说,我现在已经使用MVC 2和3实施了3个单独的大型REST服务,并且很高兴与之合作。我编写了模型绑定器以包装WCF的DataContractSerializer用于XML,当然JSON支持也很好。我不会回去了。
2个回答

5

我以前从未使用过WCF,但目前正在使用MVC2来实现REST API。

大部分情况下它很适合,但存在一些缺点,需要一定的学习曲线。我需要使用MVCContrib来获得更好的XML支持。我用了MVC futures来支持将JSON对象发送到操作方法(参见:http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx)。我还需要取得其源代码并修改以支持XML。

我听说有一些REST框架建立在.NET MVC之上,但我还没有试过。

如果您熟悉WCF并且上次使用效果不错,那么我建议您继续使用它。


1
是的,正是MVC支持方面的差距让我有些困扰;我并没有发现WCF存在任何这样的漏洞,只是有些奇怪的行为。但是,能够将API与站点的MVC部分集成到同一状态和对象模型中,这确实是一个真正的优势!感谢提供链接。 - Andras Zoltan
因为链接的原因,我认为你和达瑞尔都建议我使用MVC - 所以我会这么做。非常感谢你们俩! - Andras Zoltan

3

我已经使用WCF做REST有一段时间了,我的建议是使用MVC。如果你只想处理XML和Json,并且你的URI空间相对简单,那么你可能可以使用WCF。然而,一旦你涉及到更高级的功能,就需要非常熟悉WCF来解决其默认行为问题。


我肯定同意,要充分发挥REST体验的优势,需要对WCF有很好的了解。特别是有一件事我不太喜欢(但在接触MVC之前很喜欢),那就是静态路由 - 使用URI模板字符串作为属性:路由表只是更好的解决方案。 - Andras Zoltan
据我所知,它们在底层都使用相同的路由机制。唯一的区别是它们填充表格的方式不同。随着时间的推移,由于版本差异引起了不同的行为,但它们都使用System.Web.Routing。 - Darrel Miller
是的,抱歉,你是对的;在我看来,MVC 模式只是做得更好 - 但这两个系统都是为了解决不同的问题而设计的。我非常喜欢 WCF(起初并不是),现在只是有点紧张要为此告别它!多么令人难过啊! - Andras Zoltan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接