前言

本文要说的这种开发模式,这种模式并不是只有blazor支持,js中有一样的方案next.js nuxt.js;blazor还有很多其它内容,本文近关注渐进式开发模式。

是的,前后端是主流,不过以下情况也许前后端分离并不是最好的选择:

  • 小公司,人员不多,利润不高,创业阶段能省则省
  • 个人开发者,接接私活,要么一个人全栈,累点;要么弄个小团队,各自分钱少点;
  • 不确定项目能做到啥程度,希望快速上线看效果,效果好继续,效果不好拉倒
  • 厌烦写js,又不得不做bs界面

诸如此类,不分离开发更简单,更省成本。

渐进式

vue是渐进式web前端框架,所谓的渐进式就是你不用一开始就整个项目全部使用vue,因为开始你可能并不熟悉vue,而是开始只使用vue的些简单功能,慢慢用它更复杂更好的功能,最终项目可能完全使用vue。

渐进式blazor不是官方名词,我随便喊的,它的意思是你不必一开始就使用前后端分离模式,而是用不分离模式简单的、快速开发、快速交付,后期如果用户量大了,你可以把一个或几个页面或组件变成分离模式,逐渐的变,最终可能把整个项目变成分离模式。俗话说:你可能还在画原型,而我的产品就是原型。

blazor是使用c#代替js写前端的web框架,它有如下几种渲染模式:

  1. 静态渲染:也称ssr,类似jsp、php、asp,由后端渲染静态html,所以你可以拿blazor来做普通网站,
  2. 服务端渲染:也称server模式,它还是在服务端执行代码,服务端和浏览器会建立一个websocket长连接,前端做了啥操作,消息发到服务器,服务器处理后计算需要改变的ui部分,推送给前端。
  3. 客户端渲染:也称assembly模式,首次访问时,下载dll到浏览器,可以aot发布为原生的webassembly运行,也可以在浏览器的webassembly中跑个小型.net运行时,在它之上跑我们的应用,所以可以理解它是纯前端
  4. auto模式:也称为同构渲染,首次访问以server模式运行,快速响应,且用户可以做任何操作;后台默默下载dll和运行时,之后自动切换为客户端模式,js中有类似的next.js nuxt.js。

.net8以前我们要么选择server模式,要么选择webassembly模式,只能二选难一,前者由于所有代码都在服务端,所以比较耗费服务器资源,但开发简单;后者是标准的前后端分离,不浪费服务器资源,但相对开发麻烦些。
.net8发布后,以前的mvc razorpage blazor server blazo webassembly都可以不用了,只需要创建blazor web app,至于使用哪种模式可以根据需要设置。

blazor的组件开发模式类似:vue组件、winform/webform的用户控件或自定义控件,更详细的请参考官方文档。

来了个单,按照惯例使用前后端分离方式

当然你可以使用其它方案,比如典型的:java提供api + vue前端,下图是blazor前后端分离方式,webapi提供接口 + blazor做前端,本质都一样

又来个单,为了简单,用不分离

你可以用php jsp asp等类似的方式,下图是blazor server方式,这个不太一样,blazor server是基于websocket实现交互的组件化开发方式。但总的来说是不分离方式。

用户量多了,不分离模式扛不住,渐进式分离

blazor的auto模式就是类似的模式。用户量大了原来的服务端渲染内存 cpu 都有巨大压力,那我们需要大重构成分离模式吗?no no no,你可以先把某个复杂的、访问频繁的、计算量大的、占用内存高的组件设置为auto模式,这样它最终会运行在客户端,就成了分离模式,又多了段时间,用户量更多了,你就继续改一部分组件,如此这般,用户越来越多,作为分离模式运行的组件越来越多,最终项目可能就变成纯纯的分离模式了。

反过来说,项目用了一段时间,没啥用户,项目死了,起码你前期投入并不多,不必太桑心。

渐进式web全栈:blazor web app的更多相关文章

  1. 《web全栈工程师的自我修养》读书笔记

    有幸读了yuguo<web全栈工程师的自我修养>,颇有收获,故在此对读到的内容加以整理,方便指导,同时再回顾一遍书中的内容. 概览 整本书叙述的是作者的成长经历,通过经验的分享,给新人或者 ...

  2. 基于LeanCloud云引擎的Web全栈方案

    LeanEngine-Full-Stack The FULL STACK DEVELOPER 复杂的项目, 协作分工, 自动化流程,代码组织结构,框架选择,国际化方案等 Generator 或者See ...

  3. Web全栈工程师修养

    全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工 ...

  4. Web 全栈大会:万维网之父的数据主权革命

    大家好,今天我和大家分享一下由万维网之父发起的一场数据主权革命.什么叫数据主权?很容易理解,现在我们的数据是把持在巨头手里的,你的微信通讯录和聊天记录都无法导出,不管是从人权角度还是从法理角度,这些数 ...

  5. 《web全栈工程师的自我修养》阅读笔记

    在买之前以为这本书是教你怎么去做一个web全栈工程师,以及介绍需要掌握的哪些技术的书,然而看的过程中才发现,是一本方法论的书.读起来的感觉有点像红衣教主的<我的互联网方法论>,以一些自己的 ...

  6. web性能优化 来自《web全栈工程师的自我修养》

    最近在看<web全栈工程师的自我修养>一书,作者是来自腾讯的前端工程师.作者在做招聘前端的时候问应聘者web新能优化有什么了解和经验,应聘者思索后回答“在发布项目之前压缩css和 Java ...

  7. 处女作《Web全栈开发进阶之路》出版了!

    书中源码下载地址:https://github.com/qinggee/WebAdvanced 01. 当初决定写博客的原因非常的纯洁:只要每个月写上 4 篇以上博客,月底的绩效奖金就多 500 块. ...

  8. 2020 Web 全栈面经

    2020 Web 全栈面经 1.简历 2. 技术 3. 项目 4. 架构 5. 沟通,协作 6.成长 7. 面试技巧 准备 电话确认,面试流程,五险一金缴纳情况 有无笔试,几轮,面试时间,答复时间 细 ...

  9. Web 全栈开发 MySQL 面试题

    Web 全栈开发 MySQL 面试题 MySQL MySQL 读写分离 读写分离原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行 ...

  10. Web 全栈开发 Redis 面试题

    Web 全栈开发 Redis 面试题 Redis 大 key 问题 https://www.cnblogs.com/xgqfrms/p/13601959.html Redis 数据结构 Redis 初 ...

随机推荐

  1. 2023牛客暑期多校训练营7 CGILM

    比赛链接 C 题解 知识点:位运算,贪心. 我们用分段的思想考虑大小关系,若在同一段则大小不能确定,一开始为 \([1,n]\) . 我们按位从高到低考虑,某位如果 \(b_i\) 产生了 \(1\) ...

  2. Qt安卓开发经验技巧总结V202308

    01:01-05 pro中引入安卓拓展模块 QT += androidextras . pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android ...

  3. 《CTFshow-Web入门》06. Web 51~60

    @ 目录 web51 题解 web52 题解 原理 web53 题解 原理 web54 题解 原理 web55 题解 原理 web56 题解 原理 web57 题解 原理 web58 题解 原理 we ...

  4. 扩展ABP的Webhook功能,推送数据到第三方接口(企业微信群、钉钉群等)

    前言 在上一篇文章[基于ASP.NET ZERO,开发SaaS版供应链管理系统]中有提到对Webhook功能的扩展改造,本文详细介绍一下具体过程. Webhook功能操作说明,请参见此文档链接:Web ...

  5. Understanding UML in seconds

    UML 是一种分析设计语言,也就是一种建模语言. UML结构解析 UML其结构主要包括以下几个部分: 视图(View) 多个图形组成的集合: 图(Diagram) 图的种类有13种图,但常用的也就两种 ...

  6. numpy 索引,切片 ,转置,变值,多个数组的拼接

  7. 如何理解DDD中的值对象

    引言 实体和值对象是领域驱动设计中的两个重要概念.相对实体而言,值对象更加抽象,理解起来也更晦涩一些.那么该如何理解值对象?我们先来看一下<实现领域驱动设计>书中对值对象的定义: 值对象 ...

  8. 「codeforces - 687D」Dividing Kingdom II

    link. 好题啊. 首先有一个类 kruskal 暴力,就是对于每一个询问,把所有边按权值大小排降序,第一个加进去成为奇环的边就是答案.注意我们不需要关注偶环长成什么样子,所以我们实际上维护的是一棵 ...

  9. Solution -「CSP 2019」Partition

    Description Link. 给出一个数列,要求将其分成几段,使每段的和非严格递增,求最小的每段的和的平方和. Solution 注意到 \(a_{i}\) 为正,对于正数有这样的结论: \[a ...

  10. Python 网页爬虫原理及代理 IP 使用

    一.Python 网页爬虫原理 Python 是一种高效的编程语言,在 Web 开发和数据分析领域广受欢迎.Python 的优秀模块使其更加适合大规模数据处理和 Web 服务的编程.网络爬虫是 Pyt ...