WCF服务或Web API

时间:2012-02-29 16:07:22

标签: c# asp.net asp.net-mvc wcf asp.net-web-api

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

  • ASP.NET MVC网站
  • C#console应用程序
  • iPhone App

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

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

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

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

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

6 个答案:

答案 0 :(得分:16)

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

另一件需要考虑的事情是WCF REST Starter工具包是no longer supported

请注意,使用Web Api并不意味着您必须使用ASP.Net MVC或IIS,因为它可能是self hosted

对于处理非CRUD的操作,我建议使用Google搜索“REST非CRUD”。我发现这篇博文RESTful URLs for non-CRUD operations(特别是有趣的评论)。如果您决定需要进行RPC调用,那么可能必须使用WCF完成。也就是说,因为WCF REST正在被淘汰,所以我不确定最佳解决方案是什么。两者都可能是最好的答案,但与此同时,它不一定是一个好的答案。

另一个替代方案是WCF OData服务,但我不确定它是否得到iPhone的任何支持。

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

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

答案 1 :(得分:6)

Service Stack看起来也是一种选择。

演示,概述,示例是available here

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:1)

我很想看看你将要使用的所有平台上有哪些最好的支持,我怀疑iPhone应用程序最终会推动你的选择。

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

修改

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我有同样的问题。

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

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

虽然对于更复杂的机器到机器通信,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-Layer-with-ASPNET-Web-API

以下是他们演示文稿的截图。

enter image description here