Blazor的SSR服务端渲染是不是交互式的

从.NET8开始,Blazor引入了SSR服务端渲染,归功于MVC和RazePage的沉淀,虽然来得晚,但一经发布,就将Blazor推向了新的高度。从今年开始,Youtube上关于Blazor的优质教学视频,以肉眼可见的速度在增加,说明有更多人愿意学习和传播Blazor。Vue和Nuxt.js我都有在用,技术层面,我认为完全是可以去Battle一下的。大家不要停留在BlazorWebAssembly时代,现在Blazor对标的,是Next.js、Nuxt.js。
SSR的东西不多,但如果你像我一样没用过MVC,可能需要一些时间来理解它。如果是刚接触Blazor,我也建议从SSR开始,然后逐步开启BlazorServer、BlazorWebAssembly和Auto等多种渲染模式。

1、传统的请求响应模式

传统Web是经典的请求响应模式,客户端提交请求,服务端处理后,将HTML“整体”返回给客户端,客户端重新刷新“整个”页面,而且请求响应是无状态的,服务端分不清前后两次请求的区别。

2、JS开始介入请求响应过程

每次都请求整个HTML,并刷新整个页面,完全没有必要,因为很多时候,只需要刷新页面的部分数据,于是出现了Ajax。Ajax使用XMLHttpRequest对象,目前趋势是使用fetch。具体原理和过程,请看下一节,基本一样。

3、Blazor的SSR渲染

Blazor的SSR和Ajax基本一样,但有其特点:

  • 首次请求时,返回整体HTML、静态文件、JS脚本-blazor.web.js。其中重点是blazor.web.js,之后的请求和响应都由它来完成,包括响应用户交互事件->向服务器发送请求->处理服务器响应->将更新内容提交给DOM渲染而不需要整体重载页面。这种部分刷新的特性,Blazor称之为增强型导航
  • blazor.web.js内部使用了更加现代的fetch,而不是传统的XMLHttpRequest。Blazor对fetch进行了包装,我们不需要写任何fetch代码,正常使用Blazor语法就行,非常方便。
  • blazor.web.js除了完成请求响应之外&
### Blazor框架中的会话管理与使用 在Blazor框架中,由于其独特的运行模式(服务器端渲染和WebAssembly客户端渲染),会话管理的方式与其他传统的ASP.NET Core应用程序有所不同。 对于基于浏览器的Blazor WebAssembly应用而言,状态管理和持久化通常不通过传统意义上的HTTP会话来完成。相反,开发者可以利用JavaScript互操作性调用浏览器本地存储机制如LocalStorage或SessionStorage[^2]。这些API允许数据被保存到用户的浏览器中,在页面刷新甚至关闭后再打开时仍然存在(如果是LocalStorage的话)。这种方式非常适合用于保持登录信息或其他少量短期所需的数据。 而在服务端渲染(Server-Side Rendered, SSR) 的Blazor Server应用场景里,则可以通过Distributed Cache或者更高级别的解决方案比如Redis来进行跨请求的状态共享[^1]。这是因为每次交互都涉及往返于服务器之间传输信号R连接上的消息;因此,维持一个集中式的缓存系统能够有效地跟踪不同客户端之间的对话流程而无需每次都重新加载整个视图模型。 另外值得注意的是,在某些情况下也可以考虑采用身份验证票据(Authentication Ticket)作为另一种形式的“会话”,它可以在授权过程中发挥作用并携带必要的声明(Claims)。 ```csharp // 使用IDistributedCache接口的一个简单例子 public class SessionService { private readonly IDistributedCache _cache; public SessionService(IDistributedCache cache) { _cache = cache; } public async Task SetAsync(string key, string value) { await _cache.SetStringAsync(key, value); } public async Task<string> GetAsync(string key) { return await _cache.GetStringAsync(key); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值