微软系列Blazor开源Web框架入门学习到放弃
最近收到了一位软件用户反馈软件本地注册机器码提示报错无法激活的问题,软件的注册机制需要用到硬件信息生成唯一机器码,但云服务器存在虚拟硬件导致机器码无法生成的情况,由于用户比较着急使用软件的一个付费功能,所以给定制改了一版软件给解决了(以往也出现过好多次 也基本是这个解决办法)老需要改程序挺烦的 所以就想着抛弃离线激活码形式的授权改为网页登录授权+本地客户端形式,查资料时就了解到了微软系列Blazor开源Web框架。
初看完Blazor的相关介绍这个模式简直不要太惊艳,纯服务端code的开发模式简直太适合我目前的情况,基本就是奔着.Net全栈开发来的,Blazor与现在流行的UI框架(Angular,VUE等)不同,Blazor 是允许使用C#来代替一些Javascript功能的,而且可以在UI端和服务端共享业务逻辑代码。
Blazor与Vue开发的区别
借用Freesql官网项目文档列举的一个例子 也是提供的例子激起了我学习的冲动
正常更新一行记录
vue -> webapi orm 查询数据 -> 转成 dto 返回 -> 绑定 js 对象 -> 前端提交时把 js 对象转成 http post DTO -> webapi 获取 dto 转成实体对象 -> orm.Update() -> 更新成功
blazor server -> orm 查询数据 item -> item 与 html 控件双向绑定 -> 前端提交时 orm.Update(item) -> 更新成功
相当于blazor直接已经把vue的这一步直接给做掉了,对于一个人完成前后端的程序员来说简直不要太友好。
Blazor WebAssembly
C# 代码通过 WebAssembly 在浏览器中运行,使得应用程序可以独立于服务器运行。这种模式允许更高的性能和更快的加载速度,并允许构建完全脱机运行的 Web 应用程序。
由于我想实现的软件效果是需要结合在线和离线脱机的运行方式,所以这个脱机运行基本是完美解决了我的需求。
开始学习Blazor到放弃
综合上所述Blazor的优点,心动的我就迫不及待开始开发体验,但折腾两天下来发现相对于Blazor的开发优点,这个学习成本以及问题修复时间成本更高(可能是本人比较菜 一直白折腾)
最简单的一个onclick事件点击没反应问题我愣是折腾了快两天才解决(页面点击实践需要写在默认的Client项目里才有效,为啥要把服务端和客户端项目页面结构搞一样的0.0),再就是刷新页面后点击按钮首次无效点第二次才会触发,测试了很多遍依然如此
本地化模式引用UI模板框架比较麻烦 就拿BootstrapBlazor组件来说,愣是把项目自带的razor文件逐个添加引用改了个遍 属实有点罗嗦了,再就是其组件调试绑定个bind-Value启动展示正常,渲染完成后莫名其妙自动删除了控件,用默认的bind-value就没有问题,关键是还看不出是啥问题导致,对新手入门不太友好。
上面的提出的问题其实也还好,主要是期间调试各种小毛病(有些问题可能并不是Blazor本身导致),最终折腾到了第三天连个登录页面功能都没完成,属实有点打击人,后面想想其实Vue模式也能大致实现我要的脱机运行效果,也就不折腾了,还是等以后有心情再尝试Blazor吧。
总的来说 瑕不掩瑜,还是值得花时间去学学的,其次推荐一下这个BootstrapBlazor开源UI框架 整体效果真心不错 大家感兴趣可以看看
传送门: BootstrapBlazor