[Asp.Net Core] 浅谈Blazor Server Side

 更新时间:2021年9月22日 10:00  点击:1880

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

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

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

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

在2019年秋, Asp.Net 3.0出来了, Blazor Server Side 也正式公布, 可以在VS2019中使用.

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

Blaozr Server Side 是基于 MVVM 的, 而我的框架是基于传统控件树的.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

服务器UI映射 C/S B/S  B+C混合
简单概述 活在服务器
投影到客户端
活在客户端
与服务器通信
服务器生成HTML
客户端展示与回发
服务器先生成HTML
客户端深化界面功能
典型方案 Blazor Server Side
at server hosted
平台:Windows/Android/iOS GUI框架
网页:JS控件类/React/Argular/Vue..
Blazor WebAssembly
Blazor Server Side at client hosted 
各种WEB服务器方案:
ASP/ASP.NET WebForms,MVC
PHP/Java/Node.js/..
各种框架混合使用
典型应用 无 , 适合: 微信公众号应用,
网站后台, 手机嵌入页面
小程序webview嵌入页面
各种Desktop/Mobile客户端
游戏客户端,网站SPA,微信小程序,
各种入门级展示型网站 各种复杂点的网站
读写数据 直接, 方便 需通过服务器代劳 直接, 方便 混合
通信方式 已在服务器运行 HTTP/Socket/WebSocket等等
由各平台/框架提供
HTTP GET/POST为主 混合
通信代码 无需额外编写(优点) 基于XML/JSON/Query/Form/自定格式
程序员指定具体的名称与值
服务器与客户端都要编写大量代码(缺点)
关乎权限的话要保证安全性,工作量会很大
主要是Query/Form
程序员指定具体的名称与值
只适合简单的程序
混合
服务重启
热更新
丢失未保存的状态(缺点)
对正使用的用户造成影响
未保存状态在客户端保存
只要重试便可
状态在浏览器保存
只要重试便可
状态在浏览器保存
只要重试便可
服务器负荷 最重,(缺点)
每在线用户会占用服务器内存
只适合少量在线用户场合
最少(优点)
服务器基本上只处理业务逻辑
每个请求会很快释放,负担很小
不多 较少
适合场景 资金少的企业定制应用
用户量较少的小功能
以快速开发为目标
通用开发模式
适合绝大部分情况
比较适合内容展示网站
或比较简单的业务系统
混合
代码部署 纯服务器,更保密 客户端,没那么保密(缺点)
通信机制可能会被滥用攻击
服务器为主,较为保密 混合情况
首次启动 极快 100KB下载量起 慢,看框架和程序整体大小 极快, 看内容多少 混合
版本更新 直接覆盖 客户端需下载或重新载入 直接覆盖 混合情况
搜索引擎 可被收录
被恶意
收集数据
目前较安全 通过通信协议收集 通过爬虫收集 混合

以上就是[Asp.Net Core] 浅谈Blazor Server Side 的详细内容,更多关于Blazor Server Side 的资料请关注猪先飞其它相关文章!

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • C#查询SqlServer数据库并返回单个值的方法

    这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下...2020-06-25
  • SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法

    这篇文章主要介绍了SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法,需要的朋友可以参考下...2020-07-11
  • C#实现Excel表数据导入Sql Server数据库中的方法

    这篇文章主要介绍了C#实现Excel表数据导入Sql Server数据库中的方法,结合实例形式详细分析了C#读取Excel表数据及导入Sql Server数据库的具体操作步骤与相关操作技巧,需要的朋友可以参考下...2020-06-25
  • SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息

    SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 'WIN-8IVSNAQS8T7\Administrator' 的信息,错误代码 0x534。 [SQLSTATE 42000] (ConnIsLoginSysAdmin)...2021-07-15
  • C#连接到sql server2008数据库的实例代码

    这篇文章主要介绍了C#连接到sql server2008数据库的实例代码,需要的朋友可以参考下...2020-06-25
  • 详解ASP.NET Core 中基于工厂的中间件激活的实现方法

    这篇文章主要介绍了ASP.NET Core 中基于工厂的中间件激活的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • C#编程实现连接SQL SERVER数据库实例详解

    这篇文章主要介绍了C#编程实现连接SQL SERVER数据库的方法,以实例形式较为详细的分析了C#连接SQL SERVER数据库的相关步骤与具体实现技巧,需要的朋友可以参考下...2020-06-25
  • SQL SERVER迁移之更换磁盘文件夹的完整步骤

    这篇文章主要给大家介绍了关于SQL SERVER迁移之更换磁盘文件夹的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • CentOS8安装SQLServer2019的过程

    这篇文章主要介绍了CentOS8安装SQLServer2019的步骤,本文通过命令实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    这篇文章主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • SqlServer 数据库 三大  范式

    本文将基于三大范式原则,结合具体的实例做简要分析,对SqlServer 数据库 三大 范式相关知识感兴趣的朋友一起看看吧...2020-07-11
  • Underscore源码分析

    Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02