.NET重点

embedded/2024/12/27 23:25:42/

B/S  C/S

B/S:

浏览器端:JavaScript,HTML,CSS

服务器端:ASP(.NET)PHP/JSP

优势:维护方便,易于升级和扩展

劣势:服务器负担沉重

C/S

java/.NET/VC系列

优势:客户端响应速度快

劣势:系统可扩展性和可维护性差

企业级应用系统几层架构

2,3,N


.NET定义

新平台+标准协议+统一开发工具

.NET核心组件

一组创建互联网操作系统的构建块

构建和管理新一代服务的基本结构和工具

能够启用新型智能互联网设备的.NET设备软件


.NET Framework三个主要组成部分

公共语言运行时(CLR)作用:负责整个.NET执行期间的代码管理工作

服务框架

两类应用模版(传统Windows应用程序模版和基于ASP.NET面向web的应用程序模版)

asp.net定义

继ASP后推出的全新动态网页制作技术

.NET Standard 和框架的区别

.NET Standard只是规范,一个.NET Standard类库可以被.NET Framework,.NET Core等引用,而.NET Framework类库则不可以。所以编写一个公用类库,尽量选择低版本.NET Standard

.NET Framework和.NET Core 区别

.NET Framework:无法独立部署,ASP.NET与IIS深度耦合,不能跨平台

.NET Core:支持独立部署,不依赖IIS,能跨平台

.NET开发工具

.NET CLI:命令行

Visual Studio:只Windows

Visual Studio for Mac

VS Code(Visual Studio Code):跨平台

Nuget命令

安装:Install-Package XXX -version(把依赖组件都下载了)

卸载:Uninstall-Package XXX

更新到最新版:Update-Package XXX

get post 区别

GET:用于获取或查询信息,数据放到URL后,通过Request.QueryString来获取变量值,提交数据大小有限制

POST:用于更新信息,数据放在http包的body中,通过Request.Form来获取变量值,提交数据大小无限制

program.cs作用

此文件中的会创建一个带有预配置默认值的 WebApplicationBuilder,向DI 容器添加 Razor Pages 支持,并生成应用

三种常见的方法可以使用 ASP.NET Core 构建新式 Web UI

服务器控件:从服务器呈现UI的应用

浏览器控件:在浏览器的客户端呈现UI的应用

混合:利用服务器和客户端UI呈现方法的混合应用

依赖注入作用

1.控制器或Razor页面不使用具体类,仅使用他的接口。可以实现更改时,无需修改控制器和页面

2.减少类之间依赖,提高模块独立性

3.让开发者更容易编写单元测试

中间件是什么

中间件是一种在应用管道中处理请求和响应的软件。

(每个中间件组件:选择是否将请求传到管道下一个组件,可在管道下一个组件前后执行

中间件在B/S模式下功能层作用)

中间件用法

app.use

app.run

C#

C#语言概述-CSDN博客

泛型

一组或一类事物的特性

列表

Contains


字典

ContainsKey


队列 栈

Enqueue

Peek

Dequeue

Push

Pop

Peek


LINQ

概念:LINQ是直接将查询功能集成到C#语言的技术统称。

功能:可以简化数据查询

using System.Linq

方法语法

 查询语法

 orm概念

通过操作C#对象方式来操作数据库。

Entity Framework Core(EF Core)

EF Core 是ORM框架,适用于.NET的新式对象数据库映射器。

核心组件

DbContext

派生自DbContext的类

EF Core提供程序

数据库提供程序

迁移 反向工程

基本命令

反向工程:管理器控制台的Scaffold-DbContext命令

                或者用命令行接口(CLI)的dotnet ef dbcontext scaffold命令

迁移:创建迁移                   dotnet ef migrations add 迁移名

           更新数据库                dotnet ef database update

           变更模型                    dotnet ef migrations add 迁移名

定义数据库和模型

数据库根据一个派生自DbContext的类建模。这个类包含一个或多个DbSet<T>的类

customer类描述了Custmoers表中数据

注入连接字符串(不考)

在定义的数据库中重写OnConfiguring,并在其中的UseSqlServer(“连接字符串”)

对不同环境下使用不同连接字段串

同时设置配置文件读取该字符串,用该配置文件来设置 UseSqlServer,这样就可以满足一个连接字符串可以在不同环境下使用

注入dbcontext对象

方法一:直接将当前数据库上下文添加到DI子系统中,从而能在应用程序的任何地方获取该对象,并进行配置作用域为当前请求

方法二:自己创建数据库上下文实例,根据需要为他们分配生存期,并在上下文注入连接字符串

EF Core查询

单次查询

多次查询

方法一

用透明事务将查询结果连接

方法二

方法三

添加

删除

异步作用

可以避免性能瓶颈并增加应用程序的总响应能力

原理

async方法会被C#编译器编译成一个类,会根据await调用切分成多个状态,对async调用会被拆分成MoveNext的调用。

MVC概念

是一种使用了MVC(模型-视图-控制器)设计创建Web应用程序的模式,同时提供了对HTML,CSS和JavaScript的完成控制

三个组件

模型:表示应用程序核心。处理应用程序数据逻辑

视图:展示数据

控制器:处理用户交互

传统路由

显式路由参数

隐式路由参数

特性路由

其思想是,不是在应用程序启动时显式定义一个路由表,而是用专用的路由特性修饰控制器方法。路由特性将在内部填写系统的路由表

 控制器获取数据

从Request获取数据

存在问题:需要知道从什么地方获取值,如URL,查询字符串等,用不同API进行访问

                任何值都返回字符串,需进行类型转换

从RouteData获取数据

模型绑定

只关注控制器方法收到的数据,忽略数据的获取和来源

默认模型绑定器

任何传入的请求都会经过内置的绑定器对象,对应与DefaultModeBinder类的实例。试图在请求上传的任何数据中找到匹配名称。

绑定基本类型

在请求上下文获取数据,绑定器会寻找可行值,寻找命名值的匹配,如果没有匹配,则参数异常或返回默认值,命中则自动绑定

 

强制从给定来源绑定 

FromQuery ,FromRoute,FromForm强制匹配固定词,如果没有就使用声明的默认值。

匹配city=London,如果没有city=London,则使用声明的默认值

绑定复杂类型 

传送容器类

筛选器分类

操作筛选器

可以通过重写筛选器内方法来决定调用该方法前后做什么 

授权筛选器:确定发出请求用户是否有权限发出

资源筛选器:在管道其余部分之前以及管道组件之后运行

操作筛选器:控制器方法操作之前和之后运行

异常筛选器:发生未处理异常时触发

结果筛选器:结果执行之前和之后运行

筛选器可以有同步和异步实现 

提供HTML

终止中间件提供HTML(通过算法完成)

终止中间件是处理请求的一段代码

即一个处理http请求的函数。代码可以做任何操作,浏览器把他作为HTML呈现

从控制器提供HTML内容

在操作方法中提供纯文本(通过算法完成)

Razor模版(通过模版完成)

用视图引擎(调用View)将Razor渲染成HTML

封装了Razor模版和视图模型对象(封装了数据)

调用视图引擎

视图引擎负责从视图(一般是C#加上HTML混合)创建HTML

View方法

视图是一个Razor文件,在View文件夹下

model指出模版中使用数据类型,以生成HTML

ViewResult 对象

将Razor模版名称,母版页视图和视图模型打包成实现IActionResult接口对象。类名为ViewResult

当调用ExecuteResultAsync,触发视图引擎生成HTML 

综合应用 

视图引擎会将视图模版(模板中的占位符将被替换为计算出的数据)和控制器传入数据混合,并进行HTML创建

模版是引擎指定语言(如Razor)

传入数据则封装到字典或强类型对象

控制器和视图引擎生成视图原理

控制器

控制执行流之后,保存一个HTML文本字符串,然后用HTML MIME类型修饰文本后,控制器返回这个文本字符串

视图引擎

视图引擎被触发后,会读取对应的模板文件,并将控制器提供的数据填充进去,得到完整HTML后将其返回

向视图传递数据

通过@inject指令实现依赖注入(不考)

使用内置字典ViewData

Controller基类提供Viewdata属性,该属性自动刷新到动态创建的RazorPage<T>类实例

意味着控制器ViewData存储任何值都可在视图使用,不用人为操作

使用内置字典Viewbag

使用强类型视图模型类

强类型视图模型类表现更好


 

razor


基本语法


指令

@using         在编译上下文添加一个命名空间

@inherits       生成Razor视图对象使用实际基类

@model         向视图传递数据类的类型

@inject          在视图上下文注入指定类型的实例,该类型绑定到给定属性名

部分题目

正确

Request.Query["uid"]

MSIL

拾遗


http://www.ppmy.cn/embedded/149296.html

相关文章

c#多线程之生产者-消费者模型

在 C# 中实现 生产者-消费者模式&#xff0c;通常需要多个线程来处理数据的生产和消费。我们可以使用 Queue<T> 来作为存储数据的队列&#xff0c;并使用 Thread、Mutex 或 Monitor 来确保线程安全。BlockingCollection<T> 是 C# 提供的一个线程安全的集合&#xf…

分布式协同 - 分布式事务_2PC 3PC解决方案

文章目录 导图Pre2PC&#xff08;Two-Phase Commit&#xff09;协议准备阶段提交阶段情况 1&#xff1a;只要有一个事务参与者反馈未就绪&#xff08;no ready&#xff09;&#xff0c;事务协调者就会回滚事务情况 2&#xff1a;当所有事务参与者均反馈就绪&#xff08;ready&a…

循环神经网络(RNN)入门指南:从原理到实践

目录 1. 循环神经网络的基本概念 2. 简单循环网络及其应用 3. 参数学习与优化 4. 基于门控的循环神经网络 4.1 长短期记忆网络&#xff08;LSTM&#xff09; 4.1.1 LSTM的核心组件&#xff1a; 4.2 门控循环单元&#xff08;GRU&#xff09; 5 实际应用中的优化技巧 5…

【Linux】查看实时网络流量的几种方法

1. nethogs sudo apt install nethogs nethogs eth0 ##网卡名称 2. ethstatus sudo apt-get install ethstatus ethstatus -i eth0 bmon 安装 sudo apt-get install bmon 查看网络 bmon -p eth0 输入g控制流量面板的显示和隐藏 输入d控制详情信息的显示和隐藏 输入q退…

Info.plist contained no UIScene configuration dictionary (looking for configura

新建项目兼容低级IOS版本,将SceneDelegate.h,SceneDelegate.m删掉报错 [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") 解决方法: 在info.plist文件中添加Application Scene Manif…

C++软件设计模式之装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;是C软件设计模式中的一种结构型设计模式&#xff0c;主要用于解决在不改变现有对象结构的情况下动态地给对象添加新功能的问题。通过使用装饰器模式&#xff0c;可以在运行时为对象添加新的行为&#xff0c;而不需要修改其…

mysql-二进制安装方式

目录 1. 安装组件即依赖包 2. 创建用户 3. 关闭防火墙 4. 解压mysql二进制源码包 5. 创建文件夹并赋予权限 6. 编译安装mysql&#xff0c;安装完成最后面&#xff0c;会有一串英文&#xff0c;那是登录数据库的密码 7. 设置配置文件 8. 将mysql添加进环境变量 9. 复制…

微信小程序实现二维码海报保存分享功能

首先在写这个二维码分享海报的时候试过很多方法&#xff0c;比如&#xff1a;canvas中的这个createCanvasContext创建上下文的方法&#xff0c;去网上一搜就是一大堆&#xff0c;但其实这个方法已经被废弃了。Canvas 实例&#xff0c;可通过 SelectorQuery 获取。这是绘制背景图…