最近想系统性的学习下.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更深层次的内容。

1)NET CORE 重新认识 .net & .net core的更多相关文章

  1. ASP.NET 5 已死 - 隆重介绍 ASP.NET Core 1.0 和 .NET Core 1.0

    还没正式登场就死了?不能怪我标题党,是大神Scott在他博客上这么说的,我只是翻译了一下. 在1月20号最新的ASP.NET Community Standup视频中,微软aspnet开发组的大帅哥 ...

  2. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

    ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...

  3. ASP.NET Core 开发 - Entity Framework (EF) Core

    EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...

  4. 什么是core dump linux下用core和gdb查询出现"段错误"的地方

    什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-31932 ...

  5. 《驾驭Core Data》 第一章 Core Data概述

    <驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...

  6. Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程

    原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...

  7. .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

    .NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...

  8. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  9. Orchard Core Framework:ASP.NET Core 模块化,多租户框架

    Orchard Core Framework:ASP.NET Core 模块化,多租户框架 上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core ...

  10. [翻译 EF Core in Action 1.9] 掀开EF Core的引擎盖看看EF Core内部是如何工作的

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

随机推荐

  1. win7企业版激活

    win7企业版激活:(亲测有效) 打开命令提示符,依次执行下面的代码,分别表示:安装win7企业版密钥,设置kms服务器,激活win7企业版,查询激活期限,kms一般是180天,到期后再次激活. sl ...

  2. PHP 之循环创建文件夹

    /** * 循环创建文件夹 * @param string $dir 需要创建的文件夹路径 * @param integer $mode 文件夹权限 * @return bool 返回创建是否成功 * ...

  3. 【BIEE】报表导出数据只显示500行,如何解决?

    BIEE报表展示的时候每页只显示500行,进而导致导出的时候也只能导出500行,客户抱怨:每次只能导出500行,导出后还得自己合并! 解决思路: 1.找到路径$BIEE_HOME\instances\ ...

  4. Portainer实战

    Portainer是一个轻量级的Docker环境管理UI,可以管理docker host和docker swarm(我主要看中了能管理swarm这个,毕竟市面上能管理swarm的平台不多).之所以说是 ...

  5. Linux设置开机挂载

    Linux可不可以在开机的时候就将我们要的文件系统都挂载好?这样就不需要每次进入Linux系统还要挂载一次.当然可以,那就直接到/etc/fstab里面去修改. 系统挂载的一些限制: - 根目录/是必 ...

  6. #C++初学记录(动态规划(dynamic programming)例题1 钞票)

    浅入动态规划 dynamic programming is a method for solving a complex problem by breaking it down into a coll ...

  7. sqlite3 读写锁

    转载:https://blog.csdn.net/u012218838/article/details/79362929(sqlite3 使用读写锁SRWLOCK例子) 转载:https://my.o ...

  8. word/wps 制作下拉列表

    准备: 1.数据页 2.项目名称sheet 3.问题类型sheet 开始制作: 数据 --- 有效性 --- 允许“序列” --- 来源 -- 其他sheet页“单元格”选择范围 回车.确定 即可

  9. Oracle系列一 SQL语句基本概念和学习准备

    DML: Data Manipulation Language 数据操纵语言DDL:  Data Definition Language 数据定义语言DCL:  Data Control Langua ...

  10. 基于EasyNVR摄像机流媒体服务器实现RTSP或Onvif监控摄像头Web无插件化直播监控

    前言介绍 随着互联网的发展,尤其是移动互联网基于H5.微信的应用越来越多,企业也更多地想基于H5.微信公众号来快速开发和运营自己的产品,而传统的安防IPC所输出的各种RTSP.GB28181.SDK视 ...