Blazor Server调用JavaScript时数据是否通过SignalR传输问询
Blazor Server JS互操作传输逻辑相关解答
- 首先明确你的核心疑问:Blazor Server场景下,C#与JS互操作的所有输入参数、返回值的往返传输,确实是通过两者之间维持的SignalR长连接负责,没有额外创建独立的HTTP请求。
你应该已经注意到这两个方法都是异步的。这一点十分重要,如果你希望代码同时兼容客户端Blazor和服务端Blazor,那么所有JS互操作调用都必须是异步的,这是因为服务端Blazor使用了SignalR连接。
上述描述完全准确,正是因为互操作调用需要走SignalR跨网络传输,所以必然要求是异步设计,无法实现同步调用。
- 你提到的通过Firebase Firestore JS库获取数据再回传Blazor Server的场景,确实会产生额外的往返开销:数据首先从Firebase返回到用户浏览器的JS运行时,之后需要通过SignalR连接传输到服务端的C#逻辑,服务端计算得到DOM更新指令后,再通过SignalR传回浏览器完成渲染,相比纯前端逻辑多了一次浏览器到服务端的上行传输耗时。
- 如果这类场景不需要服务端参与后续逻辑处理,可以直接在JS侧完成DOM更新,不需要将数据回传到服务端,就能规避这部分额外开销。
内容的提问来源于stack exchange,提问作者Amir Mahdi Nassiri
相关产品推荐
相关产品推荐

