c# - Blazor 服务器应用程序、WebAssembly-HostedByDotNetCore 和 WebAssembly 之间的适当澄清?
问题描述
我一直对 Blazor 的三种不同选项感到困惑;(服务器应用程序、WebAssembly 和 WebAssembly 托管)。虽然,这篇文章说得很清楚。
但是,我仍然不清楚,因为我们可以同时受益于 Blazor 服务器端应用程序的客户端 SinglePage 体验和服务器端功能,为什么我们需要使用其他两个选项(WebAssembly 和 WebAssembly-托管)?我知道在 webAssembly-hosted 选项中,代码将通过客户端的 webAssembly 和 dot.NetCore 进行解释。另一方面,在服务器端应用程序上,请求发送到服务器并被渲染,然后返回到浏览器。
因此,通过使用 Blazor 服务器端应用程序,我既可以保持 MVC.Net 之类的编码方式并拥有不同的.cshtml
页面,也可以在我的项目中使用单页部分。(如果我错了,请纠正我!)
更新:
让我们这样问:
- 在 WASM 托管模式下,组件(及其代码和其他文件)将由客户端(浏览器)请求发送,然后浏览器(几乎)获取所有组件和文件以呈现页面(以及代码到由客户端的客户端 .Net 核心解释)。所以现在,唯一的网络活动将是 API 请求和结果。
- 但是,在服务器端应用程序上,您可以进行正常的页面加载(就像在 MVC.Net 上发生的那样,但是使用 SignalR 而不是 Ajax),也可以使用单页模式(例如,在 Server- Side app 模板,Profile 页面,向服务器发送和接收数据。但是,weatherForecast 和 Counter 页面仍然是客户端,没有进一步的网络活动)。在这种模式下,浏览器再次从服务器获取文件和组件(是否预渲染),传输的数据没有 WASM 模式那么大,而且用户仍然在体验没有网络流量的单页 Web 应用程序因为用户正在这个区域工作。
解决方案
老实说,客户是要走的路。使用服务器端的 SignalR 方法是带有回发功能的 asp.net 稍微好一点的版本。
如果您能花时间学习如何使用客户端 Blazor,我认为您将能够为用户提供更快更好的用户体验。
这只是我的看法,但我认为这是正确的。
推荐阅读
- c - UNIX域数据报套接字的核心同步问题
- spring-boot - 如何找出缓存管理器中是否存在密钥(org.springframework.cache.CacheManager)
- r - 计算多列中的值
- php - 在 Laravel 控制器的嵌套 foreach 循环中构建数组
- pcap - 如何将原始数据包数据转换为 PCAP 文件?
- javascript - V8:为什么我的函数不适用于 JavaScript 代码?
- php - Json返回[object object]而不是值
- spring-boot - 有没有办法为 Rest Template 提供动态超时?
- web-scraping - 来自 Etsy 的 Google Sheets ImportXML - 使用动态导航从多个页面导入数据
- java - Spring Boot 应用程序如何受 maven 依赖项影响?