.Net Core[译文]

文章概览:

什么是.Net Core平台?

.Net Core是一个模块化的,跨平台的,开源实现的.Net Framework,它能够在Windows设备上运行,也能够在Linux和OS X上运行。不一样于传统的.Net Framework(特色:庞大的,系统级的,是一个只能跑在Windows上的运行时环境),你能够用.Net Core创造以多平台为目标的组件化的库和应用程序,而且.Net Core能够与应用程序一块儿部署。css

.Net Core特性

让咱们从宏观上看看.Net Core的特性html

跨平台支持

.NET Core 应用程序能够同时跑在32位和64位的Windows平台上,也能够跑在OS X和Linux上。git

相反的,基于传统.Net Framework编写的应用程序只能跑在Windows上。注意的是UWP通用应用程序借助.Net Core的实现,也只能跑在Windows桌面程序,平板和Windows phone手机上。程序员

开放源代码

.Net Core的RunTime(CoreCLR)和基础类库都是开放源代码的,另外.Net Core的源代码都是免费得到的,这些意味着:github

  • 设计注释,功能规格,还有特定实现文档都是公开的
  • .Net Core的代码评审(Code review)是公开的
  • 您能够经过使用GitHub的提供的功能,将bug公开,对源代码提出您的建议,并且你能够提交新特性的请求,或者你本身写的代码均可以提交。
  • 你也能够下载全部的源代码在你的机器上编译。Runtime与基础类库,还有一些工具能够在任何平台上编译。

改善的Console App

传统的.Net Framework能够在Windows上建立运行建立控制台apps,.Net Core一样能够,可是.Net Core改善了控制应用程序:web

  • 跨平台:控制台程序能够跑在Windows,OS X和Linux
  • 原生编译:将托管程序的好处与原生C/C++应用程序的性能相结合

安装简单

由于.Net Core不是一个操做系统的组件,如今安装:编程

  • 不须要管理员权限
  • 不须要触碰系统组件了,也就是说不须要向操做系统的系统目录和注册表中写文件了
  • 复制一些文件到目标计算机更简单了,或者将原生framework编译进你的app。

这样,新的开发者不到一分钟就能够入门.Net了,包括下载Framework和tools。能够从这里canvas

部署简单

做为运维人员,去部署一个开发部门给你的.Net应用程序的时候,你首先要作的就是去服务器检查.Net framework版本是否符合要求,若是不符合就须要安装一个能运行这个程序的基础版本,这些会给运维人员带来很大的困扰
相比之下,。Net core有两种发布部署方式:windows

Portable Apps

在部署一个portable app的时候,你除了.Net Core库以外,只须要部署你的程序和它的依赖就能够。
在目标机器上为了将Portable Apps跑起来须要安装.Net Core。你不须要提早去考虑你的app支持哪一个平台,由于.Net Core就是一个独立的组件。
在.Net Core里,Portable Apps是默认的程序类型。api

Self-contained Apps

Self-contained apps包含了全部的依赖,.Net Core runtime也会做为软件的一部分.因为你的APP中内置了.Net Core,因此无论你要部署的那台机器上安装没安装.Net Core均可以运行,并且就算以前的机子上有人安装了.Net Core,你的.Net Core类库也是与别人的.Net Core类库隔离开的。
这种方式的前提得是你的程序里内置了对应平台的.Net Core,好比你要在OS X上部署,你的APP里须要内置OS X对应的.Net Core,若是你内置的.Net Core是Linux版本的,那你就不能在OS X上边部署,这就要求你必须先考虑好,你的应用程序面向的平台。

.Net Core组件(Components)

和传统的.Net Framework很是像,.Net Core由一个叫CoreCLR的公共语言运行时(Common language runtime)组成。和.Net Framework同样,.Net Core中关键的也是类库。.Net Core关键的是CoreFX,这是一个模块化的类库集,而非单一的.Net framework类库。这样就能够你的程序须要什么库就加载什么库,不须要的不会加载。

公共语言运行时(The Common Language Runtime)

.Net Core中的公共语言运行时——CoreCLR是一个轻量级的运行时,提供了好多和传统.Net Framework的运行时相同的服务。这些相同的服务包含:

  • 一个垃圾回收器,它提供了内存自动管理。垃圾回收器按需分配和释放内存;你没必要经过程序去作这些。不像C++,须要本身去管理操做内存的分配和释放。.Net Core也用了和.Net Framework相同的垃圾回收器,更多信息请访问Garbage Collection
  • 一个just-in-time(JIT)编译器,编译IL或者.Net中间语言(intermediate language)到机器码。在某些架构中,JIT编译器支持SIMD硬件加速。
  • 一个异常处理机制,容许你经过try/catch语句处理异常。

类库(The Class Library)

.Net Core的类库与.Net Framework的类库除了有一处主要的不一样点以外,其他的很是类似。
不一样在于:
传统的.Net Framework有不少类库是属于操做系统的一部分,而且它是经过Windows 自带的Windows update更新。
在.Net Coe中,它是按照功能组织的模块的我的库。

Microsoft.NetCore.App 被包含在runtime里边了,它包含了开发全部APP基本的类型,这些类型包括:

  • 基础类型,好比bool类型,签名与不签名的整型,浮点型和char结构
  • String类型:在.Net Core中,一个字符串是UTF-16编码单元的序列。.Net Core还包括了许多编码类型,这些编码类型能够容许你将UTF-16编码字符串转换成其余编码的字节数组,例如:你能够用UTF8Encoding class将.Net Core的string字符串转换成utf-8编码的字节数组,用来表示Linux上的string字符串。
  • 任务类型,例如TaskTask ,用来支持异步编程。
  • 基本的线程类型
  • Console Class,用来支持开发console apps.

另外的一些库,须要经过Nuget包来安装

.Net Core工具(.Net Core Tools)

.Net Core包含了一个跨平台的命令行SDK,名字叫作.Net Core CLI(Command-Line Interface).这个CLI是编写.Net Core应用程序的一组对Unix友好的工具。它让C#编译器和Nuget包管理工具变得抽象,变得抽象的意思是你感受不到编译器和包管理工具的存在,应用程序就编写好了。他一样能够与.Net原生工具牢牢集成在一块儿来产生高性能的原生app和库。
CLI带来的好处是开发者能够不用安装大型的IDE就能够编译和测试他们的代码,这在不是本身的电脑或者生产服务器上是极好的。visual studio code与visual studio在底层都是用的CLI,你能够根据你的须要选择不一样的IDE.好比你能够直接经过文本器来使用CLI,或者你能够用IDE开发,编辑器内部调用CLI.

大多数状况下,你直接使用.Net Core CLI就是经过给dotnet.exe 提供参数,下边是dotnet.exe可使用的命令:

  • dotnet --help:显示关于.Net Core CLI命令行的信息
  • dotnet new:初始化一个C#项目
  • dotnet new --lang F#:初始化一个F#项目
  • dotnet restore:为你的app还原全部的依赖
  • dotnet build:编写一个.Net Core app
  • dotnet publish:发布一个portable或者self-contained app。(查看【部署简单】章节)
  • dotnet run:从源代码中运行app
  • dotnet pack:在你的app中建立一个Nuget包

    dotnet.exe有扩展模型,容许你添加额外的命令。

语言支持和开发环境(Language Support and Development Environments)

.Net Core是语言无关的:任何以.Net Core为目标的语言都是能够用来开发.Net Core应用程序的,经过不一样的编程语言开发的app,用其中的一种语言便可无缝地访问类型与成员。

当前,你能够用下边的两种语言的任意一种开发:

咱们打算在将来支持更多的语言。
你有多种开发环境能够选择用来编写app,包括:

.NET Core and the .NET Framework

为了更好的感知.Net Core是什么,将它与.Net framework相比较:

.Net Core

包含CoreCLR,一个可提供基础服务的轻量级运行时(runtime),尤为自动内存管理,垃圾回收器,还有一个基础的类型库。

包含了CoreFx,一套我的模块化组装,你能够安装须要将其添加到你的app中,与.Net Framework 4.x不一样,.Net Framework 4.x老是使整个.Net Framework类库可用,.Net Core只需选择你想要的。例如,若是你正在开发一款基于矢量的应用,你能够下载System.Numerics.Vectors包,而不是须要一个很大类库的花销,这样能够显著的减小你app的体积和他的依赖项。

适用于各类各样的现代应用程序,对内存和储存有限制的小型设备起做用

能够利用若干的技术来开发应用,好比asp.net core
开发web应用,Windows communication Foundation(WCF)

开发与现有的WCF服务相关联的应用,workflow foundation(WF)构建工做流。

能够变成app本地。换句话说就是.Net Core版本能够牢牢与你的app相结合,这能够减轻好多版本问题。

.NET Framework 4.x

包含公共语言运行时(CLR),一个至关大的运行时,能够提供内存管理,隔离应用程序域(application domain),大量的应用程序服务。

包含了.Net Framework类库,这个类库包含了成千上万个的类与成员,不只很是大并且又是一个总体,不论你的app用了单个类型或者他们的成员(或者大多数app利用了一小部分函数),他们都是始终加载而且能够随时访问的。

适用于传统的Windows桌面应用程序,包括Windows forms(winforms)和Windows Presentation Foundation(WPF)应用程序,能够运用许多技术来开发应用程序,例如,ASP.NET和ASP.NET Web Form构建web应用程序,Windows Communication Foundation (WCF)构建包含soap的服务,Workflow Foundation (WF), 构建工做流。

在一个给定系统中全局可用。换句话说,即便一个app中包含了一个特定版本的.Net Framework安装器,可是假如安装器发现它不存在仍是会安装完整的.Net framework,而且会独立于app维护。这就会产生版本问题,特别地是一个app遭遇了一个没有预想的版本,或者一个app跑在了以前没有开发的.Net Framework版本上。
从Windows8开始,.Net Framework做为操做系统的一个组件安装,而且经过Windows update升级。对于不一样的Windows里边内置不一样的.Net Framework版本,更多的信息请访问.NET Framework System Requirements.

总结:

虽然.Net Framework 4.6.2预览版和.Net Core是面向不一样的平台,表明着不一样的app开发和部署方法,可是他们都遵照 .Net标准1.5。这意外着他们彼此可以提供一个高度的兼容性与统一行为。尤为:

  • 有经验的.Net 开发者想要开发不一样设备和平台的应用程序的时候,能够很容易适应.Net Core的开发。
  • .Net Core开发者能够很容易的过渡到用.Net Framework开发Windows桌面程序、平板和手机的方式上。
  • 用.Net Framework或者.Net Core写的类库能够很容易的在另一个平台工做。

.Net Core具体实现(implementations)

许多的开发技术依赖.Net Core的可定制实现。当你用这些技术开发Apps的时候,你也许不会意识你是在利用.Net Core的好处:

  • ASP.Net Core.ASP.Net Core是一个模块化的asp.Net版本,它结合了ASP.NET MVC and ASP.NET Web API.它能够同时运行在.Net Framework与.Net Core上边,它被设计用来构建高性能的云和微型服务;在.Net Framework中,它不是打算做为asp.net的替代者的。有关更多的ASP.Net Core信息,请访问Introduction to ASP.NET Core.
  • .NET Native。对于用C#和Visual Basic编写的Universal Windows Platform (UWP)应用程序,.NET Native是一个编译和部署技术。.Net Native将Apps编译成原生代码,静态资源文件放入应用程序集中,这些都是.Net Core和另一些第三方的正在使用的代码。有关更多.Net Native的信息请访问Compiling Apps with .NET Native.
  • Universal Windows Platform (UWP) apps。Universal Windows Platform容许你构建一个运行在Windows桌面,Windows平板设备,Windows phone手机上的app。这些应用能够上传到Windows store中。UWP 应用程序经过.Net Native为他们各自的平台编译原生代码,有关更多的信息,请访问 Get started with Windows apps

原文:https://dotnet.github.io/docs/getting-started/what-is-dotnet.html

相关文章
相关标签/搜索