原文作者: Christian Findlay

原文链接: https://christianfindlay.com/2020/07/09/blazor-vs-traditional-web-apps/

Blazor是Microsoft团队开发的单页面应用程序(SPA)框架,它是与React,Angular和Vue.js有相同之处,但是它使用的是C#而不是JavaScript。它将C#带入SPA领域,并向传统的Web应用程序框架(如ASP .NET Web窗体和ASP .NET Core MVC)挑战,来构建Web应用程序。本文讨论了SPA和传统Web应用程序之间的选择,并说明了服务器端渲染和客户端渲染之间的区别。

传统Web应用程序

传统的Web应用程序是很少或没有客户端处理的应用程序。HTML在服务器端渲染并传递到浏览器。它们主要围绕静态文本和填写表单,并且大多数交互都需要刷新整页。浏览器通过HTML表单将数据发送到服务器,然后服务器再进行处理。像 ASP 和 PHP 这样的技术,在客户端和服务器之间的进行数据传输并处理。这种方式允许 html代码 和后端代码写在一起, 这样的优势是可以快速进行页面开发,传统的Web应用程序工作流通常向用户提供一个表单,一个提交按钮,并且在用户单击按钮后会从服务器收到响应,这样的用户体验通常不好。

ASP Web Forms是传统Web应用程序技术的示例,但是它不支持设计现代Web API。Microsoft引入了.NET Core,它支持从现代Web API到传统Web应用程序的所有内容,.NET Core的MVC风格是用于构建传统Web应用程序的框架。

SPA 单页面应用程序

SPA单页应用程序是基于Web的应用程序,其中基于通过API调用与服务器之间进行数据传输来动态修改UI。SPA在客户端呈现 HTML DOM。服务器通常在会话开始时传输所有HTML,JavaScript和CSS或WebAssembly代码,并且不将其作为后续API调用的一部分进行传输。浏览器修改HTML DOM,而不是从服务器请求获取完整的HTML内容。

Ajax是迈向SPA框架的第一步,这种方法在2000年代初开始流行。它使用JavaScript调用服务器端API,允许异步处理并局部刷新页面。与传统的Web应用程序相比,改善了用户交互体验,浏览器可以在屏幕上执行数据的部分更新,并且每次调用都没有HTML传输,许多传统的Web应用程序开始部分集成Ajax,开发人员在后端定义API接口,然后前端js负责api接口调用和处理。

Webpack等JavaScript模块化的打包程序开始出现,它简化了构建纯JavaScript应用程序的过程,很方便对程序打包成原生的应用, 与Vue.js,Angular和React等框架结合使用时,SPA更方便构建和部署,并且前端和后端人员定义API后可以并行开发,提升效率。

什么是Blazor?

Blazor是一个SPA框架,它使用编译的C#来操纵HTML DOM来替代JavaScript,Blazor允许使用服务器端或客户端托管模型,但是无论哪种情况,浏览器都可以操作HTML DOM客户端,该应用程序仍然是SPA应用程序。

对于C#程序员而言,非Blazor的SPA框架可能会有陡峭的学习曲线。Typescript与C#有一些相似之处,但是编程范例却大不相同。Blazor允许C#开发人员使用Visual Studio进行构建和调试,而TypeScript主要将开发人员与VS Code联系在一起。Visual Studio工具集通常是C#开发人员更熟悉的。

C#程序员几乎无需学习就可以开始开发Blazor Web应用程序,如果C#程序员已经使用ASP MVC,你会更得心应手,Blazor语法与ASP MVC语法非常相似,如果您的团队拥有MVC的代码库,则向Blazor的过渡将会更加容易。

Blazor托管模型

区分Blazor托管模型和页面渲染很重要,在客户端模型中,Blazor在浏览器内部的WebAssembly(WASM)上运行,在服务器端模型中,Blazor在服务器上运行,并通过Signal-R将HTML传输到客户端。两种模型都可提供与React,Vue.js或Angular等SPA框架同样的用户体验,但是有一些差异,服务器端模式不需要浏览器中的WASM支持,这意味着某些较旧的浏览器可以使用服务器端托管模型。

服务器模式的优点

  • 初始页面下载可以小很多
  • 可以利用已安装的服务器端组件进行处理
  • Visual Studio完全支持使用服务器端模型进行调试

服务器模式的缺点

  • 没有离线功能,断开互联网连接后,处理将停止。
  • 延迟增加

客户端模式的优点

  • 客户端UI处理,可以减少对服务器的压力
  • 当用户比较多时,服务器不用去管理很多的Socket连接
  • 比Js 有更好的处理性能

客户端模式的缺点

  • WASM上的.NET目前还没有发挥其全部性能潜力, 但是AOT编译有望在不久的将来显著提高性能。
  • 互动仅限于浏览器的功能
  • 初始化页面比较慢,因为要下载 .NET 运行时。
  • 调试客户端Blazor应用程序会受到一些限制和问题。

总结

用户通常期望现代的Web应用程序具有SPA的功能,传统的Web应用程序可能适用于涉及传统基础架构或简单页面,但是,如果用户在整个页面重新加载时提供了不好的体验,他们可能不太会喜欢使用这些程序,具有C#经验的开发团队应在下一个Web应用程序中考虑Blazor,Blazor可能意味着不需要培训人员使用JavaScript或TypeScript,并且提供了服务器和客户端两种模式,可以灵活使用。

最后

欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

Blazor VS 传统Web应用程序的更多相关文章

  1. Struts2---Result(传统Web应用程序与Ajax应用程序的异同)

    看了很久的struts,在视频和书的引导下,慢慢明白了点,推荐:<struts 2 in action>和马士兵的视频 今天看结果这块时,由于还没有学过ajax等,不太明白,但是必须弄懂嗒 ...

  2. Blazor WebAssembly 渐进式 Web 应用程序 (PWA) 使用 LocalStorage 离线处理数据

    原文链接:https://www.cnblogs.com/densen2014/p/16133343.html Window.localStorage 只读的localStorage 属性允许你访问一 ...

  3. 构建现代Web应用时究竟是选择传统web应用还是SPA

    在大前端盛行的今天,似乎前后端分离的开发模式才是大势所趋,而SPA的概念更是应运而生.现在随便构建一个web应用程序如果你不是使用SPA的话,就会感觉有点low,但是真的是这样吗?今天这篇文章我们就来 ...

  4. Blazor Server 和 WebAssembly 应用程序入门指南

    翻译自 Waqas Anwar 2021年3月12日的文章 <A Beginner's Guide To Blazor Server and WebAssembly Applications&g ...

  5. 简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成

    大家好! 今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能.我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Win ...

  6. 为什么移动Web应用程序很慢(译)

    前些日子,看到Herb Sutter在自己的博客中推荐了一篇文章<Why mobile web apps are slow>,在推荐里他这样写道: “I don’t often link ...

  7. 利用memcached构建高性能的Web应用程序(转载)

    面临的问题 对于高并发高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题.特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰 值已经达到500的时候,那你的程序运行离崩溃的边 ...

  8. 让人爱不释手的13套精美 Web 应用程序图标素材(转)

    图标用于向用户传递信息,不管是在网页还是 Web 应用程序中都非常需要.这些小小的图标元素能够告诉用户怎么到下一页,如何添加.删除和取消等等各种操作.设计精美的图标不仅能增加界面的美观,也能够让应用程 ...

  9. [转]为什么移动Web 应用程序很慢

    原文出处: Herb Sutter   译文出处: tangzhnju 我写过不少文章来讨论为什么移动Web应用程序很慢,这也引起了不少的讨论.但是不幸的是,这些讨论没有像我喜欢的那样的基于事实. 所 ...

随机推荐

  1. Linux使用inode(i节点号)删除文件

    今天学习Linux的时候遇到的知识点,想起了以前一次线下AWD攻防赛的时候的不死马,记录一下 在Linux里面,有的时候我们会遇到奇奇怪怪的文件名,以至于我们删除不了,比如说我们创建了一个叫做&quo ...

  2. [GXYCTF2019] MISC杂项题

    buuoj复现 1,佛系青年 下载了之后是一个加密的txt文件和一张图片 分析图片无果,很讨厌这种脑洞题,MISC应该给一点正常的线索加部分脑洞而不是出干扰信息来故意让选手走错方向,当时比赛做这道题的 ...

  3. 性能测试基础——(MEN)

    关于内存在一块其实我并不是很想拿出来说,一般情况下内存这一块都是可优化的,可以通过硬件资源或者调整一些系统或者应用系统的参数配置来进行优化. 很多同僚问到了"内存泄漏"和" ...

  4. 【老孟Flutter】41个酷炫的 Loading 组件库

    老孟导读:目前 loading 库中包含41个动画组件,还会继续添加,同时也欢迎大家提交自己的 loading 动画组件或者直接微信发给我也可以. Github 地址:https://github.c ...

  5. 轮廓检测论文解读 | 整体嵌套边缘检测HED | CVPR | 2015

    主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, gr ...

  6. windows 上的MySQL默认字符集设置踩过的坑

    前言: 前几天刚买了新电脑,装上MySQL有几天了,今天没事试了一下,发现默认字符集没有修改,还是默认的latin1,折腾了大半天,终于搞好了. 这是我成功设置后的结果图: 命令式直接在MySQL界面 ...

  7. 2020-2021-1 20209307《Linux内核原理与分析》第一周作业

    一.Linux基础命令操作 1.查看目录.新建文件.复制移除文件等 ls[选项] [文件或目录] -a 显示所有文件 包含隐藏文件 -l显示详细信息 -d查看目录属性 pwd显示当前目录 mkdir ...

  8. 图的建立以及应用(BFS,DFS,Prim)

    关于带权无向图的一些操作 题目:根据图来建立它的邻接矩阵,通过邻接矩阵转化为邻接表,对邻接表进行深度优先访问和广度优先访问,最后用邻接矩阵生成它的最小生成树: 1.输入一个带权无向图(如下面图1和图2 ...

  9. Spark-2-性能监控方式

    1 Spark Web UI Spark提供了一些基本的Web监控页面,对于日常监控十分有用. 通过http://master:4040(默认端口是4040,可以通过spark.ui.port修改)我 ...

  10. 开源OLAP引擎对比

    什么是olap 01.绝大多数请求都是读请求 02.数据以相当大的批次(>1000行)更新,而不是单行更新;或者它根本没有更新 03.数据已添加到数据库,但不会进行修改 04.对于读取,每次查询 ...