.net是什么语言_这些年让人“眼花缭乱”的.NET

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

e69cc57748a66127d2c70a727092ee28.png

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

d888b2b0a123a3b05a95737cac954335.png

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

那么,.Net是什么?C#http://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的标准,实现了在不同模块,不同设备之间的服务或应用互相操作,开启了分布式开发的新的方向。

98c1ff0304b13e7e2ece5e2aaf89f410.png

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

4b10756a598df4b19eb8f5c3be31f228.png
编译过程

从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等高版本。

35661ce198aaa44b9a31e4d33c4f092c.png

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公司还是被微软收购了,将其整合到自己的系统框架中,并提供端到端和跨平台开发、测试以及交付等流程。

6ad46fb59e68f7a60ca92e408e35eb67.png

.NET Core

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

5b2e2c97c37b61d944e77adbf731f45c.png

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

9f3e8abdaa53b37251c83821393f7a79.png
.NET Core发展时间轴

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

6a0de066160bfdcffaa6a03bb3441e6b.gif

d26587d5d2728a9d9cf0a02994a36e78.png
.NET 5.0框架

最后

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
c++写题目描述 小 � A 是一个美食爱好者。市里新开了一家美食街,这当然是小 � A 不能错过的盛宴啦。 美食街是一条笔直的直线,在街道的不同的点上,有着不同种类的美食,第 � i 个美食店的位置为 � � x i ​ ,美食品种编号为 � � p i ​ 。 这么多种美食让小 � A 眼花缭乱,小 � A 想要品尝所有品种的美食,又想走最少的路。 请编程帮助小 � A 计算,他品尝所有品种的美食,要走的最短路程有多长? 输入 第 1 1 行有一个整数 � N ,表示街道上美食店的总数量; 接下来 � N 行,每行有 2 2 个整数 � � x i ​ 和 � � p i ​ ,分别代表了不同美食店的位置,以及这个美食店的美食品种。 测试数据保证同一个位置 � � x i ​ ,只会开一家美食店。 输出 输出一个整数,代表小 � A 要走的最短路程; 路程的计算方式为:如果从 � � x i ​ 点到 � � x j ​ ( � � ≤ � � x i ​ ≤x j ​ )包含了所有品种的美食,那么路程长度 = � � − � � =x j ​ −x i ​ 。 样例 输入复制 7 2 2 1 3 5 2 4 1 6 3 10 2 8 1 输出复制 2 说明 【样例解释】 样例中 � � x i ​ 可选取区间 [ 4 , 6 ] [4,6],可以包含所有的美食品种。 【数据范围】 对于 20 % 20% 的数据, 10 ≤ � ≤ 20 10≤n≤20; 对于另外 40 % 40% 的数据, 10 ≤ � ≤ 1000 10≤n≤1000; 对于 100 % 100% 的数据, 1 ≤ � ≤ 50000 1≤n≤50000, 1 ≤ � � , � � ≤ 1 0 9 1≤x i ​ ,p i ​ ≤10 9 ;
07-20

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值