首页 > 解决方案 > 在企业 WCF 应用程序中实现通信协议现代化的最简单方法

问题描述

在我们的企业桌面应用程序中,我们从 2010-2011 年开始积极使用 WCF,我们对此非常满意。
但是我们看到 WCF 越来越不流行了,.NET Core 不支持它,它迟早会取代 .NET Framework,所以我们开始考虑在我们的应用程序中替换 WCF。
我们想替换通信协议,但我们不想重写所有现有的服务。我们对我们的产品进行了扩展,这些扩展是由我们的合作伙伴编写的,因此他们都需要重新编写他们的所有服务,这将花费大量时间。虽然我们不介意重写服务注册、启动、调用等基础设施......
我们使用的 WCF 的主要功能以及我们将来肯定希望拥有的功能:
- 在客户端和服务器之间共享合约 - 我们控制应用程序的客户端和服务器端,它们都是用 C# 编写的,所以我认为拥有合约对我们来说是一个优势
- 操作调用程序:我们使用它们来添加日志记录每个 WCF 调用,将调用包装在事务中,更改线程的文化等等

有没有办法围绕现有服务、数据合约和服务合约编写一种包装器,以便能够以与现在相同的方式调用它们,但在底层使用另一种现代通信协议:gRPC、Web API、 ETC。?

标签: c#.netwcfenterprise

解决方案


我已经研究了类似的“包装”想法,用于现有的 WCF 服务,这些服务在基本的 HTTP 绑定上作为良好的旧 SOAP Web 服务运行。

似乎没有办法将协议更改为更现代的协议(例如 gRPC 或基于 JSON 的 Web API),而无需大量重写底层代码。例如,尽管您可以将 WCF 绑定切换到 WebHttpBinding 和操作/数据协定,以使您的服务表现得像更现代的 RESTful API,但将当前代码以任何方式移植到 ASP.Net MVC 可能更有意义。

我研究过的另一种选择是通过实现自定义绑定来更改底层协议来扩展 WCF。WCF 自定义绑定,但我认为努力最终可能比重写更大。


推荐阅读