[Asp.Net Core] 浅谈Blazor Server Side

 更新时间:2020-08-17 06:17:18   作者:佚名   我要评论(0)

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

在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 的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

  • [Asp.Net Core]用Blazor Server Side实现图片验证码

相关文章

  • [Asp.Net Core] 浅谈Blazor Server Side

    [Asp.Net Core] 浅谈Blazor Server Side

    在2016年, 本人就开始了一个内部项目, 其特点就是用C#构建DOM树, 然后把DOM同步到浏览器中显示. 并且在一些小工程中使用. 3年下来, 效果很不错, 但因为是使用C#来构
    2020-08-17
  • [Asp.Net Core]用Blazor Server Side实现图片验证码

    [Asp.Net Core]用Blazor Server Side实现图片验证码

    关于Blazor 由于在国内, Blazor一点都不普及, 在阅读此文前, 建议读者先翻看我之前写的随笔, 了解Blazor Server Side的特点. 在一段时间内, 我会写一些解说分析型的
    2020-08-17
  • 使用vs2019加.net core 对WeiApi的创建过程详解

    使用vs2019加.net core 对WeiApi的创建过程详解

    vs2019创建webapi 1.创建新的项目 2.选择.NET CORE的ASP .NET CORE WEB应用程序 3.定义项目名称和存放地点 4.选择API创建项目 5.删除原本的无用的类 6.添加新的
    2020-08-17
  • [Asp.Net Core]提高开发效率的方法

    [Asp.Net Core]提高开发效率的方法

    一、概述 在园子里面有很多关于各种技术细节的研究文章,都是比较牛逼的框架研究;但是一直没有看到关于怎么样提高开发效率的文章,大多提高开发效率的文章都是关
    2020-08-17
  • .Net Core + Nginx实现项目负载均衡的全步骤

    .Net Core + Nginx实现项目负载均衡的全步骤

    nginx大家如果没用过那或多或少都应该听过,vue的部署、反向代理、负载均衡nginx都能帮你做到。 今天主要说一下nginx负载均衡我们的项目,如下图所示,请求到达nginx
    2020-08-17
  • 详解ASP.NET Razor 语法

    详解ASP.NET Razor 语法

    Razor 同时支持 C# (C sharp) 和 VB (Visual Basic)。 主要的 Razor C# 语法规则 Razor 代码块包含在 @{ ... } 中 内联表达式(变量和函数)以 @ 开头 代码语
    2020-08-17
  • 详细分析ASP.NET Razor之C# 变量

    详细分析ASP.NET Razor之C# 变量

    变量 变量是用来存储数据的。 一个变量的名称必须以字母字符开头,并且不能包含空格或者保留字符。 一个变量可以是一个指定的类型,表示它所存储的数据类型。string
    2020-08-17
  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    1、什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写。"Ajax"这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙
    2020-08-17
  • ASP.NET Core Authentication认证实现方法

    ASP.NET Core Authentication认证实现方法

    追本溯源,从使用开始     首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式讲解 public
    2020-08-17
  • .Net Core如何对MongoDB执行多条件查询

    .Net Core如何对MongoDB执行多条件查询

    以前项目基本上全部使用MySQL数据库, 最近项目排期空出了一点时间leader决定把日志模块迁移到插入/查询性能更好的MongoDB上. 多条件查询的写法着实费了些功夫, 撰文
    2020-08-17

最新评论