Blazor 客户端和 WCF

Posted

技术标签:

【中文标题】Blazor 客户端和 WCF【英文标题】:Blazor client-side and 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 服务?

提前非常感谢!

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于Blazor 客户端和 WCF的主要内容,如果未能解决你的问题,请参考以下文章

Blazor 服务器应用程序中的身份服务器和客户端机密

是否可能:使用 Blazor 服务器端作为客户端应用程序

Blazor是春天还是寒风里的挣扎

客户端 Blazor 代码能否“听到”服务器端引发的事件?

没有 Web 程序集的 blazor

Blazor 客户端调试