三分钟让你秒懂.Net生态系统
提到.Net的时候,大多数人的第一反应可能就是.Net Framework和Visual Studio。.Net Framework的第一个版本发布与2002年2月13日,这对于科技发展日新月异的时代,这差不多已经可以看做是史前文明了。
.Net Framework发布之后,微软就一直致力于让它成为现代Web、移动和云时代的可用性开发平台。这也促成了.Net Core 2和.Net Standard 2.0的发展,但是这种快速发展也往往让人们开始对庞大的.Net 生态系统感到困惑。
.Net生态系统混乱
我们都知道.Net框架,但是它是如何在基类库中工作的呢?什么是便携式类库?什么时候使用?.Net Core又是什么呢?与.Net Framework有什么不同呢?什么又是.Net Standard?如何安装?如何建立一个可重用的库呢?
上面的所有因素都会在你为项目选择的时候造成困扰。什么是.NET标准类库,.NET Core或.NET Framework?什么是共享项目和可移植类库?你应该在哪里集中精力?是否应该学习一切,放弃旧知识?如何选用runtime?……这些都是在开始下个项目或者学习新技术之前都需要了解的关键问题,所以本文将尽力在文中回答这些问题。
.NET生态系统解释
为了满足现代应用的需求,.Net生态系统正在经历不断的升级改造,下图是.Net生态系统的现状:
.NET框架
.NET生态系统中最古老也最致命的runtime就是.Net Framework。这也是大家容易混淆的地方,很多人一听.Net Framework就自然的认为这是一个框架,当然它是框架,但也是个平台,所有的runtime都是这样的。
正如前文所述,.Net Framework自2002年诞生以来,表现一直很抢眼,用户可以使用它来构建WPF、Windows窗体、ASP.NET窗体和MVC应用程序。
.Net Framework可以构建多种类型的应用程序,但主要以Windows为中心的。这是这是因为.NET Framework为某些应用程序类型使用了某些特定于Windows的API。
.NET Core
.NET Core于2016年发布,可用于创建ASP.NET Core和通用Windows平台(UWP)应用程序。支持跨凭条和并发配置,这意味着可以在同一台计算机上运行多个版本的.NET Core,它很小,性能很好。
.NET Core不是.NET Framework的新版本,它只是一个可用于某些用例的不同版本。.NET Core不会取代.NET Framework。
Momo for Xamarin
Momo runtime本身也是.Net Framework的跨平台实现,可以运行各种应用程序,如控制台和Windows窗体应用程序。因为本文重点介绍.NET生态系统,所以Mono的讨论将集中在Xamarin。
Xamarin从2011年开始运行,可创建适用于iOS,MacOS和Android的应用程序。它可以通过移动平台来构建和运行原生或者接近原生的应用程序。Xamarin的Mono运行时可使用iOS和Android的特定API,构建Xamarin.Mac应用程序。
.NET Standard
上面三个runtime都是实现.Net Standard的。.NET Standard是.NET API的一个规范,它为每个.NET运行时提供了实现。因此,为这个runtime创建的代码也可以由另一个runtime来执行。
工具和基础设施
所有runtime都需要使用工具和基础设施来编译和运行代码,这其中包括C#、VB.NET和F#等耳熟能详的语言都可以在runtime中运行。构建工具包括MSBuild、Common Language Runtime(CLR)和CoreCLR等。
运行时比较
下面我们来比较一下三种runtime的不同,例如工作负载、安装方式、用途等等方面。
结论
本文中所提到的所有内容都可以被称之为.NET开发平台。
.NET Framework,.NET Core和Mono是runtime,它们还包含用于构建应用程序的库和框架。
.NET Standard Library 是一组API规范,它不是用户下载和安装的东西,而是描述API和API做什么的规范。
最后,基础设施是指让上面所有的东西可以工作,它包含编译器,语言和运行时组件,如垃圾回收器和即时编译。
.Net生态系统看起来很复杂,但是当你这样把它们一一分解开来,那么你就会发现微软如何改造其生态系统,并使之永葆活力和生命力。
三分钟让你秒懂.Net生态系统的更多相关文章
- x01.TextProc: 两三分钟完成的一个小工具
在工作中,遇到这么个问题,需要将 Excel 表中类似 2134-1234-4456 的商品编号输入到单位的程序中,而程序只认 213412344456 这种没有 ‘-’ 的输入.数量比较多,一笔一笔 ...
- unity3d 三分钟实现简单的赛车漂移
提到赛车游戏,大家最关心的应该就是漂移吧?! 从学unity开始,我就一直在断断续续的研究赛车 因为自己技术太烂.悟性太差等原因,我走了不少弯路 也许你会说,网上那么多资料,你不会查啊 是啊!网上一搜 ...
- 三分钟部署Laxcus大数据管理系统
Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统.能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库.最新的2.x版本已经实现对当 ...
- JUnit三分钟教程 ---- 实际应用
JUnit三分钟教程 ---- 实际应用 摘自http://lavasoft.blog.51cto.com/62575/65775 接上文"JUnit三分钟教程 ---- 快速起步&qu ...
- JUnit三分钟教程 ---- 快速起步
JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...
- 三分钟浅谈TT猫的前端优化
首先看一张访问TT猫首页的截图: 测试环境为谷歌浏览器,暂且不讨论其它浏览器,截图下方我们可以观察到以下参数: DOMContentLoaded:1.42s | Load:2.31s 以上参数是在CT ...
- 演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史
演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史 原文出处: 少数派 9 月 18 日苹果就将推出 iOS 8 正式版了,从 2007 年发布第一代 iPhone 时搭载在 iPh ...
- windows+mysql集群搭建-三分钟搞定集群
注:本文来源: 陈晓婵 < windows+mysql集群搭建-三分钟搞定集群 > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...
- Powershell极速教程-如何在三分钟内编写项目编译脚本
分析及思路 来看一下项目目录结构 炒鸡正常的三板斧src+docs+tests.咦,怎么会多出一个build的文件夹呢,这就是我们今天要研究的目录.今天我会带着大家在五分钟之内编写一个极简的编译脚本. ...
随机推荐
- 用控制台编译和运行,输出HelloWorld
HelloWorld 建立一个Java文件,文件后缀为.java(Hello.java) public class Hello{ public static void main(String[ ...
- Solr与对应Jdk版本的关系
Solr各版本下载地址:http://archive.apache.org/dist/lucene/solr/ 下载的包里面的CHANGES.txt 有当前版本需要的说明.
- Spark 中 GroupByKey 相对于 combineByKey, reduceByKey, foldByKey 的优缺点
避免使用GroupByKey 我们看一下两种计算word counts 的方法,一个使用reduceByKey,另一个使用 groupByKey: val words = Array("on ...
- 问题 I: 数字分组2
问题 I: 数字分组2 时间限制: 1 Sec 内存限制: 128 MB[命题人:admin] 题目描述 已知一堆魔法石的重量,问如何分成两堆,使得它们质量和之差最大,但不能大于(可以等于)这些数中 ...
- winform学习(2)窗体属性
窗体也属于控件(controls) 主窗体:在Main函数中创建的窗体,当关闭主窗体时,整个程序也就关闭了. 如何打开控件属性面板: ①在该控件上单击鼠标右键--属性. ②选中该控件,按F4 窗体常用 ...
- MP4文件格式分析及分割实现(附源码)
MP4文件格式分析 MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的 ...
- 【做题笔记】P1090 合并果子
题目大意:给定 \(n\) 个数,每次可以任意选两个数 \(a_i,a_j\) 相加,把相加的结果作为一个新数继续执行此操作,直到只剩一个数为止.现要求使最后得出的这个数最小. 一个显然的贪心策略:每 ...
- jQuery 源码解析(三十) 动画模块 $.animate()详解
jQuery的动画模块提供了包括隐藏显示动画.渐显渐隐动画.滑入划出动画,同时还支持构造复杂自定义动画,动画模块用到了之前讲解过的很多其它很多模块,例如队列.事件等等, $.animate()的用法如 ...
- 计算几何-多边形内核判定-HPI-poj3335
This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 先解决一个问题, ...
- pikachu平台搭建
1.将pikachu转移至htdocs 2.然后打开pikachu文件夹里的inc文件夹 3.里面对应的内容该成之前刚刚设置好的数据库服务器地址,用户名,密码和端口号 4.打开浏览器,输入http:/ ...