第2章 大话 ASP.NET Core 入门

第1章 框架学习的基石与实战策略 链接

第2章 大话 ASP.NET Core 入门

1.什么是ASP.NET Core框架

ASP.NET Core是一个超级棒的框架,它是免费的,你可以在任何主流的系统上,比如Windows、Linux或macOS上使用它,而且它是完全开放源代码的,意味着你可以看到并修改它的内部代码。这个框架是专门用来帮助开发者创建现代、高效的网站、网络应用还有API服务的。它特别擅长利用.NET平台和C#语言的强大能力来做到这点。

有了ASP.NET Core,你可以非常灵活地选择把应用放到云上,或者放在自己的电脑上。这样一来,你就可以利用云服务的优势,比如可以根据需要自动调整资源大小,让你的应用更加强大和灵活。但是,如果你喜欢自己掌控一切,也可以直接在自己的电脑上管理应用。

更重要的是,ASP.NET Core可以在很多不同的操作系统上工作得很好,这给了开发者更多的选择,让他们可以在最适合自己的环境中进行开发。总的来说,ASP.NET Core是一个既强大又灵活的工具,让开发者可以更容易地创建出色的Web应用和API服务。

2.ASP.NET Core 框架 可以构建的应用程序

你可以使用ASP.NET Core框架来打造一系列超级强大的应用程序,就像是搭建一个完整的生态系统一样。这个生态系统里包括了各种类型的应用,比如直接在服务器上显示内容的Web应用,还有负责处理复杂业务逻辑的后端系统。而且,它还能轻松地为手机应用提供可以直接调用的HTTP API接口,让手机应用也能和服务器顺畅交流。更厉害的是,它还能用在物联网(IoT)上,解决各种设备联网的问题。

现在,人工智能技术越来越火,ASP.NET Core在这方面也是大显身手。特别是处理数据和部署机器学习模型的时候,它可是个不可或缺的好帮手。你可以把ASP.NET Core和.NET的机器学习库,比如ML.NET,放在一起用。这样一来,你就能直接在Web应用里面运行机器学习模型了,模型可以帮你智能地预测和分析用户输入的数据。这样,你的Web应用就会变得更聪明,能为用户提供更加个性化和精准的服务体验。

那么,ASP.NET Core到底能支持哪些常用的应用程序类型呢?我来给你列举几个:

最小化APIs: 这种API超轻量,专为移动应用或单页应用(SPA)设计,让它们调用起来特别方便。

Web APIs: 如果你想要一个功能更全面、结构更丰富的HTTP API服务,那么Web APIs就是你的首选。

gRPC APIs: 当服务器之间需要高效沟通时,gRPC APIs就派上用场了。它使用gRPC协议,能让API通信变得更快、更高效。

Razor Pages: 如果你喜欢页面导向的开发方式,Razor Pages就是为你准备的。它简化了页面开发流程,让你更容易构建服务器端渲染的应用。

MVC Controllers: 对于复杂的服务器端应用逻辑,MVC Controllers是个不错的选择。它采用Model-View-Controller架构,让你的应用逻辑更清晰,而且不限于页面渲染哦。

Blazor WebAssembly: 想象一下,如果你能在浏览器里直接运行.NET代码,那该有多酷!Blazor WebAssembly就做到了这一点。它利用WebAssembly技术,让你的单页应用性能超群,用起来感觉就像是用JavaScript框架(比如Angular、React、Vue)一样流畅。

Blazor Server: 如果你想要单页应用的体验,但又不想放弃服务器端渲染的便利性和性能优势,那么Blazor Server就是你的救星。它通过WebSocket实现UI交互和页面更新,让你享受两全其美的开发体验。

这些应用程序构建模式均建立在于ASP.NET Core的核心组件体系之中,包括配置管理和日志记录等基础设施。每种模式在保留这些共通特性的基础上,进一步扩展了针对特定场景的功能集。

在选择最适合的应用程序架构范式时,开发者需要综合评估API的特定需求、与现有应用系统的集成度、客户端的运行环境、系统的可扩展性需求以及稳定性要求等多个方面。ASP.NET Core凭借其高度的灵活性,不仅支持单独采用任一范式进行开发,还鼓励在同一应用程序内灵活地结合多种范式,以更好地应对复杂多变的业务需求。

3.为什么选择ASP.NET Core 框架

在挑选ASP.NET Core框架时,咱们得好好琢磨它的好处。其实,它跟其他牛气的平台、框架有很多相似的好东西,比如能在各种操作系统上跑(跨平台兼容性),跑得快还能轻松变大变强(性能与可扩展性),开发起来感觉很现代(现代化开发体验),还有自带的防护罩保护数据安全(内置安全机制),想放哪儿就放哪儿(灵活部署策略),还有一大群人帮你解决问题(强大社区支持与生态系统)。

但说来说去,这些好处虽然都很棒,却不是让我决定用ASP.NET Core的最主要原因。真正打动我的,是它特别照顾我们这些单打独斗的开发者。这个框架学起来特别容易,就像走下坡路一样顺畅(平滑的学习曲线),新手也能很快搞懂怎么玩,然后就开始做自己的项目了。

而且,它用的C#语言也特别给力,说话清楚(语法清晰)、想法多(表达力强),还有超级多的学习材料,从书到视频教程应有尽有,想学啥都有。这样一来,我们这些独立开发者就能更快地把想法变成真实的应用,而且质量还杠杠的!

4.ASP.NET Core 应用程序实现了HTTP请求的接收与响应

ASP.NET Core框架在创建网站和应用程序时超级重要,它的主要任务是帮助打造那些运行快、能轻松变大的Web应用,这些应用能顺畅地把数据从服务器送到我们的电脑或手机上。对于专门搞Web开发的人来说,设计那种在浏览器里既好看又好用的网站,既是挑战也是机会。

想象一下,当你在浏览器里输入网址或URL时,你其实是在打开一扇通往新世界的大门。这个URL就像是网络上的地图,告诉你想要访问的网站是哪一个,还有网站里的哪个部分。它用HTTP这个强大的沟通工具,把你的电脑或手机和放网站的服务器连起来,这样你就能看到网站上的内容了。

再来说说网站的名字,也就是主机名,它是网站在网络上的身份证。通过一个叫DNS的东西,这个主机名能变成一个特别的数字地址(IP地址),这样全世界的电脑都能找到它。就像你知道微软的网站叫microsoft.com,百度的是baidu.com,这些都是DNS帮忙的。有了这些,我们才能轻松地在网上找到我们想看的东西,享受互联网带来的便利。

好啦,咱们来聊聊HTTP这个神奇的东西吧!有些小伙伴可能还不太清楚HTTP是啥,别急,我这就简单说说。

HTTP,全名是超文本传输协议,它是让网页能在网上跑起来的“交通规则”。你可以把它想象成快递员送快递的过程:客户端(比如你的电脑或手机)就是寄快递的人,它给服务器(那个放着网站的大仓库)发个请求,说:“嘿,我要这个东西!”然后服务器就按照请求找东西,再打包好送回来,这就是响应啦。

每次请求都会有个“动词”和“路径”,动词就像是“给我”、“告诉我”这样的指令,路径就是告诉服务器你要找的东西在哪里。请求里还会带上一些“头信息”,就像是快递单上的备注,告诉服务器一些额外的信息。有时候,请求里还会有个“主体部分”,就像是你寄给朋友的礼物。

服务器收到请求后,会回一个响应给你。响应里有个“状态码”,就像是快递公司的回执单,告诉你请求是成功了还是出啥问题了。响应里也可能有“头信息”和“主体部分”,头信息还是那些备注,主体部分就是你要的东西啦!

信息在互联网上开始它的旅行,就像寄出的一封信,可能要经过好多好多的地方,翻山越岭,漂洋过海,最后才到达那个有特定名字的服务器家里。在那里,有一个Web应用程序正等着处理这封信呢。

在这段旅途中,信息会在很多叫做“路由器”的地方停下来,被看一看,然后再被送到下一个地方去。但真正的处理,要等到它到了那个指定的服务器家里才开始。

当信息终于到达服务器时,服务器就像是个魔术师,会根据这封信的内容,变出一个叫做HTTP响应的东西来回复。这个响应可以是个漂亮的网页,可以是个清晰的图片,可以是个让网页动起来的JavaScript小魔法,也可以是个简单的“收到啦”的消息,或者是其他任何你想要的东西。

想象一下,你点击了网页上的一个链接,就像是在告诉服务器:“嘿,给我看点东西!”然后服务器就会用HTML文档作为礼物,包装成HTTP响应,通过互联网这条快速通道,送到你的浏览器上。

浏览器收到这个礼物后,就开始表演了。它不只是把HTML代码显示出来那么简单,而是会按照HTML里的指示,一点点地搭建出一个完整的网页来。如果HTML里提到了服务器上的其他小东西,比如图片、CSS来装饰页面,或者JavaScript来让页面更有趣,浏览器就会再去跟服务器说:“我还要这些!”然后一一地把它们也拿过来。

不管是HTML、图片、CSS还是JavaScript,它们都是通过同样的HTTP请求和响应的方式来传递的。在互联网这个大舞台上,这样的表演每时每刻都在发生,是网页能够呈现给我们看的基础。

简单的网页可能只需要几次请求就能搞定,但那些复杂的现代网页,背后可能藏着成百上千次的请求和响应呢!

现在,你对这个过程有了个大概的了解了吧?接下来,我们就来看看ASP.NET Core这个神奇的魔术师,是怎么在服务器端灵活地变出那些精彩的HTTP响应的。

5.ASP.NET Core 处理请求

在ASP.NET Core的世界里,建网站就像是在演戏,不过这次演员是浏览器和服务器,他们用的剧本还是老一套的HTTP对话。ASP.NET Core就像是那个超级厉害的魔术师,负责后台的所有工作,从检查请求是不是合理,到管理登录信息,再到创造漂亮的网页,它都能搞定。

想象一下,你在浏览器上轻轻一点,就像是发了个邀请函给ASP.NET Core。然后,这个邀请函就通过网络跑到了ASP.NET Core的地盘。每个网站都有一个叫Kestrel的小助手,它是默认的服务器大师,悄悄地把邀请函接过来,然后转换成一种内部的语言——HttpContext,这样网站就知道你想干嘛了。

有了这个HttpContext,网站就能知道你的需求,然后给你回应。可能是给你一个漂亮的网页,也可能是告诉你“你不能进这个地方”,或者帮你发个邮件。所有的这些回应,都是网站通过对HttpContext里的信息琢磨后,用它的智慧和技巧做出来的。

等网站准备好回应后,Kestrel又会出来,它把这些回应——其实就是一堆数字和字母的组合——重新打包成HTTP的样子,然后通过网络送回到你的浏览器上。

对你来说,这个过程就像看了一场戏,只看到HTTP请求和响应在屏幕上跳来跳去,但不知道后台有多少人在忙活着。其实,真正的变化都发生在你看不到的地方,那就是你的ASP.NET Core网站里,那里是技术和创意的大本营。

6.前后端分离

Blazor帮你轻松搞定前后端分离!在这个教程里,我会特别加入Blazor的部分,让你的项目也能享受前后端分离的好处。现在,咱们先来简单聊聊Blazor是个啥好东西:

想象一下,如果你是一个喜欢C#的开发者,但现在大家都用JavaScript来做网页前端,你是不是觉得有点头疼?毕竟,要重新学一门新语言,还得花时间实践,挺不容易的。虽然JavaScript也挺酷,和C#有些地方还挺像,但真想把它用得像C#那么溜,还是得下大功夫。

这时候,Blazor就像是个救星一样出现了!它让你能直接用C#来写网页的客户端部分,再也不用为学新语言发愁了。Blazor有两种玩法:Blazor Server和Blazor WebAssembly。

Blazor Server就像是有个中间人,它一直跟你的ASP.NET Core服务器保持着联系,你的C#代码其实都是在服务器上跑的。这样一来,虽然代码不在浏览器里直接跑,但对你来说,写起来就跟写C#后端一样轻松。

而Blazor WebAssembly就更厉害了,它能让你的C#代码直接在浏览器里跑起来,真正实现了客户端的渲染。这样一来,你的网页就能更快地响应用户的操作,体验更棒了。

当然啦,这两个版本的Blazor也不是万能的,它们有各自的适用场景。但不管怎么说,Blazor都为ASP.NET Core的未来发展打开了一扇新的大门,让C#开发者在前端领域也能大展拳脚!

现在你已经知道了请求和响应是怎么在ASP.NET Core里跑来跑去的,接下来,我们要一起揭开这些响应是怎么被做出来的秘密。这本教程会带你走进ASP.NET Core的内部,看看它是怎么工作的,每个部分是怎么合作的,还有它们是怎么在眨眼间就做出那么精彩的回应的。这将是一次充满惊喜和学习的旅程,每一章都会让你对ASP.NET Core有更多的了解。

我写这个教程的初衷很简单,就是想让学习变得不再无聊,而是充满乐趣。在接下来的每一章里,我都会尝试用各种有趣的方式来解释知识点,让学习变得像探险一样。不过呢,这一章有点特别,它就像是学习之旅的开场白,让大家先热热身,放松心情,准备好接下来的精彩旅程!我保证“一本正经的胡说八道仅此一章!😊”

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

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

相关文章

appium环境准备

前言: 本系列教程会从软件的基本安装开始,最终目的是通过完成几个案例后, 大家实现自由抓取App中想要的资源。 本系列以后会更的: Appium基本使用及控制真机及安卓模拟器Mitmproxy抓包工具的基本使用Fiddler抓包软件的基本使用 了解了以上的基本操作,我们就可进行手机资源…

Splunk Enterprise路径遍历漏洞风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了Splunk Enterprise 路径遍历漏洞(CVE-2024-36991)。该漏洞发生在9.2.0<version<9.2.2&#xff0c;9.1.0<version<9.1.5&#xff0c;以及9.0.0<version<9.0.10的windows版本…

3102.力扣每日一题7/9 Java(TreeMap)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 TreeMap详解 解题思路 解题方法 时间复杂度 空间复杂度 Code T…

【Python】 已解决:ModuleNotFoundError: No module named…

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named… 一、分析问题背景 在使用Python进行开发时&#xff0c;有时会遇到“ModuleNotFoundError: No module named…”这样的…

android gradle开发基础

Android Gradle开发基础涉及多个方面&#xff0c;包括Gradle的基本概念、环境配置、构建脚本的编写、任务与插件的使用等。以下是对这些方面的详细介绍&#xff1a; 一、Gradle基础 1. Gradle简介 Gradle是一个开源的构建自动化系统&#xff0c;专注于灵活性和性能。它支持多…

洞察与理解:自闭症儿童的典型行为特征解析

作为星贝育园自闭症儿童康复中心的一名专业教师&#xff0c;我深知理解自闭症儿童的行为特征对于早期识别、干预和提供恰当支持至关重要。自闭症&#xff0c;或称孤独症谱系障碍&#xff08;Autism Spectrum Disorder, ASD&#xff09;&#xff0c;是一组影响个体社交互动、沟通…

创新设计策略:提升大屏幕可视化设计效果的关键方法

随着科技的不断发展和数据量的快速增长&#xff0c;数据可视化大屏在各个行业中的应用越来越广泛&#xff0c;可以帮助人们更好地理解和分析数据&#xff0c;可视化大屏设计也因此成了众多企业的需求。但很多设计师对可视化大屏设计并不了解&#xff0c;也不知道如何制作可视化…

谁说forEach不支持异步代码,只是你拿不到异步结果而已

在前面探讨 forEach 中异步请求后端接口时&#xff0c;很多人都知道 forEach 中 async/await 实际是无效的&#xff0c;很多文章也说&#xff1a;forEach 不支持异步&#xff0c;forEach 只能同步运行代码&#xff0c;forEach 会忽略 await 直接进行下一次循环… 当时我的理解…

dify/api/models/tool.py文件中的数据表

源码位置&#xff1a;dify/api/models/tool.py ToolProvider 表结构 字段英文名数据类型字段中文名字备注idStringUUIDIDUUID生成tenant_idStringUUID租户ID非空tool_nameString工具名称非空encrypted_credentialsText加密凭证可为空is_enabledBoolean是否启用默认值为 false…

[GICv3] 1.引言Introduction

基本概念 通用中断控制器 (GIC) 从外设获取中断&#xff0c;确定它们的优先级&#xff0c;然后将它们传送到适当的处理器内核。 下图了为一个 GIC 从 n 个不同的外设获取中断&#xff0c;并将它们分配给两个不同的处理器。 ​​ GCI(Generic Interrupt Controller)&#xff0c…

Caused by: java.lang.NoSuchMethodError: com.squareup.javapoet.MethodSpec

导入第三方module运行项目报&#xff1a; Caused by: java.lang.NoSuchMethodError: com.squareup.javapoet.MethodSpec$Builder.addComment(Ljava/lang/String;[Ljava/lang/Object;)Lcom/squareup/javapoet/MethodSpec$Builder; Caused by: java.lang.RuntimeException: Cann…

IPython的交互式命令行:交互式命令行界面

IPython的交互式命令行&#xff1a;交互式命令行界面 介绍 IPython是一款功能强大的交互式命令行工具&#xff0c;它极大地增强了Python编程的体验。通过提供即时反馈和动态探索功能&#xff0c;IPython帮助初学者更快速、更直观地掌握Python编程技能。本指南将详细介绍IPyth…

AI Agent 的发展现状、行业结构与趋势分析

Agent 来自一种哲学概念&#xff0c;是个很古老的哲学术语&#xff0c;从哲学意义上讲&#xff0c;“代理”的概念涉及实体的自主性&#xff0c;具有行使意志、做出选择和采取行动的能力&#xff0c;而不是被动地对外部刺激做出反应。后来人们将这一概念引入计算机科学领域&…

ApiFox或postman怎么用params类型传输json或集合+json的String类型

你是否碰见过这样的接口? post请求然后传输的参数都要和查询时一样以param形式传参数,那String什么的都好说,传就直接进后台了,那json呢,集合呢,是不是直接给你返400呢. 1.传json如何处理 那我们看看怎么实现,如果你要传json数据,那需要将特殊字符转义,也叫url转码,否则传不…

【HarmonyOS】关于官方推荐的组件级路由Navigation的心得体会

前言 最近因为之前的630版本有点忙&#xff0c;导致断更了几天&#xff0c;现在再补上。换换脑子。 目前内测系统的华为应用市场&#xff0c;各种顶级APP陆续都放出来beta版本了&#xff0c;大体上都完成了主流程的开发。欣欣向荣的气息。 学习思路 关于学习HarmonyOS的问题…

热点解读 | 小红书「县城生活」趋势前瞻

“县城婆罗门”、“月薪两万不如县城贵妇”、“北漂打工人回县城被穷笑”……继中产之后&#xff0c;县城成为又一个全网热议的焦点。 县城叙事重返舆论场&#xff0c;本期千瓜将进一步解构「县城」语境下的个体表现&#xff0c;帮助品牌沉淀用户心智&#xff0c;塑造新时代竞争…

​​​防御第一次作业

1、拓扑图及实验要求&#xff1a; 2、配置&#xff1a; 配置终端及服务器IP地址&#xff1a; Pc2&#xff1a; Client1&#xff1a; Pc4&#xff1a; Client2&#xff1a; PC1&#xff1a; Server1&#xff1a; Server2&#xff1a; 防火墙基础配置&#xff1a; [fw1]int g …

maven 依赖冲突

依赖冲突 1、对于 Maven 而言&#xff0c;同一个 groupId 同一个 artifactId 下&#xff0c;只能使用一个 version。 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 --><dependency><groupId>org.apache.commons</groupId&…

力扣题解(等差数列划分)

413.等差数列划分 如果一个数列 至少有三个元素 &#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。 例如&#xff0c;[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums &#xff0c;返回数组 nums 中所有为等差数组…

KAN-Mixer每行代码解读

import torch import torch.nn.functional as F from torch import nn import math 这几行代码导入了PyTorch库,包括主要的torch模块、torch.nn.functional模块(通常用于激活函数等),torch.nn模块(用于定义神经网络组件),以及math模块(用于基本的数学运算)。device = …