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包含下列特点:

l   全新的、弹性且跨平台的运作(runtime)。

l   全新的、模块化的HTTP Request管线(pipeline)。

l   实时可用的云端环境设定。

l   一致化的设计模块,包含MVC、Web API与Web Pages(译者批注:这是使用Razor语法撰写的网页程序,跟ASP.NET Web Form不相同)。

l   不需重建项目就能看到前后版本的差异。

l   完整对应(side-by-side).NET Framework各版本。

l   能在IIS或自建的主机(self-host)上运作。

l   Visual Studio 2015的全新工具。

l   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. 1.        完整的.NET CLR

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

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

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

  1. 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文件并进行修改; 如更新部署到云端中的应用程序,他们的软件套件依存关系。

消除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提供了一个全新的环境设定系统,它取代了既有的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包括WebForm以下新的特点:

l   HTTP 2

l   异步步模型绑定(Async. Model Binding)

l   罗斯林(Roslyn)CodeDOM的编译程序

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

有关新功能的 Web Form 4.6,请参阅Web Forms 4.6。有关Web Form在Visual Studio 2013 Update2近期变化的信息,请参阅 Improvements to ASP.NET Web Forms

以前的应用程序呢?

你可能会担心随着ASP.NET 5的版本编号不断改变,让你需要重新编写所有的应用程序。别担心!你在早期版本建立的ASP.NET应用程序将继续与新的.NET架构一起运作。如果你不需要用到ASP.NET 5的新功能,你并不需要更新或重新部属(安装)这些应用程序。

例如,你的应用程序,目前使用Web Form、MVC 5、Web API 2、SignalR 2、Web Pages 3或Entity Framework 6,都可以在完全不经修改的情况下,完整获得新架构支持。但是,你很可能需要使用「完整的.NET CLR」来执行这些旧版本的应用程序,因为只有这个(完整版)CLR提供与早期版本完全兼容。

在cloud-optimized(针对云端优化的)runtime上面提供了很多限制型的API的接口。使用cloud-optimized runtime时,应用程序必须只使用这个runtime专用的类型和成员。

想知道你的应用程序可不可以在cloud-optimized runtime执行吗?请使用API Portability Analyzer工具来侦测一下。此工具会告诉你哪个平台上的应用程序可以针对并避免应用程序移动到另一个平台时会产生的相依性。它可以帮助你了解需要改变的范围,并提出新的类型或成员代替那些已经不被支持的软件套件。

MVC 6和SignalR 3的应用程序使用新的HTTP pipeline,所以它们不与兼容于使用System.Web的应用程序。要升级现有的应用程序到MVC 6或SignalR 3,您必须透过Visual Studio 2015新建一个新项目,然后你的程序代码移植到新项目里面。移动到新版本时,可能需要修改一些已经不支持的程序代码。

看完本文之后,您可以继续参阅以下内容:

Next steps

The following videos (影片介绍)describe the latest enhancements:

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/)

时间: 2024-10-15 20:32:03

ASP.NET 5概观 (ASP.NET 5 Overview)的相关文章

对ASP.NET 5和ASP.NET MVC 6应用程序进行集成测试

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:之前有文章谈到如何对ASP.NET 5的应用程序进行单元测试(需使用xunit),今天的文章会讲解如何进行集成测试. 对ASP.NET MVC或ASP.NET WEB API进行集成测试,一般的做法是在单元测试框架中启动一个Self-Host,测试结束再关闭.但是这种方法有个问题,整个测试过程会涉及操作系统的网络调用栈,也称之为"Wire".而对于测试,"Wire

IIS7下部署asp.net mvc及asp.net web pages的问题

在IIS7下部署asp.net mvc和asp.net web pages一不小心就会遇到文件找不到的错误,如下图所示: 发生这种问题的根本原因在于IIS7考虑了很多兼容性的东西,解决该问题的方法也很简单就是在配置文件中加入如下的配置项:   <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>   同类型的问题有不少呢:

ASP.NET控件&lt;ASP:Button /&gt; html控件&lt;input type=&quot;button&quot;&gt;区别联系

ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样的东西 服务器只认识input,我们可以直接写input 但是asp是要把自己自动翻译成input再交给服务器的.其实是一样的东西 写写我看到的区别:                asp控件,直接可以用c#编程                input加上 runat=“server” 也被c#编程了 说白

无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动

无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求.如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态

无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRem

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(五)

ASP.NET 上下文对象 ASP.NET 提供了一系列对象用来给当前请求,将要返回到客户端的响应,以及 Web 应用本身提供上下文信息.间接的,这些上下文对象也可以用来回去核心 ASP.NET 框架特性. 上下文对象提供了应用,当前请求,与当前请求相关联的响应的信息.也提供了对多数重要的 ASP.NET 平台服务的访问,比如安全与状态数据.我们可以在 MVC 框架的 controllers 和 views 中使用上下文对象来根据当前的请求或者应用状态数据来调整我们应用的响应.在创建模块或者处理

ASP.NET MVC 01 - ASP.NET概述

本篇目录: ASP.NET 概述 .NET Framework 与 ASP.NET ASP.NET MVC简介 ASP.NET的特色和优势 典型案例 ▁▃▅ ASP.NET概述 ▅▃▁ 目前开发B/S系统的主要技术有ASP.NET.JSP.PHP等.其中ASP.NET是基于.NET平台创建动态网页的一种服务器端技术,使用它可以创建动态可交互的Web页面. 在Microsoft的.NET战略中,ASP.NET是其中一项的技术,从图1中可以看出ASP.NET是.NET Framework的重要组成部

七天来学习ASP.NET MVC (两)——ASP.NET MVC 数据传输

通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上.因此须要确保您是否掌握了上一节的内容. 本章的目标是在今天学习结束时利用最佳实践解决方式创建一个小型的MVC项目.本节的主要目标是了解MVC之间的数据传递问题.我们会逐步深入解说.并加入新功能,使项目越来越完好. 系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)--ASP.NET MVC 数据传递 七天学会ASP.NET MVC

ASP.NET网站与ASP.NET应用程序的区别

我们使用VS做ASP.NET的时候,可以选择新建ASP.NET应用程序,同时也可以新建ASP.NET网站,两者有什么具体区别呢?今天真是很幸运,比别人多上了老师一节课,讲的是这两者之间的一些区别.我学到了两点东西,一点是明面上的,上两者之间的区别,另外一点是暗地里的(这个说法貌似不好,应该说是明面上看不到的),用洋气一点的英文说吧,就是intellectually curious.一如既往的保持好奇心,要有刨根问底儿的习惯. 回到正题,ASP.NET网站与ASP.NET应用程序的区别,老师讲了一