博客网站采用Blazor Server框架作为网站框架,已经运行了好一段时间,开发体验对后端开发人员很友好,但该模式下网站网络中断问题确实挺蛋疼的,比如写一大篇文章忘记保存了 中间上了个厕所回来就没了🤦♂️,不想换回Vue所以就又把目光放到了Blazor Auto这个模式上。
于是站长就基于Bootstrap Blazor UI框架做了个本测试项目,自己大致体验了下发现调试没啥大问题就直接上项目进行了重构,一通折腾下来发现要改的东西真不少,其次也有一些问题暴露出来
Blazor Server 和 Blazor Auto 的大致区别
Blazor Server 全程由服务器端进行渲染,不用暴露外部接口这块安全性很强,C#代码端可以直接操作数据库 开发很方便,再就是网页加载效率很快
Blazor Auto 说白了就是将Server和WebAssembly两种模式结合了,说是能够根据组件需求自动选择 Server 或 WebAssembly 模式,从而提高应用程序的性能,能同时满足SEO渲染和网络连接中断。
升级Blazor Auto需要的开发变动
- 为了数据交互将数据库实体独立出来(不建议这么做,理论上wasm里下载的dll可以反编译出来,所以不能放敏感性信息)
- 开发了N个webapi接口(为了网络中断问题,真不值得)
- 为了不暴露接口请求参数又写了个请求参数双端自动加解密方法,传参全是加密字符(webapi流量也增多了,同时也是防君子不妨小人,wasm需要解密,同样可以被反编译出来解密逻辑)
- 还有些WebAssembly的一系列小问题,这里就不细说了
未找到 BootstrapBlazorRoot 组件,无法完成当前操作
System.InvalidOperationException: SwalService not registered. refer doc https://www.blazor.zone/install-webapp step 7 for BootstrapBlazorRoot; 未找到 BootstrapBlazorRoot 组件,无法完成当前操作,请根据 https://www.blazor.zone/install-webapp 第七步骤指引完成操作
这个问题还挺无语的 报错反馈提示里的文档页面,打开被重定向住域名没有对应的解决方案,最后发现其实只需要在根页面加一个 标签就行了
Blazor Server和Blazor Auto前后性能感受
站长更新发布后 体验结果感觉是比较差的,不但没有变快反而因为多了额外的http接口请求,导致页面初次加载比Server慢了很多,同时导致服务器负载增高,站长服务器确实比较垃圾,可能只能跑的了Server, 最后多了几倍的代码量,网站体验不但没提升反而大幅度下架,所以后面站长也老实用回了Server模式。
总结下来:Blazor WebAssembly还是更适合企业OA这一类的后台管理系统,.NET的后端开发者做博客类的小网站Server模式需要SEO可以玩玩,开发和维护都比较简单,公司业务项目不适合,Auto看似兼顾了二者的优点,但实际也有着二者的其他缺点,做跨平台客户端倒是个很不错的方案。