这个问题在这里已有答案:
我在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)。应用中的哪些因素决定使用哪一个因素。
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。