Blazor VS 传统Web应用程序

原文作者: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Web Forms 中引入依赖注入机制

依赖注入技术就是将一个对象注入到一个需要它的对象中,同时它也是控制反转的一种实现,显而易见,这样可以实现对象之间的解耦并且更方便测试和维护,依赖注入的原则早已经指出了,应用程序的高层模块不依赖于低层模块&…

python网页动图_python,tensorflow线性回归Django网页显示Gif动态图

1.工程组成2.urls.py"""Django_machine_learning_linear_regression URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.1/topics/http/urls/Examples:Function views1. Add …

asp.net core集成CKEditor实现图片上传功能

背景本文为大家分享了asp.net core 如何集成CKEditor ,并实现图片上传功能的具体方法,供大家参考,具体内容如下。准备工作1.visual studio 2019 开发环境2.net core 2.0 及以上版本实现方法1、新建asp.net core web项目2、下载CKEditor这里我…

看了一天小说

在公司呆了一天什么都没干,看了一天小说。都不知道自己啥时候变得这么堕落的,不过还好,至少小说是我喜欢看的那种,很热血的小说。不会有主管看到我的Blog吧, 明天要干点正事了,还是得跟自己说一下&#xff…

Blazor VS React / Angular / Vue.js

原文作者: Christian Findlay原文链接:https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js/Blazor是一项新的Microsoft技术,允许开发人员使用C#为浏览器编写代码, 本文将Blazor与其他三个常见SPA框架进行了比较&#x…

c语言的使用比例远远高于python语言对吗_Python和C语言的语法有什么不同?

随着经济发发展,互联网精英的缺乏越来越严重了,尤其是编程工程师,市场缺乏率极高,所有对于准备即将学习编程朋友,是一个非常的好时机Python和C语言的语法有什么不同?python与C的区别如下:1、语言…

ASP.NET 應用程式的安全性模型

本單元內容 功能 ASP.NET 應用程式依賴於許多不同元素及技術的成功交互操作。每個方案元件都提供安全性功能,以滿足其自身的需求。然而,純粹從個別元件的角度考量安全性還不夠。若要提供整體方案的安全性,您還必須考量元件如何彼此互動。 本單…

.NET开源5年了,这些宝藏你还没get?

从2016年微软发布.NET Core1.0,至今.NET开源也快5年了,GitHub也涌现了很多优秀的开源项目,关于CLR层面调优的讨论也多了起来,尤其是龙芯.NET开源的CLR迁移项目,更是让.NET进入一个全新的时代。鲁迅说过:菜鸟…

C#来创建和读取XML文档 [转]

C#来创建和读取XML文档【关键词】:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML(eXtensible Markup Language)&#xff0…

探索 .NET团队对API的设计流程

原文作者:steve gordon 原文链接: https://www.stevejgordon.co.uk/how-are-dotnet-apis-designed在这篇文章中,我想介绍一些我觉得非常有趣的东西,.NET 团队是如何设计API的?我们先来看下.NET团队面临的有哪些挑战,您…

mybatis mysql usegeneratedkeys_mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录在项目中经常需要获取到插入数据的主键来保障后续操作&#xf…

Istio 知多少 | 下一代微服务的守护者

1. 引言在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完《Service Mesh入门》,又大致浏览了一遍官方文档,对Istio也算有了基本的认识。下面就根据自己的…

微软家也会出错

下图是2006年2月8日微软WebCast首页的截图转载于:https://www.cnblogs.com/mssite/archive/2006/02/08/327130.html

C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项

在 2020 年的最后一天,博客园发起了一个开源项目:基于 .NET 的博客引擎 fluss,我抽空把源码下载下来看了下,发现在属性的定义中,有很多地方都用到了 null!,如下图所示:这是什么用法呢&#xff1…

微前端架构在容器平台的应用

源宝导读:随着业务的发展,天际-星舟平台未来需要解决与其他云共创共建,跨团队高效协作等诸多问题,而星舟现有的技术架构将难以支撑。本文将介绍星舟平台如何通过向更先进的“微前端”架构演进落地,以应对将来快速增长的…

Microsoft PHP.Net ?

居然发现老外有个项目在把PHP搞成象。NET那样咯,核心是Framework 上把 PHP 编译为MSIL。居然见http://www.php-compiler.net/,而且今年居然还FINAL 1.0出来了,这对象把PHP放到.NET平台上来的人说是好消息。20 February 2006: Phalanger versi…

巧用 Lazy 解决.NET Core中的循环依赖关系

原文作者: Thomas Levesque 原文链接:https://thomaslevesque.com/2020/03/18/lazily-resolving-services-to-fix-circular-dependencies-in-net-core/循环依赖的问题在构建应用程序时,良好的设计应该应避免服务之间的循环依赖, 循环依赖是指某些组件直接…

java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...

原标题:怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习Java的学习中,并没有那么的繁琐,只需要我们逐步掌握,就能够发觉java是全世界最好的编程语言之一。那么今天就带领大家进行简单的JAVA初级学…

小试elsa

最近工作需要,在调研BMP产品(开源和商用),重点了解了activiti和它的商业产品Alfresco Process Services,这是java的体系,成熟,完善(三方开源库是java多年开源积累下的最宝贵的财富),…

java抠图人物背景图片_如何进行人物抠图?让你快速完成复杂背景人像的在线抠图...

大多数男生心目中都有一个女神,虽然在其他人眼中不过是普通人,但是在自己眼中她怎么看怎么有魅力。当然对于女神提出的各种各样的“要求”或是请求,你们定然是不会轻易拒绝的。但若是女神需要你帮忙抠图,你知道如何进行人物抠图吗…