2012-02-29 270 views
25

我将要工作的,涉及到多种元素的项目:WCF服务或Web API

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

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

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

在我的脑海里,我只想创建我的WCF服务的单独RESTful服务端点这将使用身份验证会被锁定,只会给访问某些方法。

不过,我一直在今天阅读有关MVC 4在Web API功能,其目的是要成为RESTful API中最新的东西?

我应该沿着使用Web API的路线走吗?或者因为我的其他应用程序需要Web服务,我应该坚持使用WCF服务吗?

+0

的[VS WCF的ASP.NET Web API(http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) – nawfal 2014-10-29 23:00:11

回答

16

如果您打算进行RESTful开发,那么您肯定会想要使用ASP.Net Web Api(最初名为WCF Web Api,并且其目标是创建“使REST成为.NET中的头等公民”

另一个要考虑的是,WCF REST入门套件是no longer supported

注意,使用Web API并不意味着你必须使用ASP.Net MVC或IIS甚至,因为它可以self hosted

为了处理这是非CRUD在本质上,我建议谷歌搜索业务“REST非CRUD”。我发现这个博客文章RESTful URLs for non-CRUD operations(特别是有趣的评论)。如果您决定需要RPC调用,那么可能需要使用WCF来完成。这就是说,因为WCF REST被杀死了,我不知道最好的解决方案是什么。两者都可能是最好的答案,但同时它不一定是一个好答案。

另一种方法是一个WCF OData服务,但我不知道这会从iPhone的任何支持。

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

微软已经提供了一个去住执照,这意味着它是由微软和您的支持不应该公测在升级到文件RTM时没有任何问题。

+0

感谢您的评论。当然,因为我也会为我的MVC网站使用服务/ API,我不希望整个服务/ API是RESTful? Web API有可能吗?我知道一个WCF服务,你可以为RESTful – 2012-03-01 10:23:33

+0

添加额外的信息发布。 – 2012-03-01 15:49:46

+0

我不完全了解您的其他信息。解决方案是使用我可以从我的MVC网站引用的WCF服务。然后,我可以使用Web API(具有身份验证),该API还与WCF服务通信以获取数据? – 2012-03-01 17:25:28

6

Service Stack也看起来像一个选项。

演示,概述,示例是available here

+2

+1可能重复的提服务堆栈,我从来没有听说过。然而,纵观他们的框架,我的第一印象是,他们为客户设定的“无代码”目标并不完全准确。如果您无法访问服务DTO,那么Code-gen(显然是手动的)仍然是必需的,这对于公共API来说很可能是一种场景。尽管如此,框架看起来很有希望,所以我一定会研究它。感谢您的链接! – Randolpho 2012-02-29 16:19:24

+0

不能没有代码生成,因为您可以重复使用与您定义Web服务相同的DTO。因此,您可以获得使用快速,可版本化的端到端序列化的类型化,简洁的通用服务客户端。即使是C#异常也是习惯用法的,并输入https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz 2012-03-01 05:46:09

+0

@mythz以及如果您无法访问定义DTO的.DLL,该怎么办?这是公众可访问的Web服务的常见情况。 – Randolpho 2012-03-02 03:56:07

4

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

最终,我建议你去任何最能维护你的感觉。

我想指出,MVC 4是处于测试阶段,所以,要当心错误和不走活,直到它完成测试。

1

我会inlclined看看什么对你要使用的所有平台上最好的支持,我怀疑iPhone应用程序最终可能会驾驶你的选择。

如果是纯.NET我还是会倾向于toweards瘦SOAP服务 - 所以不考虑冷却这些天,但它通常会做你的需要在大多数平台上,而无需滚动定制的解决方案。

编辑

的ASP.NET Web API意味着.NET现在提供了一个很大的框架,用于开发一个RESTful API,我修改我回答说,我现在会朝着这个瘦 - 进步是伟大的!

1

既然你要创建一个ASP.NET MVC的网站,它会因为编程模型非常相似,这些解决方案彼此或多或少的集成是相当舒适的使用的ASP.NET Web API也。

0

我有同样的问题。

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

发现了一个视频教程,他们表示,对于机cosumption像iPhone或JSON或XML的Web应用程序客户端,Web API被推荐的选项。它围绕视频的最后部分。

尽管对于更复杂的机器对机器通信WCF是prefereable。

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