ASP.NET Web UI 框架 Razor Pages/MVC/Web API/Blazor

前言 💢

🎯 记得以前用 Asp.net 做 网页开发 是的时候那时候还是 Web Forms ,后来 MVC 出来后也是火的不得了。那个时候还没有所谓的前后端分离一说,像 Vue.jsReact 、Angular 的这些前端框架还没出生,那时候 Jquery 风靡一时,后端开发人员基本都会,那时候没有前端开发一说,顶多就是美工UI充当一下。

回顾过去 🕐

‌这么多年过去了,我从纯 后端 开发 辗转 安卓、IOS、小程序、web前端、物联网各个领域,现在回过头来再看现如今的 ASP.NET Core Web 应用框架,优点感觉陌生了,我记忆中还停留在 MVC时代。后来接触开发的都是前后端分离的,基于 Vue2/3 全家桶的,现在又出来 Razor Blazor 两个 ASP.NET Core 自带的 Web UI 框架,简单查阅了下,貌似官方在一直更新优化,现在也是有模有样很强大,索性花点时间了解下。

官方推荐 

ASP.NET Core 是一个完整的 UI 框架。 你可以选择要结合哪些功能,以满足应用的 Web UI 需求。对于新的项目开发,我们推荐 ASP.NET Core Blazor

一、ASP.NET Core Blazor 🎀

 Blazor 是一个全栈 Web UI 框架,建议用于大多数 Web UI 方案。

使用 Blazor 的好处:

  • 可重用的组件模型。
  • 高效的基于差异的组件呈现。
  • 通过 WebAssembly 从服务器或客户端灵活地呈现组件。
  • 使用 C# 生成丰富的交互式 Web UI 组件。
  • 从服务器静态呈现组件。
  • 逐步增强服务器呈现组件,以实现更流畅的导航和表单处理并启用流式呈现。
  • 共享客户端和服务器上通用逻辑的代码。
  • JavaScript 互操作。
  • 将组件与现有的 MVC、 Razor 页面或基于JavaScript 的应用集成。

有关 Blazor 及其体系结构和优势的完整概述,请参阅 ASP.NET CoreBlazor 和 ASP.NET Core Blazor 托管模型。 若要开始使用第一个 Blazor 应用,请参阅生成第一个 Blazor 应用。

二、ASP.NET Core Razor Pages 🎗️

 Razor 页面是一个基于页面的模型,用于生成服务器呈现的 Web UI Razor 页面 UI 在服务器上动态呈现,以生成页面的 HTML CSS 来响应浏览器请求。 页面在到达客户端时已准备好显示。 对 Razor Pages 的支持是建立在 ASP.NET Core MVC 基础之上的。

🔖 Razor 页面的优势:

  • 快速构建和更新 UI。 页面的代码与页面一起保存,同时保持 UI 和业务逻辑关注点相互分离。
  • 可进行测试并缩放到大型应用。
  • 组织 ASP.NET Core 页面,使用起来比 ASP.NET MVC 更简单:
    • 视图的具体逻辑和视图模型可以一起保存在它们自己的命名空间和目录中。
    • 相关页面的组可以保存在各自的命名空间和目录中。

若要开始使用你的第一个 ASP.NET Core Razor Pages 应用,请参阅 Razor 。 有关 ASP.NET Core Razor Pages、其体系结构和优势的完整概述,请参阅 Razor

三、ASP.NET Core MVC 🧣

ASP.NET Core MVC 在服务器上呈现 UI,并使用模型-视图-控制器 ( MVC ) 结构模式。 MVC 模式将应用分成三组主要组件:模型、视图和控制器。 用户请求被路由到控制器。 控制器负责使用模型来执行用户操作或检索查询结果。 控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。

🔖 ASP.NET Core MVC 的优势:

  • 基于可缩放且成熟的模型生成 大型 Web 应用。
  • 明确分离关注点以获得最大的灵活性。
  • 模型-视图-控制器的责任分离,确保了业务模型的发展,而不会与底层的实现细节紧密相连。

若要开始使用 ASP.NET Core MVC,请参阅开始使用 ASP.NET Core MVC。 有关 ASP.NET Core MVC 的体系结构和优势的概述,请参阅 ASP.NET Core MVC 概述。

四、单页应用程序 (SPA) 📑

使用热门的 JavaScript 框架(如 Angular、React 和 Vue)生成适用于 ASP.NET Core 应用的客户端逻辑。 ASP.NET Core 为 Angular、React 和 Vue 提供了项目模板,也可以用于其他 JavaScript 框架。

在前面列出的客户端呈现的优点基础上,将 ASP.NET Core SPA 与 JavaScript 框架结合使用也有🔖一些优点:

  • JavaScript 运行时环境已随浏览器提供。
  • 大型社区和成熟的生态系统。
  • 使用热门的 JS 框架(如 Angular、React 和 Vue)构建适用于 ASP.NET Core 应用的客户端逻辑。

🚫缺点:

  • 需要更多编码语言、框架和工具。
  • 难以共享代码,因此一些逻辑可能会重复。

如要入门,请参阅:

  • 使用 Angular 创建 ASP.NET Core 应用
  • 使用 React 创建 ASP.NET Core 应用
  • 使用 Vue 创建 ASP.NET Core 应用
  • Visual Studio 中的 JavaScript 和 TypeScript

五、组合多个 Web UI 解决方案⚖️  

 MVC Razor Pages Blazor 都是 ASP.NET Core 框架的一部分,设计为可以结合使用。  Razor 组件可以集成到Razor Pages  MVC 应用。 呈现视图或页面时,可以同时预呈现组件。

在 MVC 或 Razor Pages 的优点基础上,MVC 或 Razor Pages 与 Blazor 结合使用的优点如下:

  • 预呈现会在服务器上执行 Razor 组件,并将其呈现到视图或页面中,从而提高应用的感知加载时间。
  • 使用组件标记帮助程序将交互性添加到现有视图或页面。

若要开始使用 ASP.NET Core MVC 或 Razor Pages, Blazor请参阅 将 ASP.NET Core Razor 组件与 MVC 或 Razor Pages 集成。

六、定位和性能分析 🆚

在性能方面, Blazor Web  Razor Pages 各有千秋。Blazor Web 最初加载时,可能会有些“慢热”,因为它需要把整个应用和 .NET 运行时下载到浏览器中。然而,一旦进入状态, Razor Pages 的表现就是一气呵成——所有交互都在客户端完成,没有频繁的服务器往返,因此体验上会更流畅。

 Razor Pages 则在初次登场时表现迅速——所有内容都由服务器提前渲染好,直接送到浏览器。这意味着初次加载很快,但是在后续的交互中,每次请求都要与服务器“见面”,所以用户体验可能稍显迟滞。

七、SEO 优化分析 📧

对于 SEO 来说, Razor Pages 是天然的亲和力型选手,因为所有的内容都是服务器渲染的,搜索引擎的爬虫们可以轻松抓取页面内容。而 Blazor Web 则需要一些额外的“功夫”来优化 SEO ,因为它主要在客户端渲染内容,这对搜索引擎来说,多少有些“难懂”。

八、灵活性

 Blazor Web 更像是一个拼插积木的高手,它的一切都基于组件。每个组件都是一个独立的小积木,你可以随心所欲地拼搭它们——增加、减少、嵌套、复用,完全按照你的需要来定制。这种基于组件的开发方式,带来了极高的灵活性和复用性。

Razor Pages 则走的是“页面”路线,每个页面都有自己固定的角色。它的页面模型更像是一张张独立的剧本——每个页面有它的 HTML(.cshtml 文件)和后台逻辑(.cs 文件),虽然简单直观,但是灵活性稍逊一筹。

喜欢的话关注一下吧~~💕 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOV11 快速使用教程

概述 这里主要记录使用NVIDIA GPU pytorch 检测系列模型的快速使用方式,可以快速解决一些工业应用的问题,比如:无网、数据大需要改路径、需要记录不同实验结果等问题。 安装 参考官网,自己安装好Python > 3.8和pytorch >…

双绞线直连两台电脑的方法及遇到的问题

文章目录 前言一、步骤二、问题总结:问题1:遇到ping不通的问题。问题2:访问其他电脑上的共享文件时提示输入网络凭证问题3:局域网共享文件时提示“没有权限访问,请与网络管理员联系请求访问权限” 前言 办公室里有两台电脑,一台装了显卡用于…

电子信息工程自动化 基于单片机的出租车计价器设计

摘 要 出租车作为一种城市中非常重要的公共交通工具,他与人们的生活息息相关。所以我也设计了一款出租车计价器,它采用模块化设计,包含里程测量模块、数据存储模块、按键模块、时钟模块、显示模块、语音播报模块六大主要模块。本设计的出租车…

day1:ansible

ansible-doc <module_name>&#xff08;如果没有网&#xff0c;那这个超级有用&#xff09; 这个很有用&#xff0c;用来查单个模块的文档。 ansible-doc -l 列出所有模块 ansible-doc -s <module_name> 查看更详细的模块文档。 ansible-doc --help 使用 --help …

yolov,coco标记的无增强版的水稻病害数据集 共 1448 张图片

之前用过增强图片之后标记的效果不是特别理想&#xff0c;因此这里给大家分享一下使用无增强的版本&#xff1a; yolov,coco标记的无增强版的水稻病害数据集 共 1448 张图片 稻瘟病 细菌性枯萎病 褐斑病 数据集下载&#xff1a; yolov8&#xff1a;https://download.csdn.net…

uniapp微信小程序开发地图多边形渲染,圆形渲染,省市区区域渲染解决方案-(已实测通过)

一、多边形渲染(只需给map组件绑定对应的polygons即可) <mapid="map"class="map":latitude="latitude":longitude="longitude":markers="covers":polyline="polyline":scale="18"@markertap="…

IntelliJ+SpringBoot项目实战(28)--整合Beetl模板框架

在前面的文章里介绍过freemarker&#xff0c;thymeleaf模板引擎&#xff0c;本文介绍另一个性能超高的模板引擎---Beetl&#xff0c;据说此模板引擎的性能远超Freemarker。官网的说法是&#xff0c;Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker&#xff0c;2倍…

jeecg-uniapp 跨域问题解决方法记录

今天折腾这个很恶心的问题,工作需要经验才行,根本没有什么技术难点,都是经验而已 问题在此 发现没有替换掉前缀 :8085/#/pages/login/login:1 Access to XMLHttpRequest at http://192.168.152.32:8194/h5api/api/user/login from origin http://localhost:8085 has been bloc…

AD20 原理图库更新到原理图

一 点击工具&#xff0c;从库更新。快捷键TL 二 点击完成 三 执行变更&#xff0c;最后点击关闭

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程

系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…

Unity 设计模式-策略模式(Strategy Pattern)详解

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;定义了一系列算法&#xff0c;并将每种算法封装到独立的类中&#xff0c;使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化&#xff0c;客户端通过与这些策略对象进…

Android环境搭建

Android环境搭建 第一步&#xff1a;安装 Homebrew 执行以下命令来安装 Homebrew&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"检测是否安装成功&#xff1a; brew --version第二步&#xff1a;安装 No…

摄影后期学什么_好学吗?

当你按下相机快门&#xff0c;捕捉到那珍贵的瞬间&#xff0c;摄影可还没画上句号哦&#xff01;摄影后期就像是一场神奇的魔法秀&#xff0c;能让你的照片从平凡瞬间变身惊艳大片。那在这场魔法之旅中&#xff0c;咱们得学习哪些厉害的法术呢&#xff1f; 先来说说光影调整这…

短视频矩阵系统saas源码 ---技术源头搭建部署

短视频矩阵系统源码 短视频矩阵系统源码主要有三种框架&#xff1a;Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架&#xff0c;提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架&#xff0c;用于将数据模型、Web应用…

mock.js介绍

mock.js http://mockjs.com/ 1、mock的介绍 *** 生成随机数据&#xff0c;拦截 Ajax 请求。** 通过随机数据&#xff0c;模拟各种场景&#xff1b;不需要修改既有代码&#xff0c;就可以拦截 Ajax 请求&#xff0c;返回模拟的响应数据&#xff1b;支持生成随机的文本、数字…

Spring Authorization Server入门 (十二) 实现授权码模式使用前后端分离的登录页面

基于Spring Session的前后端分离文章已发布&#xff1a;《Spring Authorization Server基于Spring Session的前后端分离实现》 2023-12-01修改&#xff1a;在session-data-redis(Github)分支中添加了基于spring-session-data-redis的实现&#xff0c;无需借助nonceId来保持认证…

Codeforces Round 991 (Div. 3) F. Maximum modulo equality(区间gcd模板)

思路&#xff1a;我们由题意可以知道我们只需要维护区间gcd即可&#xff0c;因为差分一下后&#xff0c;维护的差分数组的区间gcd即为原数组所要求的值 #include<bits/stdc.h>using namespace std;typedef long long ll; typedef pair<ll, ll>PII; const int N 2…

智创 AI 新视界 -- 优化 AI 模型训练效率的策略与技巧(16 - 1)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

基于 NXP S32K312+FS23 的汽车通用评估板方案

S32K3 系列是 NXP 推出的面向汽车电子和工业应用的微控制器&#xff0c;基于 ARMCortex-M7 内核&#xff0c;支持单核、双核和锁步内核配置。S32K3 系列具有内核、内存和外设数量方面的可扩展性&#xff0c;符合 ISO26262 标准&#xff0c;能达到 ASIL B/D 安全等级&#xff0c…

Y20030002 微信+Java+Jsp+Servlet+MySQL的问卷调查小程序的设计与实现 源代码 配置文档 全套资料

问卷调查微信小程序 1.摘要2. 系统开的背景和意义3. 国内外研究现状4. 系统功能5.界面展示6.源码获取 1.摘要 摘 要&#xff1a;本文深入研究并实现了一个基于微信小程序的问卷调查系统。微信小程序问卷调查系统借助于微信小程序的便捷性和普及性&#xff0c;为用户提供了一个…