到目前为止,我已经阅读了很多关于WCF和ASP.Net web API之间差异的文章。不幸的是,我无法清楚地知道什么能满足我的目的。我读过的大多数文章都强调了两个Web服务的设计观点。但我很困惑什么最适合我的项目,为什么?这是我对该项目的简要描述。
我需要在两台服务器之间创建一个通信通道(两者都是用C#编写的)。服务器将使用消息(某种类型的命令)进行通信。消息有时只能是确认,有时消息可能包含进行某些计算的指令。例如,一条消息可以绘制某些内容,或发送短信等。消息不一定涉及任何数据库事务。但是这些消息有时可以将大文本文件作为有效载荷发送(最大约1-5 MB)。我相信WCF肯定会这样做,但我可以用ASP.net web API做同样的事情。因为到目前为止我已经看到了ASP.Net web api的所有示例:它们适用于操纵某种DB存储(GET,PUT,DELETE)的RESTful服务。但在我的情况下,我将需要公开
的服务点进行某种处理,例如返回计算值,发送和确认消息等。
不只是操纵数据库商店。
那么,最好和最简单的方法应该是什么?需要提到的是,我没有找到使用ASP.Net web API实现此目的的任何直接示例。
答案 0 :(得分:10)
您提出的问题是过于广泛或主要以意见为基础,很难为您所提出的问题举例说明。
要点:
- 首先,如果您要创建将在不同平台上使用的服务,那么请使用WCF。
- 其次,如果您要创建将使用外部资源的互联网服务,请使用Web API。
- 如果您要为低带宽设备或移动设备创建服务以访问客户端,Web API是最佳选择.HTTP 与SOAP相比,请求/响应也更具可读性 包含标题,正文等,使其变得复杂。
只需几分钟时间阅读以下文章,直到您完全了解一些原则。
向谁选择WCF或WEB API:
为什么选择Web API
我的意见:
我希望这能让你明白选择什么......
答案 1 :(得分:2)
首先,RESTful是一种无状态和统一的接口规范,可以应用于Web服务。它不必是自动的,只有DB支持的普通旧CRUD服务。
在现实世界中,我们很难说所有的Web REST API都完全符合规范,事实上它们大部分时间都不是,尤其是无状态部分。
对于基于消息的API,特别是如果它是双向的和基于事件的,您可以使用websockets并将REST API视为公开统一的无状态Web界面来创建它们的方法。是的,您可以使用带有ASP.NET WebApi的websockets,那里有大量的教程,即使对于较新的ASP.NET Core也是如此。
"服务与#34;交互部分与通常的Web浏览器没有什么不同< => Web服务,您只是为客户端使用C#代码而不是JS。
我很难推荐使用SOAP的WCF,因为考虑到现在的网络标准,它几乎不可移植。例如,如果想要使用浏览器客户端而不是其他ASP.NET服务,那么您必须执行额外的代码客户端来处理支持。
您可以使用WCF websockets,提供WCF SOAP的几乎所有优势。
tl;博士:
答案 2 :(得分:0)
WebAPI不仅适用于RESTful Web服务。您可以轻松地将请求发送到WebAPI控制器并按照您的需要进行处理:计算,发送消息,与CRM交互,与DB或其他任何内容交互。
创建WCF是为了管理基于SOAP的Web服务并带来额外的复杂性。它处理TCP,Mime ......
如果您只需要处理HTTP请求,最简单的方法是使用WebAPI。
答案 3 :(得分:0)
我建议使用Web API,如果它是用于RESTful服务的,因为WCF从未被用作Restful服务,尽管你可以作为Web API的一部分用于此。