.NET Core 的 重要问题
什么是 C# ?
.NET 中主要的开发语言,.NET 只是一个开发平台,他提供了一些类,一些运行时等等;他不是一门语言,除了 C# , 还有 VB.NET,F# 等等;但是用的最多的,几乎可以说是唯一的语言,就是C# 语言。
所以说 学习 .NET webapi 需要有 C# 基础。
.NET Framework 和 .NET Core 有什么区别?
尽管绝大部分用法都没有变,用过 .NET Framework 学习 .NET Core 会很快;但是 .NET Core 不是 .NET Framework的 升级版,无法直接升级。
提一嘴:
用 Mono,开发的 .NET Framework 程序可以运行在 Linux 底下;手机应用Xamarin技术,游戏开发Unity技术,都是基于 Mono 的;当然 现在都被 微软收入旗下了。
那么有了 Mono ,为啥 微软还要搞 .NET Core?
.NET Framework 的缺点:
- 系统级别的安装,互相影响;
例如:电脑上安装了 .NET Framework 4.5 ,电脑上安装的程序都共享 这个 4.5 ;一个程序需要 安装 4.5 的补丁,另一个程序打完补丁后会崩溃,所以互相影响,耦合程度非常高。 - 无法独立部署;
程序打包完成后,电脑上需要安装合适版本的 .NET Framework ,无法直接双击就运行; - ASP.NET 和 IIS 深度耦合;
ASP.NET:.NET Framework 里开发网站的技术
IIS:Windows的服务器,很难一直到Linux平台底下 - ASP.NET资源消耗大;
- 非云原生;
不满足云计算的时代要求
.NET Framework 历史包袱:
- 带着手铐脚镣长大的 ASP.NET MVC
ASP.NET MVC 之前微软最早搞的是 ASP.NET WebForm 拖控件开发网站的技术;
基于拖控件之上搞的MVC,本身这个技术很牛,但是底层是基于拖控件的历史包袱,导致运行效率不好。 - ASP.NET底层不支持很好的单元测试
单元测试,依赖注入 新的东西都不支持
因为 .NET Framework 的历史包袱,所以 移植到 Linux平台下的 Mono 也继承了这些历史包袱,他不可避免。
.NET Core 的优点:
- 支持独立部署,不互相影响;
- 彻底模块化;
- 没有历史包袱,运行效率高;
- 不依赖IIS;
- 跨平台;
- 符合现代开发理念:依赖注入,单元测试等;
.NET Core 和 .NET Framework 不同:
- 不支持:ASP.NET WebForms,WCF服务器端,WF,.NET Remoting,Appdomain
- 部分Windows-only的特性,但是无法跨平台:Winform,WPF,注册表,Event Log,AD等。
我的项目可以用.NET Core开发吗?:
- 旧项目 .NET Framework 项目没必要动;用的技术再老,你别动他;
- 用到了 .NET Core 中不支持的特性不能动;
- 其他项目都可以使用 .NET Core ,已经足够成熟,社区也在全面转向 .NET Core 。从3.1 开始已经成熟了,现在已经熟透了;放心使用。