重新认识 .net & .net core开发

  最近想系统性的学习下.net core ,在这之前我想再重新的认识下.net ,以及跟.net core 的区别。

  有些我们开发.net经常用到的词汇可能还不是很了解,或者不能清晰的出他们的关系与却别,所以重新汇总了一下:

.net :

  NET 是 Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。简单的说,一个.NET应用是基于.NET Framework类库来编写,并运行于公共语言运行时 Common Language Runtime之上的应用程序。

CLR:

  Commen Language Runtime ,是一种多语言执行环境,支持众多的数据类型和语言特性,跟java虚拟机一样,是支持程序运行时的环境,它管理着代码的执行,负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。

CLI:

  通用语言基础结构(Common Language Infrastructure,CLI)是CLR的一个子集,也就是.NET中最终对编译成MSIL(微软中间语言)代码的应用程序的运行环境进行管理的那一部分。CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为 MSIL代码之后运行其上。

IL/CIL:

  Intermediate Language或者Common Intermediate Language,常被称作微软中间语言MSIL或通用中间语言CIL。(高级语言 => IL=>汇编(机器码)) .NET平台上的各种高级语言(如C#,VB,F#)的编译器会将各自的代码转化为IL-人类可读的最低阶的语言。JIT会把IL根据不同的CPU架构(如x86/IA64等等)生成不同的机器码。这也是 Java/.NET中“Compile Once,Run Everywhere”这一口号的技术基础:它们为不同的CPU架构提供了不同的“IL转化器”。

JIT:

  JIT(Just In Time简称JIT)是.Net边运行边编译的一种机制。

从微软推出的第一个版本.net 1.0开始到现在.net4.6,可以列为下面这个表(引用零点编程的汇总)


C#版本


.NET Framework版本


CLR版本


VisualStudio版本


C#1.0


.NET Framework 1.0


CLR1.0


Visual Studio 2002


C#1.2


.NET Framework 1.1


CLR1.1


Visual Studio 2003


C#2.0


.NET Framework 2.0


CLR2.0


Visual Studio 2005


C#3.0


.NET Framework 2.0

.NET Framework 3.0

.NET Framework 3.5


CLR2.0


Visual Studio 2008

Visual Studio 2010


C#4.0


.NET Framework 4.0


CLR4.0


Visual Studio 2010


C#5.0


.NET Framework 4.5


CLR4.0


Visual Studio 2012

Visual Studio 2013


C#6.0


.NET Framework 4.6


CLR4.0


Visual Studio 2015

net-framework-1.0

该版本是微软第一个.net framework版本,可独立安装,该版本主要包括公共语言运行库CLR1.0和、BCL类库和ASP.NET开发框架。

net-framework-1.1

增强了可伸缩性和性能,支持ASP.NET开发移动设备的应用程序、支持IPV6网络、ADO.NET、支持Oracle数据库进行本机通信。有了它,我们还能够使用代码访问安全性来进一步锁定和隔离ASP.NET应用程序,net-framework-1.1不是net-framework-1.0的升级版,而是一个独立的全新版本,全新的CLR1.1运行时,您可以在机器上同时安装net-framework-1.0和net-framework-1.1,两者互不影响。

net-framework-2.0

全新的改进,独立与之前的任何一个版本,独立安装,支持64位平台,运行库使用CLR2.0版本,新增泛型(Generic)、全新的API、多线程、内存分配、程序集动态加载、部分类(Partial关键字)、可空类型(Nullable)、匿名方法(Anonymous Method)、迭代器(Iterator)、DataTable和静态类(Static Class),对ADO.NET和ASP.NET框架的增强,在ASP.NET中支持主题、web部件、和Membership权限认证。

net-framework-2.0-sp1

net-framework-2.0-sp1是一个累计更新包,在net-framework-2.0发布后,客户报告了一些问题,针对这些问题,提供此更新,该更新还可帮助改进安全性,同时提供了net-framework-3.0-sp1和net-framework-3.5的系统必备功能支持,net-framework-2.0-sp1必须在net-framework-2.0的基础上进行安装。

net-framework-2.0-sp2

net-framework-2.0-sp2是一个累计更新包,在net-framework-2.0发布后,客户报告了一些问题,针对这些问题,提供此更新,同时提供了对net-framework-3.5-sp1的必备功能支持。

net-framework-3.0

独立安装包,安装包中已包含net-framework-2.0和net-framework-2.0-sp1,在这个版本中运行库仍然使用CLR2.0版本,基于net-framework-2.0的基础上新增WPF(Windows Presentation Foundation)、WCF(WindowsCommunication Foundation)、WF(Workflow Foundation)和CardSpace框架。

net-framework-3.0-sp1

针对net-framework-3.0发布后客户报告的问题提供了累积的汇总更新,该更新还可帮助改进安全性,同时提供了用于net-framework-3.5的必备功能支持。

net-framework-3.0-sp2

该更新用于解决在net-framework-3.5-sp1和net-framework-4.0混合环境中,在序列化和反序列化时,使用BinaryFormatter或NetDataContractSerializer不兼容问题,安装此更新可以解决这些问题。

net-framework-3.5

独立安装包,安装包已包含net-framework-3.0和net-framework-3.0-sp1,语言中新增LINQ、AJAX、局部var关键字、自动属性(直接写get和set)、匿名类型、对象与集合初始化器、扩展方法和Lambda表达式,新增

ADO.NET Entity Framework数据访问框架,添加两个新的程序集System.Web.Abstraction.dll和System.Web.Routing.dll。

net-framework-3.5-sp1

看似累计更新,实际上这个可以独立安装,它包含基于net-framework-2.0、3.0和3.5不断生成的新功能,此外还包括net-framework-2.0和net-framework-3.0子组件的累积更新。

net-framework-4.0

新的CLR4.0版本、任务并行库用于并行计算、PLINQ、方法的参数支持命名和可选参数、代码约定(Contracts)、动态语言运行时(DLR)、动态类型(dynamic)、集成托管扩展性框架 (MEF)和新增BigInteger和Complex类型。

net-framework-4.5

支持Metro风格的应用程序开发、可移植类库(Portable Class Libraries)、后台垃圾回收机制(BackgroundGC)、后台及时编译器(Background JIT)、异步方法、WebSocket、支持基于HTML5的ASP.NET应用程序开发、引入async和await关键字。

CLR表示公共语言运行时、BCL表示基础类库、FCL表示框架类库:

net-framework-1.0 = CLR1.0 + BCL

net-framework-1.1 = CLR1.1 + BCL

net-framework-2.0 = CLR2.0 + BCL+ FCL(WinForm + WebForm)

net-framework-3.0 = net-framework-2.0 + FCL(WCF + WPF + WF + WCS)

net-framework-3.5 = net-framework-3.0 + BCL(AJAX + Silverlight + LINQ + EF)

net-framework-4.0 = CLR4.0 + BCL(PLINQ + TaskParallel + DLR + BackgroundGC)

net-framework-4.5 = net-framework-4.0 + BCL(Metro + Async + BackgroundJIT + WebSockets)

.net core

我们知道,.net程序想要在window上运行,他需要依赖window系统下的clr.dll等环境和类库,但是其他平台没有就运行不起来。先不说其他第三方组织做了其他平台.net实现,光是net-framework过于庞大而杂,有些库效率不如其他第三方库等就让人接受不了。在跨平台方面,虽然有mono(被微软收购)等第三方组织做了实现,但是还是很多缺陷。为此,微软正式推出.net core 旨在真正实现跨平台。

为了.net 平台的规范,防止.net类库方面的碎片化,微软.net 6.0开始推出了.net Standard(标准),基于这个标准,不管你用的是.NET Framework还是.NET Core只要该类被定义于.NET Standard中,我就一定能在对应支持的.NET Standard的版本的托管框架中找到它。

.net core 的安装

下载链接:https://dotnet.microsoft.com/download

下载最新的sdk,安装。如果想要验证你安装的有没成功,可以打开CMD领料窗口输入:dotnet -v 就会查看到.net的版本信息。

安装完成之后我们会在C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\2.2.0下面看到你安装的版本目录(我装的是2.2.0),跟net-framewor一样,有一个coreclr.dll的运行库。

  这个目录下面我们也可以看到很多库都拆分成小的dll,使用起来也更加轻巧,不会有因为使用一个小的方法而把所有的库引用进来。但是这个也会造成很多开发者不熟悉库,找不到需要的dll,或者需要引入很多dll才能实现自己想要的。所以微软有一个包和元包的概念,下面解释。

我们用命令行创建一个控制台程序,输入dotnet new console -n myapp

桌面生成一个myapp的项目文件夹,命令行进入该目录,执行 dotnet run 可以直接编译运行该程序,其他一些命令可以通过dotnet -h查看

  我们看到目录中的项目文件是.csproj格式的,使用visual studio 打开。

  目录结构依赖项中有个SDK,下面Microsoft.NETCore.App下有很多引用包,这个Microsoft.NETCore.App就是一个元包,他下面的就是包,元包可以管理多个包。元包是将某一类的包打包成一个元包,在开发的时候直接引用元包,省去逐个引用的麻烦。

Microsoft.NETCore.App也是一个nuget的包,我们打开nuget包管理,安装Newtonsoft.Json包,如图。

  我们看到安装之后没有package.config这个配置文件了,其实包的安装配置整合在csproj项目文件里了。右键编辑项目文件可以看到,nuget包Newtonsoft.Json已经配置在节点ItemGroup下面了。

  这一章先大致了解下.net core一些表面的东西,后面慢慢写.net core更深层次的内容。

原文地址:https://www.cnblogs.com/rbsky/p/11370760.html

时间: 2024-10-13 23:21:24

重新认识 .net & .net core开发的相关文章

NET Core开发

NET Core开发 Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行ASP.NET Core开发. 新的ASP.NET Core项目为csproj ,打开之前的xproj项目,会提示单向升级,确认以后,会自动帮你升级至csproj. 新建项目 VS 2017新建ASP.NET Core 项目: 确定以后 可选择ASP.NET Core 1.0

NET Core开发-获取所有注入(DI)服务

NET Core开发-获取所有注入(DI)服务 获取ASP.NET Core中所有注入(DI)服务,在ASP.NET Core中加入了Dependency Injection依赖注入. 我们在Controller,或者在ASP.NET Core程序中的其他地方使用注入的服务,如logging 等. 我们要怎样获取ASP.NET Core中所有注入(DI)服务呢,下面我们来一探究竟, 也可以来看看ASP.NET Core到底注入了哪些服务. 依赖注入简单介绍: 依赖注入(Dependency in

Core 开发-Logging 使用NLog

ASP.NET Core 开发-Logging 使用NLog 写日志文件 ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 .NET Core 和 ASP.NET Core . ASP.NET Core已经内置了日志支持,可以轻松输出到控制台. 学习Logging 组件的相关使用,使用NLog 将日志写入到文件记录. Logging 使用 新建一个 ASP.NET Core 项目,为了方便,我选择Web 应用程序,改身份验证 改为 不进行身份验证.

ASP.NET Core开发-后台任务利器Hangfire使用

ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也可以使用于控制台.Hangfire 只需简单几句代码即可创建新的不同种类的任务. 目前 Hangfire 已经支持.NET Core ,现在就给大家讲解下在ASP.NET Core 里的使用. Hangfire GitHub:https://github.com/HangfireIO/Hangfir

ASP.NET Core开发-读取配置文件Configuration

ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML配置文件web.config. 新的配置系统支持多种格式的配置文件. 下面我们来以json 格式的配置文件正式开始学习. 我们新建一个ASP.NET Core Web 应用程序,选择无身份验证. 读取配置文件 在项目目录下有个 appsettings.json ,我们先来操作这个文件. 在appse

ASP.NET Core 开发-中间件(Middleware)

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-razor-layout.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-view-start.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-import-view.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-razor-tag

net core开发环境准备

net core开发环境准备 1.1  安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统,下载对应的SDK进行安装.安装之后可以从命令行运行dotnet命令,查看是否安装成功. 1.2  使用VS2015 首先确保你的电脑上安装Visual Studio 2015 Update3,当然我们也可以安装 Visual Studio Community 2015(https://www.vis

.NET Core跨平台:使用.NET Core开发一个初心源商城总括

1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上,而后才能迁移出现windows上,而且效率处理方面也不再一个级别.曾经让.NET的开发者非常无奈可又不得不遵循,随着时间的推移,后来第三方公司开发了.NET可以依赖跨平台的技术Mono,我们可以简单地对其开发的程序实现跨平台.关于Mono部署ASP.NET跨平台的技术我曾经写过

腾讯云-搭建 .NET Core 开发环境

搭建 .NET Core 开发环境 安装 .Net Core 执行代码 任务时间:时间未知 .NET Core 的官方文档很详细,本实验带你建立一个.NET Core 1.1的Web运行环境,更多内容可以可以查阅微软官方文档. 安装 .Net Core 执行命令[安装 .Net Core] sudo yum -y install libunwind libicu curl -SL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=8

Core开发-MVC 使用dotnet 命令创建Controller和View

NET Core开发-MVC 使用dotnet 命令创建Controller和View 使用dotnet 命令在ASP.NET Core MVC 中创建Controller和View,之前讲解过使用yo 来创建Controller和View. 下面来了解dotnet 命令来创建Controller和View,功能更加强大,更加完整. 结合VS Code 使你能跨平台更好更快速的开发 ASP.NET Core MVC. 也就可以在 Linux 和Mac 中更好的开发ASP.NET Core 应用程