将 WCF 转换为 WEB API:在 WEB API 中使用包装器重用 WCF 服务是个好主意吗?

Posted

技术标签:

【中文标题】将 WCF 转换为 WEB API:在 WEB API 中使用包装器重用 WCF 服务是个好主意吗?【英文标题】:Converting WCF to WEB API : Is it a good idea to reuse the WCF services with a wrapper in WEB API [duplicate] 【发布时间】:2018-02-19 07:50:39 【问题描述】:

我想从我的 wcf rest 服务迁移到 web api。拥有包装服务是否是个好主意,即从 API 端点调用 WCF 服务?请提出建议。

谢谢

【问题讨论】:

【参考方案1】:

如果您的服务没有 WCF 特定代码并且仅包含业务逻辑,那么这将是一个好主意。您的 WEB API 控制器将只是包装器,主要处理路由、参数映射和返回 HTTP 状态代码以及适当的结果。

编辑:

如果您的 WCF 服务有一些 WCF 特定代码,例如身份验证,那么我建议提取独立于基础架构的代码。然后,您将能够使用从您的 WEB API 控制器中提取的新类。

在这种大规模重构的情况下,我通常建议使用集成或端到端测试来覆盖整个组件。可以在现有代码和基础设施之上编写测试。提取代码并使用 WEB API 控制器包装后,您将能够运行相同的测试套件以确保没有重大更改。

关于 WEB API 中的身份验证,我建议查看以下 SO:Web API Authentication best practice

【讨论】:

WCF 休息服务有自己的逻辑。在 Wcf 服务中,我有一个从“ServiceAuthorizationManager”继承的类和下面的逻辑来进行身份验证。 var reqMsgProp = (HttpRequestMessageProperty)operationContext.IncomingMessageProperties["httpRequst"];字符串 authHeader = reqMsgProp.Headers[HttpRequestHeader.Authorization]; var authMessage = CheckIfAuthenticateMethod(operationContext); if (authMessage == true) 返回 true;在 WEB API 2 架构中,我使用基于令牌的身份验证。那么如何进行身份验证部分呢?

以上是关于将 WCF 转换为 WEB API:在 WEB API 中使用包装器重用 WCF 服务是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

web service, wcf, wcf rest, web api之间的区别

Difference between WCF and Web API and WCF REST and Web Service

选择Web API还是WCF

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

将数据(复杂数据/原始数据)发送到服务并获取响应(复杂数据/原始数据)的最佳方式(WCF 或 WEB API)

在同一个 Web 应用程序中托管 WCF 服务和 Web API