.Net Core 1.0 公告

[原文发表地址]: Announcing .NET Core 1.0

[原文发表时间]: June 27, 2016

 

我们无比兴奋地想告诉大家,发布的.NET Core1.0, ASP.NET Core 1.0Entity Framework Core 1.0在Windows、OS X和Linux系统上可用了。.NET Core是一个跨平台,开源代码,模块化的.NET平台,可以用来创建现代网络应用,微服务,库和控制台应用程序。

这次的发布包括.NET核心运行时、库和工具以及ASP.NET核心库。我们也发布了可以让你创建.NET Core项目的Visual Studio和Visual Studio Code扩展。你可以参照https://dot.net/core里的信息来开始,同时可以阅读发布摘要来获取详细发布信息。

Visual Studio团队今天也发布了Visual Studio 2015 Update 3 。你需要这个发布才能去创建 Visual Studio里的 .NET Core apps

我们今天正在在docs.microsoft.com上发布.NET documentation。这是微软的一个新的文件服务。这个你所看到的文件仅仅是一个开始。你可以通过 GitHub在core-docs上跟进我们的过程。ASP.NET Core documentation同样是可用并且开源的。

今天我们在Red Hat DevNation会议上展示了 我们的发布版产品以及我们与Red Hat的合作关系。在Channel 9里的现场直播视频里,Scott Hanselman将演示.NET Core 1.0。.NET Core现在在Red Hat Enterprise Linux和OpenShift上是可用的。另外,.NET Core完全被Red Hat支持并通过微软和Red Hat之间的集成混合支持合作关系进行扩展。从Red Hat的博客中可以看到更详细的信息。

这是自.NET创始以来最大的转变并且会在下一个十年引领.NET的发展。我们已经以满足当今世界的需要为目标重建了.NET基础: 高度分布式的云应用,微服务和容器。

.NET框架和.NET核心以及Xamarin 都是重要的产品,将继续分别在Windows、跨平台云计算和跨平台移动领域发展。这个.NET框架和传统的ASP.NET将继续与你现有的工作负载相关。你可以共享代码并且在整个.NET体系中重用你的技能,所以你可以决定用什么并且什么时候用,包括运用了Xamarin的移动应用程序。因为我们设计.NET去共享公共库(.NET标准库),所以.NET框架、.NET核心和Xamarin的应用程序将在未来共享一些相同的新功能。

 

开始

在Windows、OS X 或者Linux系统上尝试使用.NET Core是非常简单的。你可以先开启一个APP然后运行几分钟。你只需要.NET Core SDK去开启它。

最适合的打开地方就是在.NET Core主页面上。它将会为你所使用的操作系统提供正确的.NET Core SDK, 然后你需要3-4个步骤去开始。这是非常简单的。

如果你想使用Visual Studio, 确保你已经安装了Visual Studio 2015 Update 3。你将需要安装.NET Core Tools for Visual Studio

给你一个参考,一旦你已经安装了SDK,你就可以输入三条简单命令运行你的第一个“Hello World”程序。第一条为你的控制台应用生成一个模板,第二条还原依赖包,最后一条生成应用程序然后开始运行。

image

你将会看到(不要惊讶!):

image

你将会很快对“Hello World”感到无聊。你可以在.NET Core指南ASP.NET Core指南上阅读更深层次的教程。

查看Announcing EF Core 1.0 这篇博文可以了解怎样入手Entity Framework Core 1.0。

 

.NET Core历程

大约两年前,我们开始收到一些ASP.NET客户对于.NET 在Linux系统上的请求。在同一时期,我们开始与Windows Server Team讨论关于Windows Nano,它们的未来和一些较小的服务型产品。结果,我们开始了一个新的代号为“Project K”面向新平台的.NET项目。我们沿着一条线多次更改名称、外观和体验,在每次运行过程都尽量让它更完善,适用于更多情况和更多的基础开发人员。非常高兴这个项目最终成为可用的.NET Core和ASP .NET Core 1.0。

开源代码是这个项目另外一个重要的主题。随着时间的推移,我们注意到所有的主流网络平台都是开源代码。ASP.NET MVC已经开放源代码很长时间了,但它下面的平台,.NET Framework并没有开放源代码。对于那些非常关心开源代码,以及认为MVC的开源不够全面的开发人员,我们并没有给出回答。随着今天的发布,ASP.NET Core是一个自上而下的开源网络平台。甚至文档也是开源的,对于任何一个对他们的网络协议栈有开源代码需求的人来说ASP.NET Core都是一个不错的选择。

我想对每个已经尝试.NET Core和ASP.NET Core并且给我们反馈的人表示我们的感激之情。我们知道成千上万的人已经使用过先前的1.0产品,谢谢!我们已经收到许多关于产品设计选择,用户体验、性能、通信和其他主题的反馈。我们尽我们最大的努力响应了所有的反馈。有了这些反馈这次发布才能更加成功。没有你们我们不可能完成它。谢谢!

如果你不是一名.NET开发者或者没有应用过.NET,现在正是尝试它的好时机。你可以在任何操作系统上、用任何工具,对于任意一个应用感受.NET没有限制的生产力和力量。所有的开源代码,都得力于社区和微软的支持,查看dot.net了解.NET操作范围。

 

社 区 贡 献

这是整个网络生态系统的一个巨大的里程碑和成就。将近10000开发者对.NET Core 1.0做出了贡献。我们从未想到会有这么多人对这个产品做出贡献。我们也被这种高质量的贡献深深感动。这里有推动社区发展的重要组成部分。伙伴们,干得漂亮!

我们发现另外八千名开发人员正在看这些相同的repo,从而有效地加倍计数。我相信这些开发者看这些repo是想得到第一个贡献力量的机会或者想保持项目更新并作为他们了解.NET Core应用的一部分。

在这一点上,接近一半与.NET Core相关的项目的提交请求都来自社区。这是从一年前的20%开始增长的。这势头真是令人难以置信。核对发现这组developers who contributed pull requests都被融入到产品中。谢谢你们!

这里是根据每一个组织机构开发者使用GitHub API在任何一个与.NET Core相关的repo中提交请求,创建问题或者添加评论而统计的一个分类情况:

用户总计

组织

协议举例

5176

aspnet

mvc

3804

dotnet

corefx

2124

nuget

NuGet.Client

560

microsoft

visualfsharp

不重复的用户总数:9723

注意:这个计数不是相加的总和因为有一些用户对多个组织作出了贡献(谢谢!)并且我们避免了重复计数。

注意:从Microsoft org上的计数量仅限于这里存在的部分.NET Core相关repo,比如visualfsharp。

注意:这些成员中包括微软员工,但最多占10%。

 

三星加入 .NET建设

.NET Core的增长推动了在.NET Foundation上更深层次的参与,目前已经管理超过60个项目。今天我们宣布三星是最新的成员。在四月份,Red Hat, Jet Brains 和Unity加入了.NET Foundation 技术指导组.

“.NET是一项非常伟大的技术,极大地提高了开发人员的开发效率。三星一直通过GitHub使用.NET Core,尤其是在ARM支持的领域。我们期待在.NET 开源论坛中作出更深远的贡献。三星非常乐意加入.NET基础技术指导小组并且帮助更多的开发人员享受.NET的便捷。”Hong-Seok Kim,三星电子的副总裁。

三星的贡献给人留下了深刻的印象。他们有一个伟大的开发团队已经表现了对.NET Core极有兴趣。我们很高兴他们作为一个更大团队的一部分。

 

.NET Core 使用情况

有一些客户等不及1.0版本的最终发布,他们在Windows和Linux产品中使用了之前.NET Core的版本。这些客户告诉我们.NETCore对他们的业务有非常重要的影响。我们期待在来年将会看到许多应用程序生成。请保持反馈这样我们就能决定下一步添加什么。

游戏《崛起时代(Age of Ascent)》的开发商 Illyriad Games,报道称在Azure Service Fabric上使用了ASP.NET Core之后,性能提升了10倍。我们也为他们代码在性能上的贡献感到非常高兴。谢谢@ benaadams

网易,一家中国领先的IT公司,为内容、游戏、社交媒体、通信和商业提供在线服务,需要在不断变化的游戏空间保持领先优势也选择了.NET Core为后台服务。相比以前的java后台架构:“.NET Core缩短了我们发布周期的20%并节约了30%的工程资源成本”。当谈到吞吐量改进和成本节约时说到:“另外,它使在生产方面的虚拟机数量成半减少成为可能”。

我们使用行业标准,把基于Linux系统的网络平台作为发布的一部分,包括TechEmpower Benchmarks。从几个月前,我们已经开始在实验室分享我们的研究成果。我们希望在我们发布后不久可以从TechEmpower看到官方数据。

我们的实验证实ASP.NET Core比我们的业界同行更快。我们看到在同样的硬件设备上,它的吞吐量是Node.js的八倍多,是Go的几乎三倍。我们还没有完成。这些改进我们可能会融入到1.0产品中。

.NET的开发者知道在效率方面这个平台是一个不错的选择。我们更想让他们明白在性能方面,它也是一个不错的选择。

 

. NET Core 1.0

我们对于.NET Core的讨论已经有两年之久,虽然随着时间流逝它已经发生了明显变化。这篇文章很好地概括了被定义和包含在.NET Core1.0中的那些内容。

.NET Core是一个新的.NET跨平台产品。.NET Core的主要卖点在于:

  • 跨平台:在Windows、macOS和Linux上运行
  • 灵活部署:可以包含在你的应用程序或者安装给多个用户
  • 命令行工具:所有的产品场景都可以在命令行执行
  • 兼容性:.NET Core可以与.NET Framework、Xamarin和Mono通过.NET标准库兼容
  • 开源:.NET Core平台经过MIT和Apache 2的许可是开放源代码的。证明文件被在CC-BY下认可。.NET Core是一个.NET Foundation项目
  • 得到微软支持:.NET Core得到微软支持,即.NET Core Support.

 

组成

.Net Core是由下边的几个部分组成的:

 

分布

.NET Core主要有两种分布方式:

  • .NET Core -包含了.NET 核心运行时和框架。当前的版本是”.NET Core 1.0“
  • .NET Core SDK-包含了.NET Core和.NET Core工具。当前版本是”.NET Core SDK 1.0 预览版2”

.NET Core工具现在还是“预览版”,我们选择“预览版”是因为我们还没有完成这个工具最后的定型。我们知道仍然会有一些变化将要发生,这不是一个质量问题,我们对于质量是非常满意的,而且将.NET Core工具作为日常的工程系统的一部分。

大多数的人希望能从dot.net/core得到.NET Core软件开发工具包, 这是对的,另外,也可以试试我们最新的版本,你就能够更加简单的看到这两种不同的分布。

 

工作负载

.NETCore自己引入了控制台程序作为单一应用模型,这对于工具、本地服务和基于文本的游戏是很有用的。在.NET Core之上建立的用于扩展它功能的应用模型也已经创建好了,像是:

 

.NET Core工具

用户可以通过安装.NET Core的软件开发工具包来开启.NET Core的开发之旅。SDK里面内嵌了足够的软件来创建一个应用程序。它提供给你.NET 的核心工具和.NET Core的副本。由于.NET Core的版本会不断更新,所以你不需要单独获取新版本工具,直接下载安装它们即可。名字叫做project.json的工程文件详述了不同的应用程序在一个具体的.NET Core 版本中的独立性。这些工具帮助你获取并使用那个.NET Core版本。不管是在Visual Studio、Visual Studio Code还是命令行里面,你都可以在你的电脑上来切换多个应用程序,而且.NET Core工具还会在每一个应用程序环境里面挑选合适的.NET Core版本。

你也可以在本机上装载多种版本的.NET Core工具,这对持续整合性以及其它脚本来说是很重要的。大部分情况下,你只需要单份工具副本即可,这样一来可以得到一个更简单的用户体验。

 

Dotnet工具

你的.NET Core体验启于dotnet工具。它内载了一套针对常规操作的指令,这些指令包括还原包、创建工程和单元测试。它也包含了一条创建空白项目的指令,这条指令使项目更易启动。

下面是这组指令的部分列表。

目前dotnet可以完美地执行C#项目,支持F#和VB项目的版本也会陆续发布。

 

.NET标准库

.NET标准库是一个.NET程序编程接口的正式规范,这些编程接口适用于所有的.NET运行中。它旨在形成.NET体系的高度一致性。ECMA 335继续为.NET的运行行为建立一致性,但是没有.NET基类库的类似规范,.NET基类库旨在.NET库的实现。.NET标准库有以下几点关键优势:

  • 给所有.NET平台的BCL APIs 统一定义了执行规范,此规范不受负载影响。
  • 使用同组编程接口,开发人员可以创建出适用于多种.NET运行环境的可移植性函式库。
  • 可以减少而且是很有希望消除掉不同种.NET API所带来的共享资源间的条件式编译,目前仅针对于系统编程接口。

和.NET Framework 以及 Xamarin一样,.NET Core 1.0也使用标准库。标准库作为我们技术创新的重中之重,这使得我们的.NET系列产品广为受益。

 

技术支持

.NET Core受微软技术支持。你可以把.NET Core应用到开发当中并且在制作过程中调试,还可以向微软请求你需要的技术支持。每一个发布版本都有一个明确的生命周期,微软会提供针对它的一些修复、更新或者在线技术帮助。

团队为.NET Core采用了一种新的服务性模式,也就是两种类型的发布版本。

  • 长期支持性的版本
    • 通常都会有一个主发布版本,比如“1.0”或“2.0”
    • 继LTS版本的通用版本发布之后继续支持三年
    • LTS再发布版本的通用版发布之后还继续支持一年
  • 快速更新性版本
    • 通常都会有一个较小的版本,比如“1.1”或“1.2”
    • 对LTS的初次发布版本也提供三年的技术支持
    • 再发布版本的通用版本之后继续支持三个月
    • LTS再发布版本的通用版发布之后还继续支持一年

有些客户希望在稳定的发布版本上面调试应用程序,不想在程序在被重新开发之前有新的功能。那么这些客户可以考虑使用我们的LTS发布版本。

其他客户希望能尽快的利用新功能的优势,特别是那些基本上一直处于开发当中的程序。那么这些客户可以考虑使用FTS发布版本。

提示:目前尚无FTS的发布版本,.NET Core 1.0是LTS版本。

 

.NET Core 工具遥测技术

.NET Core 内嵌了遥测功能,以便我们收集在使用.NET Core 工具过程中的信息。如果我们理解了这些工具是如何被使用的,那么这将对我们改进这些工具起到非常重要的作用。这些工具处于预览状态的部分原因是我们尚无足够的信息去了解它们被使用的方式。我们只遥测这些工具,并不涉及到用户的程序体验。

 

性能

遥测功能是默认开启的。收集到的数据实质上是匿名的,将会以汇总表的形式发布,这些数据会经过知识共享许可协议审批之后被来自微软和社会各界的工程师使用。

你可以通过设置环境变量(DOTNET_CLI_TELEMETRY_OPTOUT)设置为真(比如说像“true”“1”之类)来选择性地关闭遥测功能。如此一来就停止了运行过程中的信息收集。

 

数据点

此功能收集如下数据片段:

  • 使用过的命令(如“build”,“restore”)
  • 指令的退出代码
  • 在测试项目中使用的测试运行程序
  • 启用的时间戳
  • 调用的框架
  • 运行时ID是否在运行环境结点里呈现
  • 使用过的CLI版本

此功能不会收集任何用户数据,比如用户名和邮箱。它不会扫描抽取任何项目中的敏感数据,比如名字、repo或者创建人(如果你已经在project.json文件里设置了)。我们只想知道这些工具是如何被使用的,而不是你使用这些工具创建了什么。如果你发现敏感数据被收集了,那么它就是一个缺陷。请提交此项问题,我们会对它修复。

我们把MICROSOFT .NET LIBRARY EULA适用于.NET Core工具,它也同样被使用在所有.NET NuGet软件包上。我们最近新加了一项”DATA”模块去启用工具里面的遥测功能。我们希望在.NET Core里面使用一个EULA,仅仅去收集工具的使用数据,而不是运行环境或资源库的。

 

.NET Core1.0使用指南

你可以使用Visual Studio、Visual Studio Code或者在命令行创建.NET Core应用程序。Visual Studio Code对创建.NET程序来说是一种全新的体验。下面让我们用它来创建.NET Core应用程序。

 

使用Visual Studio Code

展示Visual Studio Code的用户体验。

在Visual Studio Code上启用.NET Core之前,请确保您已经下载安装了如下软件:

如果想要查看是否安装了最新的.NET Core版本的话,您打开命令窗口输入”dotnet—version”。指令的输出结果就会像下图这样:

clip_image005

下一步,你创建一个新的文件夹,在这个新文件夹里面使用dotnet新命令行搭建一个新的“Hello World”C#应用程序框架,然后再那个目录里面使用代码指令打开Visual Studio Code。如果在你的路径里面没有代码,你需要设置它。

如果你没有已安装的Visual Studio Code的C#语言插件,也需要重新安装。

接下来,你需要创建并配置launch.json和tasks.json文件。Visual Studio Code应该会自动为你创建这些文件的,但是如果你没有允许它这样做的话,你需要自己创建。下面为提示你如何创建它们:

1. 在根目录下新建一个叫.vscode的文件夹,在此文件里面新建launch.json 和 tasks.json两个文件。

2. 打开launch.json 文件,像如下这样设置:

s01

打开tasks.json文件并做如下配置:

s02

在Debug菜单里面点击Play 选项,现在你可以执行你的.NET Core应用程序了!

1vscode-run

需要注意的是如果你从别的目录里面打开的Visual Studio code,你需要更改cwd以及文件launch.json 和tasks.json当中程序的值,来指向你的程序输出文件夹。

你也可以通过在代码中设置断点并点击运行按钮去调试你的程序。

 

.NET Framework的对比

.NET Core 与.NET Framework之间最大的不同之处在于:

  • .应用模式—.NET Core不支持所有的.NET Framework应用模式,部分原因就是许多.NET Framework应用程序都是基于Windows技术开发的,比如WPF(基于DirectX创建的)。控制台和ASP.NET Core应用模式是由.NET Core和.NET Framework共同支持的。
  • APIs(应用程序接口) —.NET Core包含了很多同样的,但是少于.NET Framework的编程接口,要素类型不同(程序集名字不同;钥匙包里面的类型形态不同)这些不同点最近常常要求把源码移植到.NET Core里面。.NET Core执行了.NET标准库的编程接口,之后它将改进以便能够执行更多的.NET Framework BCL APIs。
  • 子程序—为了实现更简单的程序执行和编程模式, .NET Core采用了.NET Framework里面一套子系统。比如,支持反射却不支持CAS(代码安全访问协议)。
  • 平台—.NET Framework支持Windows和Windows服务器,而.NET Core还支持Mac操作系统和Linux.
  • 开源— .NET Core是开源的,而.NET Framework只是其中一项只读的子系统是开源的。

.NET Core是独一无二的,它对于.NET Framework以及其它.NET平台而言有显著的区别,它毫无保留地使用源代码或二进制分享技术来公开其代码。

 

结语

感谢大家的使用和反馈。我们很高兴能够开发出.NET Core供如此多的用户使用。对此我们由衷感激。请继续探索学习此款产品的强大功能。

我们将更新.NET Core发展蓝图,因为我们对后续版本有着明确的计划。

非常感谢您加入.NET社区!