什么是.Net

.Net 本身就是基于公共语言基础架构(CLI)实现的平台独立的公共语言开发平台,只是自2006年成为规范以来的CLI,只有Windows自己支持罢了(mono除外)。微软的.Net Framework 就是CLI的实现,称之为CLR(公共语言运行时)。其核心部分就是对CLI的虚拟执行系统(VES)基于Windows的实现。CLR其实就相当于Java的虚拟机运行时JRE。本质上VES仅为编译成公共中间语言(CIL)指令码的应用提供虚拟执行环境。CIL之前被称之为MSIL,和原生汇编语言一样,是开发者不友好的。所以基于CIL,微软为开发者提供了开发.Net 应用程序的高级编程语言,如C#、F#及VB.Net等。

C#开发的.Net App为什么不能跨平台

公共语言基础架构(CLI)本身就是为跨平台设计的。但当初,微软应该是出于Windows的垄断考虑,根本就没打算基于其他的OS实现VES,所以C#的developer基本上都是Windows的developer了。C#的开发的应用系统基本上是基于Windows平台运行。

.Net Core 是什么,其如何实现跨平台

其实只要基于Linux实现CLI,主要是其VES,C#开发的app就可以在Linux上运行。 当然,由于过去的.Net Framework提供了很多特定于Windows上的UI框架 如WPF,Windows Forms,基于这些框架的APP只能是理论上可以在Linux上运行,但实际支持的代价会比较高,或许根本不现实。

所以, .Net Core诞生了。.Net Core就是对.Net Framework进行的裁剪 (把上述UI相关的framework去除),实现的一个类似于JRE一样的CLR,然后同时实现多个OS的VES,从而实现了跨平台。

微软为什么需要.Net Core

微软之所以愿意这么做,在某种程度上说,是被逼的,或者说是顺应历史潮流而为之。在当下,风起”云“涌的大环境下,得益于Azure,微软顺利从业已衰弱的Windows业务顺利转型到云服务提供商。而作为其所提供的云服务模式之一PaaS,必须能提供客户需要的OS,不仅仅是Windows。那么它当然希望Azure上的不同的操作系统运行的都是使用自己提供的开发技术开发的应用咯。

.Net Core 前景会风光无限吗

可是,通过虚拟执行环境实现开发的应用跨平台运行,JAVA从其诞生之日起就是这么做的。而时至今日,很多语言新秀争奇斗艳,被Oracle收购的JAVA都容颜渐老了。。。 C#真能依靠才实现了跨平台的.Net Core焕发第二春?

参考

CLI Specification

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf

.Net Core 真能令微软的.Net 跨平台“蔓延”?的更多相关文章

  1. Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码

    Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够编译并执行我们的代码. 作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一 ...

  2. .net core程序中使用微软的依赖注入框架

    我之前在博文中介绍过Asp.net core下系统自带的依赖注入框架,这个依赖框架在Microsoft.Extensions.DependencyInjection中实现,本身并不是.net core ...

  3. 使用vscode开发调试.net core应用程序并部署到Linux跨平台

    使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发及调试. https://github.com/aspnet/ ...

  4. ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting

    有关Hosting的基础知识 Hosting是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些病毒离开了活体之后就会死亡,我们把那些活体称为病毒的宿主. ...

  5. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  6. Visual Studio 2017使用Asp.Net Core构建Angular4应用程序

    文章转载请著名出处:http://www.cnblogs.com/smallprogram 你需要了解的名词 1. NodeJS,这是一个基于Chrome V8 JavaScript引擎构建的Java ...

  7. 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  8. Net Core构建Angular4应用程序

    在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序   前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1 ...

  9. AspNetCore.Hosting

    Microsoft.AspNetCore.Hosting 有关Hosting的基础知识 Hosting是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些 ...

随机推荐

  1. [JS进阶] HTML5 之文件操作(file)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/oscar999/article/details/37499743 前言 在 HTML 文档中 < ...

  2. (1)iOS9完美越狱

    方式一:同步推越狱,其实用的也是方式二 参考:iOS9.3.5不完美越狱(点击跳转) 方式二:使用impactor越狱. 下载地址:http://www.pc6.com/mac/505285.html

  3. HDU1698 Just a Hook —— 线段树 区间染色

    题目链接:https://vjudge.net/problem/HDU-1698 In the game of DotA, Pudge’s meat hook is actually the most ...

  4. [Codeforces Round #461 (Div2)] 题解

    [比赛链接] http://codeforces.com/contest/922 [题解] Problem A. Cloning Toys          [算法] 当y = 0 ,   不可以 当 ...

  5. 洛谷P4141 消失之物——背包

    题目:https://www.luogu.org/problemnew/show/P4141 竟然是容斥:不选 i 物品只需减去选了 i 物品的方案: 范围原来是2*10^3而不是2*103啊... ...

  6. poj 3321(带时间戳 + 区间统计)

    题目描述: 给定一颗树,求某个节点的子树的val值之和 可以用树的前序遍历给每一个节点编号,从而可以确定一个节点的子树的范围,这样就可以进行直接在区间上进行统计了. vector < int & ...

  7. Java使用动态代理实现AOP

    参考资料: http://www.importnew.com/15420.htmlhttp://www.cnblogs.com/techyc/p/3455950.html Spring是借助了动态代理 ...

  8. HDU3949:XOR(高斯消元)(线性基)

    传送门 题意 给出n个数,任意个数任意数异或构成一个集合,询问第k大个数 分析 这题需要用到线性基,下面是一些资料 1.高斯消元&线性基&Matirx_Tree定理 笔记 2.关于线性 ...

  9. 徐州联赛选拔赛 - 计算IP地址值

    题目链接 思路:这是一道非常简单的题目,直接用公式计算就好了.对于IP地址a.b.c.d,转换为十进制数就是(a<<24)|(b<<16)|(c<<8)|d.唯一要 ...

  10. linux系统 for 大数据

    使用大数据前,需要选择linux系统,本人选择的是centos6.9系统,并且装在虚拟机上,并且要注意: 1.网络类型选择NAT. 2.语言设置为English(English). 3.操作系统的键盘 ...