[Asp。净]Blazor服务器端核心的分析

介绍

本篇内容介绍了”[Asp。净]Blazor服务器端核心的分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在2016年,本人就开始了一个内部项目,其特点就是用c#构建DOM树,然后把DOM同步到浏览器中显示。并且在一些小工程中使用。

3年下来,效果很不错,但因为是使用c#来构建控件树,在没有特定语法的情况下,代码风格不是那么好。

典型的风格大概是这样的:

 [Asp。净]Blazor服务器端核心的分析

这个模式挺好的,有点嫌弃c#代码占比太高,HTML代码靠字符串来完成,在界面的设计上,比较吃力。

在2019年秋,Asp。Net 3.0出来了,Blazor服务器端也正式公布,可以在VS2019中使用。

当时我就去尝尝鲜,发现这东西,和我的框架很接近。不同的是,

Blaozr服务器端是基于MVVM的,而我的框架是基于传统控件树的。

Blazor毕竟有微软做爸爸,在VS上的支持是直接的,由剃刀文件来负责HTML + c#的代码模式,完全支持智能提示。

天呀,这不是就是我梦寐以求的开发方式吗?于是,在疫情期间,我把以前的框架,和Blazor直接整合在一起。开始做一些小工程做验证。

现在这个整合大部分需求与问题都得到了解决。还需要提供更多的控件用以提高工程的开发速度。

先上的图,,看看Blazor的代码是长什么样子的。

(剃须刀语法,和MVC有点接近。但是MVC是输出静态HTML的,Blazor组件是生成服务器树状结构的)

 [Asp。净]Blazor服务器端核心的分析

与MVC的剃刀语法是接近的,然而最大不同时,MVC的最终目标是生成字符串发给浏览器只而Blazor生成了模型之后,依然是“活动“的,随时准备好响应客户端的事件。

 [Asp。净]Blazor服务器端核心的分析

对于Blazor架构的一些特点,画了一些图。

首先,我把这种模式成为“服务器UI映射“;后,面都会陆续使用这个概念。

<>强个人看法,通常的情况,仅供参考

 [Asp。净]Blazor服务器端核心的分析

 [Asp。净]Blazor服务器端核心的分析

Blazor因为在服务器上把代码运行状态驻留在内存,

所以程序运行的上下文得以保存,而关联的事件也会绑定到上下文中。

事件处理函数被调用时,相关的对象和数据会全部可用。

具体的细节无法说太多,毕竟这是新事物,我自己也是一边使用一边积累心得。

我以后会陆陆续续放上各种例子,提供给感兴趣的网友们,用节省时间的方式去迅速掌握Blazor的开发流程。

最后,放上一个对照表,以供参考:


服务器UI映射C/某人/S  B + C混合简单概述活在服务器
,投影到客户端活在客户端
,与服务器通信服务器生成HTML
,客户端展示与回发服务器先生成HTML
,客户端深化界面功能典型方案Blazor服务器端
,在服务器托管平台:Windows/Android/iOS GUI框架
,网页:JS控件类/反应/Argular/Vue . .
, Blazor WebAssembly
, Blazor Server  Side 在客户机hosted 各种WEB服务器方案:
, ASP/ASP。净WebForms, MVC
, PHP/Java/node . js/. .各种框架混合使用典型应用无,适合:微信公众号应用,
,网站后台,手机嵌入页面
,小程序webview嵌入页面各种桌面/移动客户端
,游戏客户端,网站SPA、微信小程序,各种入门级展示型网站各种复杂点的网站读写数据直接、方便需通过服务器代劳直接、方便混合通信方式已在服务器运行HTTP/套筒/WebSocket等等
,由各平台/框架提供HTTP GET/POST为主混合通信代码无需额外编写(优点)基于XML/JSON/查询/形式/自定格式
,程序员指定具体的名称与值
,服务器与客户端都要编写大量代码(缺点)
,关乎权限的话要保证安全性,工作量会很大主要的是查询/形式
,程序员指定具体的名称与值
,只适合简单的程序混合服务重启
,热更新丢失未保存的状态(缺点)
,对正使用的用户造成影响未保存状态在客户端保存
,只要重试便可状态在浏览器保存
,只要重试便可状态在浏览器保存

[Asp。净]Blazor服务器端核心的分析