【问题标题】:.NET Core service compatibility with legacy WCF clients.NET Core 服务与旧版 WCF 客户端的兼容性
【发布时间】:2021-12-24 23:21:50
【问题描述】:

我有这个古老的受诅咒的遗留意大利面条代码库,是我在工作场所继承的。 它由多个 Windows 服务和几个 GUI 组成。所有项目都针对 .NET Framework 4。某些东西(不同的项目针对不同的版本),因此很明显,它们仅适用于 Windows。

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

现在,由于这些服务以 .NET Framework 为目标,因此只有 Microsoft 的东西,它们使用 Windows 通信基础; 或者至少我很确定他们会这样做,因为其中一个公共接口有this attribute

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

(写得一模一样。尽管tempuri这个东西正在生产中)

这些应用程序也可以安装在用户的计算机上(特定的管理 GUI),并且鉴于这些 WCF 服务也有安装在用户的 Windows 计算机上的第 3 方消费者,因此更改公共 WCF API 是一种不行。

我重新开发了(更好地)完全与以前的代码库完全相同的堆栈,但现在我不知道如何在 .NET 6.0 中重新创建 WCF 服务,因为 WCF 是一个 Windows - 仅限 .NETFramework 特定技术。

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

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

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

【问题讨论】:

    标签: c# wcf .net-core compatibility software-design


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2013-02-02
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多