WCF服务或Web API

我将参与一个涉及许多元素的项目:

  • ASP.NET MVC网站
  • C#控制台应用程序
  • iPhone应用程序

为了使所有这些单独的应用程序与数据库通信,我的直接想法是使用WCF服务。

但是,我现在需要向站点添加API以允许第三方从他们自己的应用程序中选择,插入和更新记录。

在我看来,我只想在我的WCF服务上创建一个单独的RESTful服务端点,该端点将使用身份validation锁定,并且只能访问某些方法。

但是,我今天一直在阅读MVC 4中的Web APIfunction,这是RESTful API的最新function吗?

我是否应该继续使用Web API? 或者因为我的其他应用程序需要Web服务,我应该坚持使用WCF服务吗?

如果您打算进行RESTful开发,那么您肯定希望使用ASP.Net Web Api(最初称为WCF Web Api,其目标是“使REST成为.NET中的一等公民”)

另一件需要考虑的事情是不再支持 WCF REST Starter工具包。

请注意,使用Web Api并不意味着您必须使用ASP.Net MVC或IIS,因为它可以自我托管 。

对于处理非CRUD的操作,我建议使用Google搜索“REST非CRUD”。 我发现这篇博客发布了非CRUD操作的RESTful URL (尤其是有趣的评论)。 如果您决定需要进行RPC调用,那么可能必须使用WCF完成。 这说自从WCF REST被淘汰后,我不确定最佳解决方案是什么。 两者都可能是最好的答案,但与此同时,它不一定是一个好的答案。

另一种选择是WCF OData服务,但我不确定是否能从iPhone获得任何支持。

最后一点(可以在将来删除,因为这是时间敏感的)

Microsoft已提供带有测试版的Go Live许可证,这意味着它受Microsoft支持,您不应该在升级到RTM文件时遇到任何问题。

服务堆栈看起来也像一个选项。

演示,概述,示例可在此处获得 。

这里没有正确的答案。 你当然可以很好地使用WCF RESTful服务。 或者您可以使用ASP.NET MVC。 两者都是完全有效的,都有优点和缺点。

最终,我建议你选择对你来说最难维护的东西。

我想要注意的是MVC 4处于测试阶段,所以请注意bug并且在测试结束之前不要上线。

由于您要创建一个ASP.NET MVC网站,因此使用ASP.NET Web API也会非常舒适,因为编程模型非常相似,并且这些解决方案或多或少地相互集成。

我将不得不看看你将要使用的所有平台上最好的支持,我怀疑iPhone应用程序可能会最终推动你的选择。

如果它是纯粹的.net,我仍然倾向于使用SOAP服务 – 它现在不被认为是酷的,但它通常会在大多数平台上做你需要的而不必滚动自定义解决方案。

编辑

ASP.NET Web API意味着.NET现在为开发一个安静的API提供了一个很好的框架,我修改了我的答案,说我现在倾向于这个 – 进步很棒!

我也有同样的问题。

在MSDN站点中, http://msdn.microsoft.com/en-us/library/jj823172(v = vs.110).aspx

找到了一个video教程,他们说,对于iPhone或JSON或xml的Web应用程序客户端等机器消耗,建议使用Web API。 它围绕video的最后部分。

而对于更复杂的机器到机器通信,WCF是优选的。

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-层与-ASPNET的Web-API

这是他们演示文稿的截图。

在此处输入图像描述