标题使用的是进化这个词语,是因为 .NET 在不断的努力,也在不断的重构。
这篇文章的更多目的和意义在于科普,俗称“传教”。
持续进化的 .NET
上图即是一个学习的路线图同样他也是 .NET 平台的进化图。也是代表着 未来.NET的发展方向。
今天的故事呢,就会根据上图中的名词一个个的解释下来。让各位更好的了解.NET。
.NET到底是什么?
但是随着.NET技术的发展,时至今日-2018年
广义的 .NET指包含 .NET Framework,.NET Core,Mono在内,是基于.NET技术的整个产品系列。
.NET 是一个通用开发平台。 它具有几项关键功能,例如支持多种编程语言、异步和并发编程模型以及本机互操作性,可以支持跨多个平台的各种方案。
.NET 开发可以实现包括 .NET Framework、.NET Core 和 Mono。 .NET 的所有实现都有一个名为 .NET Standard 的通用 API 规范。
.NET 拥有惊人的性能和开发效率,并且拥有数百万的开发者。
以上就是最新的.NET的介绍。以后提到.NET不再仅仅是.NETFramework 了。
我也就微软着新生的 .NET 或者说进化后的.NET来说说过往吧。
.NET Framework
传统的 .NET Framework是以一种采用系统虚拟机运行的编程平台,以(通用语言运行库)CLR(Common Language Runtime)为基础,支持多种语言(C#、F#、VB .NET、C++、Python等)的开发。
这也是我们目前市面上用到最多也是大家最熟悉的.NET,它是目前在市场中的占比是最大的,他很成熟也很稳定,但是他的弱点是在于他天生不具备跨平台,这也是被广大程序员所诟病的,他需要跨平台,是需要通过配合Mono来使用,它更多的运行在Windows服务器上,需要IIS作为宿主。
.NET Framework VS JAVA
而提到.NETFramework就不得不提到Java了。
说起.NET的起源,还得先说到Java。众所周知,Java是一个主打敏捷开发,跨平台的编程语言。而.NET的诞生,与Java有着千丝万缕的联系。
Java的历史可以追溯到20世纪90年代,最初是由Sun公司为了实现电子产品智能化而开发的程序语言,主打的设计思想是敏捷开发和跨平台。1995年Java正式推出之后,立刻受到了包括IBM、Apple、Adobe、HP和微软在内的各大公司的追捧。随后几年Java的发展势如破竹,作为一款收费产品,Java给Sun公司带来了非常可观的盈利(Java已于2006年底宣布免费开源)。而微软作为软件大厂,当然不愿看着Java一家独大,同时也意识到了敏捷开发的巨大前景,由此诞生了Microsoft .NET。
.NET框架作为Visual Studio的组件之一发放,自2002年全新VS .NET搭载.NET 1.0起,.NET至今已更新四个主版本,.NET 4.0于2010年随VS2010发布, 目前最新的 .NET Framework 版本为4.7.1。来源
.NET与Java有非常多的相似之处,二者都是即时编译(JIT)的动态语言。这类语言中,项目编译生成的目标文件并不是机器码,而是需要由运行时环境进行即时编译的特殊代码。在Java中这种特殊代码叫做字节码(bytecode),而.NET中则叫做中间语言(Common Intermediate Language,简称IL)。Java官方的运行时环境叫做JRE(Java Runtime Environment),而.NET官方的运行时环境叫做CLR(Common Language Runtime)。
**而我要吐槽的地方就在这里 ** 经常有很多人唱衰.NET说BAT都不用 .NET 都是用java的。
为什么国内的互联网公司都使用的是JAVA呢?
- 阿里巴巴 1999年成立
- 百度2000年成立
- 腾讯 1998年成立 。
.NET 2002年才发布1.0版本。。你告诉我 他们有的选吗?
或许还有就是舍不得钱啊,毕竟 windows 服务器的授权费贵。~皮一下很开心。
所以 .NET 错在于它出生的晚了,不支持跨平台。 中国的互联网公司一开始就没有什么选择。
.NET的跨平台之路
在和Java 的博弈和对战中,我们都知道 .NET Framework一直被吊打,尤其在国内。好在 2014年11月12日,微软宣布将完全开放.NET框架的源代码,并提供给Linux和OS X使用
听了这么一则新闻之后大家知道 .NET或许还有机会打一波翻身仗。但是早在这个新闻之前其实就有Mono这么一个 .NET 跨平台解决方案。
Mono 神奇的跨平台解决方案
那 Mono 到底是什么?
它为什么可以跨平台?
在 .NET 开源之前,需要首先了解 Mono,了解 Mono [维基Mono]
考虑到大多人咳咳不方便搭梯子以及英文不是很好,我摘录和转载了几个博主的文章。
值得一提的是,Mono是一个有故事的项目,十几年来历经波折,几经转手,于2011年落入Xamarin公司手中,其间Mono还与微软发生过专利纠纷。
这就牵扯到了一个问题“.NET 应用程序是怎么运行的?” 想知道答案的朋友们可以去好好看 ** 魅力 .NET:从 Mono、.NET Core 说起**
** 魅力 .NET:从 Mono、.NET Core 说起** 地址:http://t.cn/RZusYbA
Xamarin
来一张对比图
Hybrid 是指混合开发,目前的ionic 、weex、MUI 均在此列表中。
React Native 是Facebook推出的基于React的做的框架,也很生猛目前在社区的生命力很旺盛。
.NET Standard
莫明奇妙提到的这个 .NET Standard 其实是未来的.NET核心,一切基于它来实现代码的共享。
.NET Standard 进一步实现跨平台跨设备的代码共享
.NET Core
最后,终于来到了现在火热的.NET Core
(注:.NET Core早期被称为 .NET vNext或 .NET 5,直到2016年1月才正式命名为 .NET Core 1.0)
需要注意的是,尽管微软把 .NET Core作为.NET未来的发展方向,但 .NET Core和 .NET Framework仍然是两个独立的产品。.NET Framework也会继续更新和维护。
.NET Core的核心点: 创新、开源、跨平台
用更少的时间,在任何(全)平台上开发高性能应用程序。
以上描述说的就是 .NET Core。
参考链接:Develop high performance applications in less time, on any platform
特点如下:
-
跨平台
您可以创建在Windows,Linux和MacOS上运行的.NETCore应用程序。
-
统一
利用统一的.NET标准库(.NET Standard),使用相同的代码定位所有平台,并使用相同的语言和工具重用您的技能。
-
轻量级
没有影响部署和模块化开发模型,您只需要依赖于您所需的最少组件包。
-
现代
多语言支持C#,VB,F#和现代结构,如泛型,语言集成查询(LINQ),异步支持等等。
-
开源
运行库,库,编译器,语言和工具都是GitHub上的开源代码,接受代码贡献,测试和完全支持。
.NET Core 经常会拿来与其他平台做类比,尤其是它的源头 .NET Framework 以及另一个相似性质的开源平台 Mono。
为了让大家,更好的理解下,我阐述下吧。
.NET Core 与其他平台的关系
.NET Framework
Mono
.NET Core 与 ASP .NET Core 的关系
ASP .NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。
使用 ASP.NETCore,可以:
- 生成 Web 应用和服务、IoT 应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .NET Core 或 .NET Framework 上运行。
注1:随着.NET技术的发展,时至今日,广义的 .NET指包含.NET Framework,.NET Core,Mono在内,是基于.NET技术的整个产品系列。而在过去的习惯中,.NET通常特指.NET Framework这一个最正统的框架。
注2:.Net Core也有两重概念,广义来说,Core指全新的一整套框架,包括运行时,命令行工具,项目结构定义等等。Core结构的项目,支持指定Framework、Mono或者Core中的一者或多者作为运行时环境。而狭义上的Core,仅特指 .NET Core CLR(运行时)。请根据上下文和语境区分其定义。
如果您不确定从哪里开始?我们建议尝试Visual Studio。
Visual Studio
Windows上的全功能集成开发环境(IDE),用于构建各种类型的.NET应用程序。宇宙最强大的编译器。
Visual Studio Code
在Linux,macOS或Windows上开发以构建跨平台网站和服务。安装C#扩展以获得最佳体验。
适用于Mac的Visual Studio
使用Xamarin构建原生Android,iOS,macOS和Windows应用程序,以及使用ASP.NETCore创建网站和服务。
OmniSharp
编辑器中的跨平台.NET开发,如Atom,Brackets,Sublime Text,Emacs和Vim。
JetBrains Rider
使用IntelliJ和ReSharper技术构建的跨平台.NETIDE。它为所有平台上的.NET和.NET核心应用程序提供支持。
.NET Core CLI
用于在Linux,macOS和Windows上开发跨平台网站和服务的命令行界面(CLI)。
尾声
最后推荐一本小书:《.NET 传奇:封闭到开放的历程》
所以2018全面扑腾到 .NET CORE吧 !
顺带一提,您如果在文章中看到一些错误和疏漏,还请指出,或者到github上进行修改提交PR。非常感谢。
我们再回过头来看这张图是不是清晰了很多呢。
参考文献:
https://en.wikipedia.org/wiki/Mono_(software)
https://wc.yooooo.us/wiki/.NET_Core
http://www.cnblogs.com/xishuai/p/mono-dotnetcore.html
http://www.jubeat.net/2016/09/25/dotnet-core-prologue/
https://wc.yooooo.us/wiki/.NET框架
https://wc.yooooo.us/wiki/ASP.NET
https://wc.yooooo.us/wiki/ASP.NET_Core
转载请注明出处:https://stgod.com/4115/