WCF vs WEb api vs新电子商务网站的Web服务

Nim*_*oel 6 c# asp.net wcf android asp.net-web-api

我在MVC和sql server中创建一个新的电子商务应用程序作为数据库.我想使用相同的实体框架.我对选择数据访问层感到困惑.我应该在WCF与Web API和Web服务之间使用哪一个.有可能在将来我们可能需要Android和IOS应用程序.我认为Web api将是最好的选择.

我试图找到web api和WCF之间的区别,我发现了什么.新的ASP.NET Web API是以前的WCF Web API项目的延续(尽管一些概念已经改变).

WCF最初是为了启用基于SOAP的服务而创建的.对于更简单的RESTful或RPCish服务(想想像jQuery这样的客户端),ASP.NET Web API应该是不错的选择.有数千个链接告诉Rest,TCP,FTP,soap,Http. 但没有我找到答案的地方.我仍然困惑哪一个会解决我的问题.如果我选择Web api还有一件事,实体框架可以与Web api集成.我是dot net的新手.任何帮助都会非常有帮助.

编辑: @win感谢您的帮助.我想知道,如何决定我应该选择哪一个,RESTFull(Web api)或WCF(Soap).应用中的哪些因素决定使用哪一个因素.

gra*_*der 9

WCF提供了许多功能,但代价是疯狂的配置设置.疯了.它涉及定义"ABC",地址,绑定,合同.我总是告诉人们"使用WCF:它的配置,而不是代码".配置它只有很多选项.

如果你需要将少量数据推送/拉到"客户端"(浏览器,安卓,iPhone),那么WebApi是最好的选择.

一个功能,WebApi将通过如何设置请求(在"标题"中)为您提供xml或json.

使用WCF,你必须为json和xml"编码"一个/或两个,并且它不是非常简单的.Aka,你必须在Service-Methods(ABC的"合同")上放置属性来说"此方法将发送回xml"或"此方法将发送回json".

您的WebApi层将提供服务.这通常意味着提供json数据或消耗json数据.MS已经为您处理了"管道",所以在服务方面,这种情况会自动发生.

我从2005年开始编码(好吧,2005年和之后的WCF,然后是WebApi).

WebApi更容易处理,特别是对于初学者.

因此,除非您有非常具体的理由使用WCF,否则我会使用WebApi.

就ORM而言,这完全发生在"服务器端",因此您可以选择任何一个.我会选择Poco/Code-First/Entity-Framework或NHibernate(用于"完整"ORM)或Dapper(用于微ORM).使用哪种ORM本身就是一个完整的讨论.但是快速的建议,不要选择一个不知不觉,做一点研究.搜索"Entity-Framework vs NHiberate"或"Entity-Framework vs ADO.NET"或"Dapper vs NHiberate"(你可以获得演练,任何组合,有时候你会找到一个比较三种加上其他的东西.

这里有一个关于自动魔术线的一点解释......你不是在SERVER端手工解析json.

http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

和这里

http://encosia.com/rest-vs-rpc-in-asp-net-web-api-who-cares-it-does-both/

在我的观点之外,这里有一篇微软的比较文章:

https://msdn.microsoft.com/en-us/library/jj823172.aspx

和报价:

使用WCF创建可通过各种传输访问的可靠,安全的Web服务.使用ASP.NET Web API创建可从各种客户端访问的基于HTTP的服务.如果要创建和设计新的REST样式的服务,请使用ASP.NET Web API.尽管WCF为编写REST样式的服务提供了一些支持,但ASP.NET Web API中对REST的支持更加完善,所有未来的REST功能都将在ASP.NET Web API中进行.如果您有现有的WCF服务并且希望公开其他REST端点,请使用WCF和WebHttpBinding.