最近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 5.0
会有更加出色的性能,将 .NET Framework
、mono
、.net core
、.net standard
统一起来,形成一个通用的平台,可以开发桌面应用程序、云端服务和网站、跨平台移动应用程序、游戏、物联网以及AI人工智能等。
最后
.NET
的发展之路其实并不好走,尤其是java
垄断了大部分市场多年,其地位是很难撼动的。就拿国内来说,几个大厂普遍采用Java作为主流开发语言,而且其项目框架也比较成熟,再切换成.NET
平台也是不切实际的。不过,对于.NET Core
这个轻量级的平台来说,确实也有着比较不错的性能和开发效率。这一点相信会受到广大工程师的喜欢,平时,拿它做个小程序或者demo也是个不错的选择。好用又免费谁不爱呢,还是希望.NET
越走越远吧。
.NET 5.0
官网介绍:https://devblogs.microsoft.com/dotnet/introducing-net-5/
感谢大家耐心的阅读,希望都有所收获,也欢迎大家关注微信公众号【Will的大食堂】,一起交流学习。