·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.NET 5概观 (ASP.NET 5 Overview)

ASP.NET 5概观 (ASP.NET 5 Overview)

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23
asp.net 5概观 (ASP.NET 5 Overview)

http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview

ASP.NET 5概观ASP.NET 5 Overview

原作:Tom FitzMacken (2014/11/12)

译者:MIS2000 Lab. (www.dotblogs.com.tw/mis2000lab/)

ASP.NET 5简介

ASP.NET 5是一个精炼的.NET堆栈(lean .NET Stock)用来建构现代化的网络应用程序。我们从最底层一步一步建构起来,并且提供各种应用程序一个优化的开发架构,您可以建构云端的应用或是在本机上运行两者都可。.NET Framework包含了各种最小耗能(minimal overhead)的模块化组件,让您可以灵活地建构各式解决方案。

ASP.NET 5包含下列特点:

  • 全新的、弹性且跨平台的运行时(runtime)。
  • 全新的、模块化的HTTP Request管道(pipeline)。
  • 实时可用的云端环境设定。
  • 一致化的设计模块,包含MVC、Web API与Web Pages(译者批注:这是使用Razor语法撰写的网页程序,跟ASP.NET Web Form不相同)。
  • 不需重建项目就能看到前后版本的差异。
  • 完整对应(side-by-side).NET Framework各版本。
  • 能在IIS或自建的主机(self-host)上运作。
  • Visual Studio 2015的全新工具。
  • GitHub上的开放原始码(源码)。

我们为ASP.NET 5所做的改变都是源自客户的要求与回馈。这些改变都是为了让网络应用程序的开发、托管(hosting)与维护更加简便。

您的旧版应用程序不需任何异动就可以在新版本ASP.NET上面运作。然而,想要用到ASP.NET 5新功能的优点,您将需要把既有的程序代码转移到新的架构上。 你会发现ASP.NET 5和早先版本的ASP.NET之间有很多相似之处,所以程序代码转移只需修正一些具体的议题,而不用全面改写应用程序。

下载Visual Studio 2015 PReview

请由此下载Visual Studio 2015 Preview(http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs 下载VS 2015预览版),关于VS 2015的新功能可以参阅 http://www.visualstudio.com/en-us/news/vs2015-preview-vs

为何重新设计ASP.NET

需要更弹性、跨平台的运作

过去,.NET Framework是单一、兼容并蓄的(all-encompassing)完全安装。随着.NET的每一个版本的演进,功能只有新增却很少删除,因此该架构的容量不断激增。这种做法确保了安装.NET的每一台Windows主机可以支持所有类型的.NET应用程序,但它也意味着每个应用程序沿用了许多它未曾用到的功能。

如果一种.NET的技术需要重大更新,即使你并没有直接使用这部分的.NET,您也会收到一个通知建议您进行更新。你必须决定是否要安装此更新,过程中可能忍受中断服务器,或是您忽略这次更新,希望你忽略的部分恰巧没用到。

ASP.NET 5为您提供了更大的灵活性,能在下列三者中运作情境下执行:

1. 完整的.NET CLR

完整的.NET CLR是Visual Studio中预设运作的专案。它提供了整个API集合,是为了各种版本向下兼容的最好选择。

2. Core CLR(云端优化的运行时)

Core(核心)CLR是一个精炼、完全模块的运行时(runtime),用在ASP.NET 5的专案上。这CLR已被重新设计成组件,以便您可弹性地包含你需要的部分在应用程序里面。您可以透过NuGet添加组件。当你完成之后,你的应用程序只用到需要的功能即可(不必包山包海地纳入全部功能)。通过重新分解runtime为各自单独的组件,因为每个组件的更新可以有其自己的时程,我们可以更迅速地提供某些需要改进的组件(译者注:个别更新,不需要等到全部改进后才发表)。如此一来,核心的Core CLR十分精简,只有11MB大小,而不是完整的200MB .NET CLR。该核心CLR可以随着您的应用程序进行部署,而不同版本的核心 CLR可以side-by-side地运作(这两种优点在下面更详细地描述)。

3. 跨平台CLR

未来,我们将会发布跨平台的runtime在linux和Mac OS X操作系统上。将来发布时,这些版本的runtime将开发并在Mac和Linux设备上运行.NET应用程序。上述的跨平台CLR事宜,我们将与Mono社群紧密合作。待它发表时,您将可以使用Mono CLR作为跨平台开发。 欲了解更多信息,请参阅开发Mac上的ASP.NET vNext应用。

预设的情况下,新的Visual Studio项目会使用完整的.NET CLR。您也可以定义Core CLR在项目的设定属性里面(如下图)。

无所不在的Host

ASP.NET 5允许您可以部属您的应用程序在IIS或自己的主机(self-host)上面运作。当你锁定(确认)Core CLR以后,你可以为每一份即将部属的应用程序,绑定专属的软件套件。因此,您的应用程序和它所依赖的套件均是完全独立(自给自足的,self-contained)的,不再依赖于系统既有(事先安装好)的.NET版本。不久的将来,任何类型的设备或主机平台都能执行您的应用程序。

这样的新功能为您提供更多的自由。我们仍然建议IIS是主机的最佳选择,但在某些情况下,你可能需要用到不同的主机平台。现在,您只需部署您的项目到该主机上头。您的主机属性不再绑死在开发的架构上面,反之亦然。

如果想要更多的例子,可以参阅Create a Web API in MVC 6。

完整对应(side-by-side)不同版本的.NET Framework

当一台服务器上的应用程序依赖于一个单一的、完全安装的.NET Framework时,所有的应用程序必须执行同一版本的.NET才行。考虑是否要升级到新版.NET Framework时,可能造成你的不安。也许,你想让一些应用程序使用最新的.NET版本,但你无法确定是否所有的旧版应用程序都可以跟新的.NET一起运作。

幸运的是,ASP.NET 5解决了这个问题。您可以自行定义「部属的软件套件」内的相关性,所以你可以为「每个应用程序」定义它需要的.NET版本。你可以得到最新版应用程序带来的好处,并可以轻易地让某些应用程序搭配旧版本来执行。各种不同版本.NET可以side-by-side地运行而且没有任何问题。要运行不同版本请您务必锁定Core CLR。

简化相关性(Simplify dependency management

ASP.NET 5引荐了一个新的、轻量化的方式来管理项目的相关性(dependency)。你不再需要在项目中个别「加入参考」(add assembly references),相反地只需要透过NuGet就能管理这些外挂的组件。您可以藉由的NuGet Package Manager添加的NuGet软件套件,或者您可以编辑JSON文件(如project.json檔)来控管项目中使用的NuGet软件套件与版本。要添加其他的外挂套件,只需输入的NuGet套件名称和版本编号到project.json档案里面即可(如下图)。

在Visual Studio 2015中,智能提示(IntelliSense)也能找到NuGet软件套件的关键词,如下图。

前述的project.json档案只包含您想加入项目中的NuGet套件。如果添加的NuGet套件跟其他软件套件互相依赖(彼此相关),这些相关的套件也会被加载,但不会列在project.json档里面。这种作法让你的project.json档更简洁、也更易于管理。如果你从project.json檔移除了某几个NuGet套件,与其相关套件也会被删除(前提是:如果没有其他的套件也引用到它们)。

即使你没有安装Visual Studio,(上述的)JSON格式也能让您更轻松地管理软件套件(外挂)之间的依存关系。你可以在任何一种文本编辑器打开project.json文件并进行修改(译者批注:不安装Visual Studio也能修改这些基础配置文件); 如更新部署到云端中的应用程序,他们的软件套件依存关系。

消除MVCWeb APIWeb Pages之间的重复

过去的MVC、Web API与Web Pages有许多重迭的特性,但这些功能的实作却是各自独立的(译者批注:Web Pages是使用Razor语法撰写的网页程序,跟ASP.NET Web Form不相同)。例如,MVC和Web API均提供路由(routing)的功能,但MVC路由的类别却放在System.Web.Mvc.Routing命名空间里,而Web API的却放在在System.Web.Http.Routing命名空间内。 或者,Web Pages和MVC皆使用Razor的语法,但有些NuGet套件分别只兼容(MVC或Web Pages)其中一种。

在ASP.NET 5,MVC、Web API和Web Pages将被合并成一个.单一架构,名为MVC 6。这样的合并消除了重复的架构,使您更轻松地开发使用这些程序架构框架的应用程序。你不需要为了是否在MVC,Web API或Web Pages前后文关系中,再去撰写类似的程序代码了。

在VS 2015预览版里面,MVC与Web API已经在MVC 6统一了。Web Pages将会再下一个MVC 6的释出版本中加入。

改善HTTP效能

ASP.NET 5引入了一个新的HTTP Request管道(pipeline)是精简和快速。这条管道是模块化的,所以你可以只添加您需要的组件即可。透过减少管道的消耗,你的应用程序将体验到更好的传输量(throughput)。新管道仍支持OWIN。

云端立即可用

当你新建一个ASP.NET 5项目,此项目的先天结构就是部署到云端环境而生。 Visual Studio 2015提供了一个全新的环境设定系统(译者批注:需使用VS 2015的「项目(Webapplication)」,并挑选「ASP.NET 5」才行),它取代了既有的Web.config檔。新系统让您能够从各种来源(如JSON,xml,或环境变量)要求(索取)已命名的值。你为每个环境指定的值,或是在部署以后能让您的应用程序只需读取正确的值。

我们还提供诊断和追踪工具,使你更容易地发现在云端里面的应用程序问题。

整合dependency injection

Dependency injection(DI)也是内建在ASP.NET 5的功能,您可以使用Inversionof Control(IoC)容器来注册这些相关性。Dependency injection(DI)有利于对环境提供正确的服务。欲了解更多信息,请参见Dependency Injection in ASP.NET vNext。

开放源码与透明

所有的ASP.NET 5的程序代码都放到GitHub上面了。不仅是程序代码可用,而且GitHub repositories也融入我们的开发之中。你可以清楚地看到.NET进行了哪些更改,每次变更以后,您可以下载程序代码并把修正后的结果提交给我们。

在GitHub上开发ASP.NET 5,我们让您更容易理解程序代码,了解我们的预期方向发展,有助于增强和建置您想要客制化的ASP.NET功能。

更灵活的开发环境

Visual Studio 2015为ASP.NET应用程序提供了一个轻量级的开发者经验。您只需改变你的程序代码、存盘、然后刷新浏览器画面(如下图)。就可以看到在Web浏览器的修改成果,而无需重新建置(re-build)项目。

如上图,倘若你改变的程序代码是在Web项目中、或是在您的项目中引用的类别库里面。你还是得执行(CTRL + F5)项目,而不是在debug模式下看到这些动态地的变化。

Visual Studio使用罗斯林(Roslyn)编译程序启动了这个动态的编译。你仍拥有所有编译架构的结构和权力,但开发经验感觉更像是一种直译型(Interpreted)语言。

Visual Studio用户接口(UI)中的每一个功能都可以对应命令行(command-line)的操作。您可以在用户接口和编写command-line script之间轻松转换。

最后,您可以使用其他的程序代码编辑器来完成你的ASP.NET 5专案。

Web Form怎么了?

您可以继续开发Web Form应用程序,并有信心Web Form是.NET的Web开发平台的重要组成部分。我们将继续致力于增加新功能,以Web Form提高开发经验和保持最新网络实务的技术。

Web Form 4.6包括Web Form以下新的特点:

  • HTTP 2(譯者註解:詳見http://zh.wikipedia.org/wiki/HTTP/2影片可選中文字幕。此功能會在Windows 10的 IE瀏覽器與Web Form 4.6開始支援)
  • 异步模型绑定(Async. Model Binding)(譯者註解:關於 ASP.NET 4.5起的非同步Model Binding,本站均有相關範例)
  • 羅斯林(Roslyn)CodeDOM的编译程序

您既有的Web Form应用程序将继续地运作,在不变更在IIS的情况下以.NET 4.6执行。但是您不能使用Web Form应用程序在cloud-optimized(针对云端优化的)runtime上面。

有关新功能的Web Form 4.6,请参阅Web Forms 4.6(請到此觀賞影片,影片可選中