ServiceStack:添加 Blazor 支持?
Posted
技术标签:
【中文标题】ServiceStack:添加 Blazor 支持?【英文标题】:ServiceStack: Adding Blazor support? 【发布时间】:2019-10-16 14:37:19 【问题描述】:我尝试将 ServiceStack 引用添加到客户端 Blazor 项目,但在通过 NuGet 添加 ServiceStack.HttpClient 后遇到问题。
目前,VS2019 会告诉我:
找不到导出类型“System.Threading”的声明
当ask/look around 时,他们会说:
Blazor 是使用 mono-wasm 作为基础 .NET 框架构建的 实施,在这种情况下,我相信这是一个缺失的方法 这就是问题所在。
和
目前 Mono WASM 不支持线程;检查回购 https://github.com/lrz/mono-wasm-mono了解更多信息
我理解正确吗:
ServiceStack 需要System.Threading
WebAssembly 因此 Blazor 不支持对 System.Threading
的引用
意味着 ServiceStack 不能在 Blazor 应用中使用
【问题讨论】:
【参考方案1】:ServiceStack 的 Blazor WASM 模板由 Sebastian Faltonihttps://github.com/nukedbit/blazor-wasm-servicestack 维护
可以用x dotnet tool安装:
$ dotnet tool install -g x
并通过以下方式创建:
$ x new nukedbit/blazor-wasm-servicestack ProjectName
或者对于免安装的替代方案,使用 ServiceStack 的在线项目模板生成器: https://servicestack.net/start#community
它包括与可在以下位置创建的 Blazor 服务客户端的集成:
var client = BlazorClient.Create("https://localhost:5001")
它当前返回一个预配置的 JsonHttpClient
,它删除了 Blazor WASM 不支持的所有 HttpClient 功能。随着时间的推移,我们将包含更多 Blazor 支持的功能。
@Issac 关于 ServiceStack 使用 Web Sockets 的说法不正确,ServiceStack 在其任何库中都不使用 Web Sockets,BlazorClient
是使用 Blazor WASM 支持的 .NET HttpClient 的服务客户端。
【讨论】:
感谢神话。那么,如果我正确阅读了您的答案,您将在正式发布时查看 Blazor 支持吗? @Ted Right,将在 Blazor 正式发布后研究 JSON 服务客户端。【参考方案2】:@泰德,
Blazor 不在多线程环境中运行。 Blazor (mono-wasm) 在同一个 javascript 沙箱中运行,在同一个 UI 线程中。没有多线程,没有并发或并行编程。正如我之前所说,我从未听说过 ServiceStack,但我猜 ServiceStack.HttpClient 不能在 Blazor 客户端中使用,因为“Blazor HttpClient”是基于 HttpMessageHandler 的,并且它适合作为 Ajax 代理工作;也就是说,HttpClient 通过 JavaScript Fetch Web API 与后端通信,而我相信 ServiceStack 使用 Web 套接字执行传统的 http 客户端调用,而 Blazor (mono-wasm) 不支持这种调用。在 Asp.Net Core 5.0 中,预计 Blazor 客户端将支持 Web 套接字,之后 mono 将被替换。
不,ServiceStack 不能在 Blazor 应用中使用
希望对你有帮助……
【讨论】:
以上是关于ServiceStack:添加 Blazor 支持?的主要内容,如果未能解决你的问题,请参考以下文章