P1-1 .NET Core概述
.NET Core概述
听课前提说明
- 1、不讲C#基础语法和.NET基础类库(不需要学过ASP.NET等)
- 需要懂HTML、JavaScript、数据库等
- 2、上课尽量与老师用的Visual Studio 版本保持一致,杨中科老师是2019
- VS2019支持.NET SDK-5
- VS2022和VS2019的区别就是需要手动选择一下5.0的SDK版本
- SDK6 以上最好用VS2022版本以上的
- 3、程序员的自主学习能力
- 记录笔记
- 不依靠老师的课件、代码
什么是.NET Core
介绍
.NET是开发平台
.NET是.NET Framework、.NET Core、Xamarin/Mono的统称
- .NET Framework
- 近20年历史,.NET简称的最早拥有者,用于开发Windows程序
- Xamarin/Mono
- 主要做移动开发
- Xamarin、Unity。Mono也能做Web等跨平台开发,但主要专注移动端
- .NET Core
- 免费、跨平台、开源
- 跨平台:程序可以运行在Windows、Linux、Mac等操作系统下
- 事件:社区的 微软 love Linux
- 免费、跨平台、开源
为什么程序要跨平台运行?
- 因为微软最早是没有开源,直到.NET Core 才开源,真正的跨平台的开始
- 像.NET Framework 只支持Windows系统,太狭义了。
- 微软的发展转折–> 云计算(Microsoft Azure—全球第二大云计算厂商)
- 按需付费
- .NET Core为云而生
- 不止于云,不止于Azure
NET Core的重要问题
什么是C#?
- .NET中主要的开发语言
.NET Core是.NET Framework的升级版吗?
尽管绝大部分用法没变,但是.NET Core不是.NET Framework的升级版,无法直接升级
有人会觉得又被微软坑了?
- .NET Framework白学了? 那倒没有,因为绝大多数用法没变
之前可以用Mono让.NET Framework程序可以直接运行在LInux下。但有了Mono,为啥微软还搞了.NET Core呢?
- .NET Framework历史包袱
- 1.带着手铐脚镣长大的ASP.NET—MVC
- 因为这是在这个底层逻辑上的MVC框架而已,底层太过于臃肿
- 2.ASP.NET底层不支持很好的单元测试
- 1.带着手铐脚镣长大的ASP.NET—MVC
- Mono在移动端可以,但是现在服务器端几乎不用
- .NET Framework历史包袱
.NET Framework的缺点
1、系统级别的安装,互相影响(比如补丁升级)
2、无法独立部署
3、ASP.NET和IIS 深度耦合
4、ASP.NET资源消耗大
5、非云原生
.NET Core的优点
1、支撑独立部署,不互相影响
2、彻底模块化
3、没有历史包袱,运行效率高
4、不依赖与IIS
5、跨平台
6、符合现代开发理念:依赖注入,单元测试等
不同之处
- 1、不支持:ASP.NET WebForms、WCF服务器端、WF、.NET Remoting、Appdomain
- 2、部分Windows-Only的特性 .NET Core,但是无法跨平台:WinForm、WPF、注册表、Event Log、AD等。
项目应该使用.NET Core开发吗?
- 1、旧的.NET Framework项目没必要动
- 2、用到了.NET Core中不支持的特性的不能动
- 3、其他新项目都可以用.NET Core,已经足够成熟,社区也在全面转向.NET Core
.NET Standard是什么
.NET Standard介绍
- 它是一个标准规范
- 图解
验证:.NET Standard只是标准,不是实现
- 1、建.NET Standard类库项目,确认版本是2.0,建一个类,方法中打印typeof(FileStream).Assembly.Location
- 2、分别建.NET Standard和.NET Core的控制台项目,添加对类库项目引用,并且调用
- 3、用反编译工具ILSpy分别反编译VS中FileStream、.NET Framework和.NET Core运行中的。BeginRead方法实现以及定义有不同
- 反编译:程序集–>源代码
- ILSpy不会默认展开方法细节
- 所以可以在选项中打开
Core-BeginRead和Framework-BeginRead的不同
1 |
|
遇到的报错
- 1、FrameworkConsole1 引用Standard类库时,框架版本不能低于4.7.2,要不然引用会出错
总结
- .NET Standard只是规范,一个.NET Standard类库可以被支持其版本的.NET Framework、.NET Core、Xamarin等引用。
- 而.NET Core类库、.NET Framework类库则不可以被.NET Standard引用。
- 如果编写一个公用的类库,尽量选择.NET Standard,并且尽量用低版本
- .NET Framework支持到.NET Standard 2.0为止
- 从.NET5开始,微软开始淡化其他叫法,统一为.NET。
- 后续默认.NET就是指的.NET Core
- 从.NET5开始,微软开始淡化其他叫法,统一为.NET。
P1-1 .NET Core概述
http://example.com/2024/08/21/Net Core2022教程/第1章:.NET Core入门-笔记/P1-1 .NET Core概述/