这些年让人“眼花缭乱”的.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 FrameworkCOM的时代宣告终结。

.NET Framework

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

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

编译过程

从2002年发布第一个版本,之后便马不停蹄的进行了很多次的版本更新和升级,每次快速的迭代更新都有着丰富的内容变化。2005年发布了2.0版本,引入了泛型,并增加了大量的类型。2006年发布了3.0版本,增加了WFWCFWPF这三大关键技术。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.NETF#等语言,可以开发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 Frameworkmono.net core.net standard统一起来,形成一个通用的平台,可以开发桌面应用程序、云端服务和网站、跨平台移动应用程序、游戏、物联网以及AI人工智能等。

.NET 5.0框架

最后

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

.NET 5.0官网介绍:https://devblogs.microsoft.com/dotnet/introducing-net-5/

感谢大家耐心的阅读,希望都有所收获,也欢迎大家关注微信公众号【Will的大食堂】,一起交流学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值