ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?

Posted

技术标签:

【中文标题】ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?【英文标题】:ASP.Net Web API vs WCF - Can the Web API be used to provide REST-based communication to a singleton WCF service? 【发布时间】:2012-03-11 23:13:09 【问题描述】:

我有一组现有的单例 WCF 服务。它们是长期运行的进程,会持续进行大量工作,并通过 WCF 服务合同公开自己,以便与其他进程进行通信。

在开发 WCF Web API 时,我很兴奋,因为看起来我终于能够摆脱所有烦人的合同内容,只需为每个服务提供一个与平台无关的 REST API 并拥有进程通过 HTTP 请求和 JSON 响应进行通信。

现在看来,Web API 已成为 IIS 托管的 ASP.Net 功能,这让我想弄清楚我是否只是遗漏了什么,或者我的 WCF 服务是否将不再有机会提供 REST 接口.

如果 Web API 不再真正针对我的场景,ASP.Net 团队对希望向其他消费进程提供基于 HTTP/JSON 的 API 的非终止单例进程有何设想?

【问题讨论】:

【参考方案1】:

您不必在 IIS 中托管 ASP.NET Web API 服务。如果您愿意,有一个名为“Self Hosting”的选项将允许您在另一个进程(例如 Windows 服务)中托管您的 API 服务。我想您当前的架构可以作为自托管应用正常工作。

【讨论】:

感谢分享! HttpSelfHostServer 是MVC 4 Web API components 的测试版。【参考方案2】:

您可以使用ServiceHost 自行托管,如this MSDN example。见related SO post。本质上 - IIS 不是 WCF 托管的要求。

如果您使用webHttpBinding - 您只需创建从ServiceHost 扩展的WebServiceHost 以支持REST。

【讨论】:

以上是关于ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?的主要内容,如果未能解决你的问题,请参考以下文章

WCF 与 ASP.NET Web API [关闭]

强大的自托管服务器的最佳选择:WCF 与 ASP.NET Web Api

ASP.NET MVC API 或 WCF API

尝试将 ASP.NET CORE 2 Web API 应用程序连接到 WCF 服务

ASP.Net Web API 架构选择

Wcf 服务在 .NET Core 3.1 控制台应用程序中工作,但在 ASP.NET Core 3.1 Web API 中无法工作