【问题标题】:Blazor client-side and WCFBlazor 客户端和 WCF
【发布时间】:2019-11-30 10:44:56
【问题描述】:

我正在尝试使用客户端 Blazor 来显示一些由现有 WCF 服务提供的数据。我能够添加连接的服务引用,生成代理。但是当我试图像这样调用它时:

var client = new SoftConServiceClient();
await client.PingAsync(new PingRequest());

有一堆错误,与 MonoTouch 相关。通过挖掘Mono的代码,System.ServiceModel.DnsEndpointIdentity的构造函数中有一个显式的NotImplementedException

我是否可以假设现在无法从 Blazor 客户端调用旧版 WCF 服务?如果不是这样,任何人都可以分享有关如何正确执行此操作的指南吗?

额外问题:如果不可能,那么解决此问题的最佳选择是什么?将 WCF 修改为 REST-ish 还是直接删除它并实现 .net core api 服务?

提前非常感谢!

【问题讨论】:

    标签: c# wcf client-side blazor


    【解决方案1】:

    Core 不能很好地支持 WCF,而不是完全不支持。尤其是在身份验证和安全方面,例如使用 WS* 绑定创建的服务。但是对于使用 BasicHttpBinding 或 Restful 样式服务创建的服务。我们可以在基于核心的客户端上正常调用它们,无论是使用客户端代理类还是通道工厂。 请参考以下官方仓库。
    https://github.com/dotnet/wcf
    我建议你使用 BasicHttpBinding 或使用 Asp.net WebAPI 重新构建你的服务器项目来创建后端服务。
    https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
    如果有什么可以帮助的,请随时告诉我。

    【讨论】:

      【解决方案2】:

      .NET Core 不支持 WCF,但似乎有一个社区项目正在努力在 .NET Core 中添加对它的支持

      https://github.com/CoreWCF/CoreWCF

      请参阅What replaces WCF in .Net Core? 了解更多信息。

      【讨论】:

        【解决方案3】:

        我是否认为现在无法调用旧版 WCF 来自 Blazor 客户端的服务?

        是的,您是对的... Blazor 客户端不支持 WCF,并且将来也不会支持。 Microsoft 已决定从 .Net 5.0 开始停止支持它,并建议改用 Web Api。

        根据您对 WCF 的投入程度,您可能会转向 Web API,也许是 gRPC,或者继续使用 WCF,希望社区移植和支持 WCF 的努力能够成功。

        【讨论】:

        • 谢谢。我对 SignalR 不是很熟悉,但乍一看,如果考虑放弃 WCF,它是否是一种“现代”的双工通信方式?
        【解决方案4】:

        我能够使用 .Net 5 中的 SoftCore 技术来放置 WCF 4.7.2。 我也可以工作 SoftCore Hosted Example Blazor Server

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-27
          • 2012-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-09
          • 1970-01-01
          相关资源
          最近更新 更多