将 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
尝试将 ASP.NET CORE 2 Web API 应用程序连接到 WCF 服务