这些年让人“眼花缭乱”的.NET

最近IT届有个的热门事件,就是Python之父Guido van Rossum因为退休生活太无聊加盟微软搞开源。大佬果然还是闲不下来啊,我们向大佬“龟叔”致敬。

再看下面网友的评论,是不是对在Excel中使用Python有所期待?

说到微软,为了和Java抗衡,这几年微软的.NET的发展可谓是日新月异。最近,微软也发布了.Net的一个非常重要的版本.Net 5.0。

那么,.Net是什么?C#VB.Net和它又有什么关系?什么是.Net Framework? 后来微软又开源一个.Net Core,这又是什么鬼?带着这些问题和大家一起学习和梳理下微软这些年的.Net发展。

COM

我们先从COM(Componet Object Model)说起,在现在看来它算是一个古老的技术了,在《COM 原理与实现》一书中提到:

COM即组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用统一的方式进行交互。COM既提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间交互的规范不依赖任何特定的语言,所以COM也可以是不同语言协助开发的标准。

COM通过这个接口规范,实现不同语言可以通过这个接口规范互相调用。假如我们用C++开发的代码要在VB中调用,或者VB开发的代码需要在C++中调用,这时我们就可以通过COM制作DLL动态库,通过接口可以调用其他语言DLL动态库里的程序。随着计算机技术的发展,COM明显不怎么活跃了,但是它的出现解决了不通语言之间不能互通的问题,在那个年代也算是一个伟大的技术。

在2002年,微软发布了.NET Framework,COM的时代宣告终结。

.NET Framework

.NET Framework是一个全新软件开发框架,一个用于软件集成的开发平台,它提供了两个非常核心的集成技术,一个是用于集成操作系统软件的公共语言运行库CLR(Common Language Runtime)。CLR为程序的执行提供一个托管(Managed)的执行环境,它是.NET Framework的执行引擎,为托管程序的执行提供内存分配、垃圾回收、安全控制、异常处理和多线程管理等服务。另一个是用于集成Internet范围的XML Web Service,XML Web Service是以XML消息作为数据的基本通讯方式,遵循其他Internet的标准,实现了在不同模块,不同设备之间的服务或应用互相操作,开启了分布式开发的新的方向。

在.Net Framework发布时也诞生了一种新的高级面向对象语言C#,不过,那个时候VB还是一个非常流行的开发语言,有大量的开发人员使用VB。微软为了推广自己的平台,不仅让熟悉C系列的开发人员适应和快速上手,同时也把VB加入了这个框架中,让熟悉VB的人也能轻松的在这个平台上开发。因此,.NET Framework是多种语言支持的,比如:C#,VB,JScript,J#等。但是不管是什么语言的源程序经过相应的编译器之后都会生成统一的中间代码,我们叫做公共中间语言(Common Interneduate Language),最后再生成机器语言。

编译过程


从2002年发布第一个版本,之后便马不停蹄的进行了很多次的版本更新和升级,每次快速的迭代更新都有着丰富的内容变化。2005年发布了2.0版本,引入了泛型,并增加了大量的类型。2006年发布了3.0版本,增加了WF、WCF、WPF这三大关键技术。2007年发布了3.5版本,这个版本有个非常重要的更新,支持了LINQ。2010年发布的4.0,为了适应新的应用和开发场景,加入了动态编程、并行计算、默认参数、协变和逆变等。2012年发布了4.5版本,这个版本包括任务的异步和等待,Zip压缩,正则表达式超时,优化配置文件提高启动性能,垃圾回收等五大特色功能。还有后面发布的4.6,4.7等高版本。

2016年,微软的.Net Core发布,从此,微软也走上了开源之路。

MONO

说起微软的.NET的开源进程,不可不提到Mono这个开源项目。在.NET诞生之初,只是考虑到将.NET跨语言,并没有考虑到将其跨平台化。毕竟,对于微软来说,自己本人拥有普及率极高的操作系统,也不希望为自己竞争对手的操作系统(Linux,MacOS等)做支持。在微软推出.NET之后,Ximian公司对.NET产生了浓厚的兴趣,于是主持并发起了Mono项目,将.NET在Linux上基于开放标准公共语言基础架构CLI-ECMA-335,实现了编译器和通用语言架构等一整套开发工具。我们在Mono的官网上可以发现下面这句话:

Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.

但是,Mono的发展一直处于不温不火的状态,虽然Ximian被Novell收购,但是一直在微软和SUN的夹缝之中生存。最后,在2016年,Ximian公司还是被微软收购了,将其整合到自己的系统框架中,并提供端到端和跨平台开发、测试以及交付等流程。

.NET Core

虽然.NET Core也是微软推出的.NET平台,它最初的目的并不是.NET Framework替代品,它们是微软两个不同的产品线。.NET Core是微软专门为了跨平台而推出的开源.NET平台,它可以在Windows、MacOS和Linux操作系统上运行,支持C#、VB.NET或F#等语言,可以开发Web,桌面,移动,云,游戏,物联网等应用程序。它和.NET Framework一样基于同样的标准基础库,实际上就是.NET Standard,微软发布了这么多.NET平台框架,为了保证系统的一致性,从而推出一个底层的标准库(NET Standard Library)。.NET Core和.NET Framework都在这套标准上实现自己的类库。

对于,最近发布的.NET 5.0就是.NET Core的升级,微软从3.1直接跳过了4.x版本,微软认为它将是最好的.NET平台,并简化了它的名称,它是未来发展方向,当然,你也可以叫继续它.NET Core。

.NET Core发展时间轴


.NET 5.0会有更加出色的性能,将.NET Framework、Mono、.NET Core、.NET standard统一起来,形成一个通用的平台,可以开发桌面应用程序、云端服务、网站、跨平台移动应用程序、游戏、物联网以及AI人工智能等。

.NET 5.0框架

最后

.NET的发展之路其实并不好走,尤其是java垄断了大部分市场多年,其地位是很难撼动的。就拿国内来说,几个大厂普遍采用Java作为主流开发语言,而且其项目框架也比较成熟,再切换成.NET平台也是不切实际的。不过,对于.NET Core这个轻量级的平台来说,确实也有着比较不错的性能和开发效率。这一点相信会受到广大工程师的喜欢,平时,拿它做个小程序或者demo也是个不错的选择。好用又免费谁不爱呢,还是希望.NET越走越远吧。


本文首发公众号:Will的大食堂,转载请联系微信:yuzaiduzhong。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容