.NET Core 服务与遗留 WCF 客户端的兼容性

.NET Core service compatibility with legacy WCF clients

我在工作场所继承了这个古老的被诅咒的遗留意大利面条代码库。 它由多个 windows 服务和几个 GUI 组成。所有项目都以 .NET Framework 4 为目标。something(不同的项目针对不同的版本)所以,显然,它们只是 Windows。

我想在 .NET 3.1(现在它已经发布,6.0)中从头开始重写它,因为我发现这将是避免发疯的最快和更好的选择(它真的很糟糕)并且由于这是安装在嵌入式机器中并且每台机器 Windows 许可证很昂贵。

现在,由于这些服务以 .NET Framework 为目标,所以只有 Microsoft 的东西,他们使用 Windows Comunication Foundation; 或者至少我很确定他们这样做,因为 public 接口之一有 this attribute

[ServiceContract(Name="Service",Namespace="http://tempuri.org/")]

(完全就是这样写的。尽管 tempuri 这些东西正在生产中)

应用程序也可以安装在用户的计算机上(特定的管理 GUI),并且考虑到这些 WCF 服务也有第 3 方消费者,它们安装在用户的 Windows 计算机上,改变public WCF API 不行。

我重新开发了可以(更好地)完成 previus 代码库功能的堆栈,但现在我不知道如何在 .NET 6.0 中重新创建 WCF 服务,因为 WCF 是windows 仅限 .NETFramework 特定技术。

我对这个问题的看法是创建一个新的 gRPC/REST 服务并有一个辅助 translator/adapter .NET Framework 服务专门用于兼容性,因为截至目前,第 3 方消费者仅安装在 Windows机器。 (我确实有一些简单的文档和 .wsdl,所以我可以毫无问题地重新创建它。还有意大利面条源代码)

但也许存在更好的解决方案: 有没有办法在 .NET Core 中重新创建与 WCF 兼容的服务器?我应该坚持使用适配器服务吗?将 .NET Standard 2.1 用于业务逻辑并让 .NET Framework 服务使用它?或者有没有更好的解决方案?

提前感谢所有愿意花时间阅读和回答的人。

如果您正在寻找一个灵活的框架,请瞄准 gRPC。 gRPC 已经在许多跨平台应用程序和跨多个框架中使用。 gRPC 将为您提供最大的灵活性。

如果您的应用程序主要与浏览器交互,请以 ASP.NET 核心 MVC 为目标。与 gRPC 相比,它有一些缺点,但它更容易用于 Web 应用程序。

如果您绝对不能从 WCF 继续前进,请观看 CoreWCF。 .NET Framework 不会很快消失,WCF 将继续发挥作用。如果越早越好,您可以考虑成为项目本身的贡献者。
https://visualrecode.com/blog/wcf-alternatives-for-net5/