灵活的跨平台运行时需求

早期 .NET Framework 版本一直作为单一且全面的整体进行安装,每个新版本都包含了新功能和几乎所有早期功能,而鲜有删减,这就不可避免的造成Framework的体积的增长。这种模式确保了安装了新版 Framework的Windows系统可以兼容所有早期版本的.NET 应用,但是也意味着每个应用都将运行在一个庞大冗余的框架上,即使很多功能在实际项目中没有使用。

相信每位.NET程序员都遇到过以下尴尬的决策场景:当收到Framework有更新发布时的通知时,是放弃使用新增功能保持应用的灵活性还是使用新特性而忍痛让你的Framework更加庞大!

为了应对以上场景。ASP.NET 5提供了三种运行时,你可以根据实际需要灵活选择:

1. 全功能.NET CLR 
全功能.NET CLR 是Visual Studio工程默认运行时状态。它提供所有 API,是保持应用向下兼容性最佳选择。

2. 核心CLR (cloud-optimized runtime) 
核心 CLR 是精简的完全模块化运行时。这个CLR已经被重新设计成组件便于你仅包含项目中实际使用的的.NET特性。组件作为NuGet 包添加。一旦完成引用,你的应用仅依赖于所需的功能。通过分解运行时为组件,我们可以更快的更改每个组件,因为每个组件都有自我更新机制。核心CLR只有11M大小,相对于200M的全功能CLR无疑将使应用更加轻便。核心CLR可以伴随应用一起部署并且不同的核心CLR可以并行运行。

3. 跨平台CLR 
微软将发布针对于Linux 和 Mac OS X 发布跨平台运行时。这意味着你的.NET应用具备了在Mac 和Linux 设备上运行的能力。微软将和 Mono 社区合作完成这一新特性。在发布之前,你可以使用Mono CLR用于跨平台开发。

新建 Visual Studio 工程默认使用全功能 .NET CLR,可以在工程属性页面更改为核心CLR。

灵活的部署能力

ASP.NET 5 允许部署应用到 IIS,或脱离IIS进行独立部署,当设置目标 Framework 为Core CLR时,即可以使用部署包中的依赖项来部署应用。因此,你的应用自成一体,再不依赖于全功能的.NET 版本。该应用可以在任何设备和平台中运行应用。

这对.NET平台开发人员无疑又是个惊喜,部署应用不在局限于IIS,当然微软仍然推荐你使用IIS部署应用,但是如果需要在不兼容IIS的平台部署应用,你就可以使用该新特性进行操作。

后续文章中我们会发布如何创建不依赖于IIS 的MVC6应用,敬请期待。

多版本.NET并行使用

早期版本的.NET Framework,你将时刻面临是否更新版本的选择,一方面你希望使用更新的功能,另一方面你将为旧版本开发的工程是否可以平滑迁移到新版 .NET Framework 而感到纠结。

微软在 ASP.NET 5中改善了以上问题。在使用核心CLR前提下,你可以在部署包内定义依赖关系,所以你可以为每个应用程序指定.NET版本。 旧版应用可以平滑运行,同时你也可以使用新版本开发应用。因此在ASP.NET 5中多个版本的.NET应用是并行的。

简化依赖关系管理

ASP.NET 5 推出了一种全新的轻量级依赖关系管理机制。你不再需要在应用中添加引用,而是使用引用NuGet 包代替。你可以通过NuGet Package 管理器添加NuGet包,或者你可以编辑包含NuGet包列表和版本信息 JSON 文件(project.json)来实现引用。project.json 文件用于列举应用使用的 NuGet 相关信息,如需添加其他引用,直接在该JSON文件中添加即可。

合并MVC, Web API 和Web 页

早期版本中, MVC、Web API 和Web 页一直在使用着不同的方式实现着相同的功能,可以说是殊途同归。例如, MVC 和Web API 都提供了路由,但是MVC routing 类在System.Web.Mvc.Routing 命名空间中,而Web API 中类似的类在System.Web.Http.Routing 命名空间中。再举一个例子, Web 页和 MVC 都是有Razor 语法, 但是仍然包含在相同功能的不同NuGet包中。

在 ASP.NET 5 中, MVC、Web API和and Web 页将被整合到同一框架-MVC 6。这就意味着移除了重复功能模块,使开发应用变得更简单。

在预览版本中, MVC and Web API 首先被合并到MVC 6中。 Web 页面将后在后续发布版本中添加。

增强HTTP性能

ASP.NET 5 提供了一个精炼快速的HTTP 请求管道,该模块化管道允许你仅添加需要的组件,通过减轻管道开销,应用将有更好的吞吐量。

云部署能力

当你创建一个新的 ASP.NET 5 工程,这个工程默认就已经具备轻松部署到云端的结构。Visual Studio 2015 提供了全新的环境配置系统代替了Web.config 文件。新的系统允许使用多种文件类型(例如JSON, XML, or 或环境变量)存储键值对,因此你可以在任意环境中轻松指定值或获取这些值。

同时,ASP.NET 5提供了检测和跟踪已部署云应用问题的工具。

集成依赖注入

依赖注入被内置于ASP.NET 5中。你可以使用 IoC容器注册依赖项。依赖关系的注入促进了正确服务环境的提供。

开源

ASP.NET源码已经发布到GitHub中。不仅仅提供了当前版本源代码,微软也承诺会同步更新GitHub中的源码,你可以及时查看到ASP.NET 的变化,可以下载并且提交更改到GitHub上。

这有助于你了解ASP.NET 代码及技术走向,同时你可以定制自己的ASP.NET。

关于 Web Forms

微软一直致力于提供给用户新的功能去改善开发体验,你仍旧可以开发Web Forms 应用,并且在Web Forms 4.6 添加了以下新特性:

  • HTTP 2
  • 异步绑定模式
  • Roslyn CodeDOM 编译器

早期版本开发的 Web Forms 应用无需任何更改可以直接在 IIS .NET 4.6框架下运行。不过,无法使用ASP.NET 5 核心CLR新特性。

例如当前有使用Web Forms、 MVC 5、 Web API 2、SignalR 2、 Web Pages 3 或 Entity Framework 6 开发的应用,你仅需设置当前运行时版本为全功能运行时,无需做出任何代码级别修改即可在 ASP.NET 5中运行。 但是, 核心CRL是ASP.NET 5新特性,如果你希望应用具备该运行时的功能,那么需要做出一定的修改。微软提供 API Portability Analyzer 工具可以判断当前应用是否可以使用核心CRL。这个工具还可以分析当前应用可以运行在哪些平台,以及哪些因素阻止其不能在特定平台上运行。同时也会提示所需要的更改以及使用哪些新增接口来替换。

MVC 6 和 SignalR 3 应用使用新的HTTP管道,所以它们无法与使用System.Web 接口的应用兼容。如果需要升级已存在应用到MVC 6 或者 SignalR 3,你必须使用Visual Studio 2015 创建新工程,再导入原有工程,导入过程中需要修改不支持的代码片段。

为什么重新设计 ASP.NET?的更多相关文章

  1. ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS.Cloud-ready环境配置降低了云端部 ...

  2. 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) 原作: ...

  3. ASP.NET 5 Overview

    ASP.NET 5概观 (ASP.NET 5 Overview) http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview AS ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  5. ASP.NET 5 改名 ASP.NET Core 1.0

    今天,Scott Hanselman在其博客上宣布<ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0>, ...

  6. ASP.NET Core中的依赖注入(1):控制反转(IoC)

    ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...

  7. ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点

    参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...

  8. 解读ASP.NET 5 & MVC6系列(7):依赖注入

    在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程 ...

  9. 初识ASP.NET Core 1.0

    本文将对微软下一代ASP.NET框架做个概括性介绍,方便大家进一步熟悉该框架. 在介绍ASP.NET Core 1.0之前有必要澄清一些产品名称及版本号.ASP.NET Core1.0是微软下一代AS ...

随机推荐

  1. 【Android】如何快速构建Android Demo

    [Android]如何快速构建Android Demo 简介 在 Android 学习的过程中,经常需要针对某些项目来写一些测试的例子,或者在做一些 demo 的时候,都需要先写 Activity 然 ...

  2. 协作图 Collaboration diagram

    概述 协作图也是一种交互图,但一般用的比较少,一般用在大概分析一下对象之间是怎样交互的,跟顺序图是可以相互转化的. 协作图的用处: 在分析的时候(而顺序图一般设计的时候),分析出有哪些对象: 在白板上 ...

  3. windbg入门

    1.下载安装windbg Windows 10 调试工具 (WinDbg) 如果你仅需要 Windows 10 调试工具,而不需要 WDK 10 或 Visual Studio 2015,你可以将调试 ...

  4. 2014-09-19.xml

    <wordbook><item>    <word>basel</word>     <trans><![CDATA[ n. 巴塞尔( ...

  5. Sidekiq任务堵塞问题

    今天发现服务器上的sidekiq 线程全忙.队列里任务积累了好多. sidekiq里的任务基本都是爬虫脚本,都需要请求外部网站.但是有些网站的响应时间或者读取时间太久,一直一直卡在那里.使得后面的任务 ...

  6. common.css

    /* global */ document,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockqu ...

  7. MyBatis XML 映射配置文件

    配置文件的基本结构 configuration —— 根元素 properties —— 定义配置外在化 settings —— 一些全局性的配置 typeAliases —— 为一些类定义别名 ty ...

  8. PhoneCat App 教程

    https://docs.angularjs.org/tutorial AngularJS教程第一篇文章的翻译,因为我在看中文版的AngularJS的翻译的时候,发现第一篇文章翻译的不准确,很有可能是 ...

  9. ef 更新导航属性

    总之,要让所有的东西,都被DbContext管理状态 1.查出来,改了,再提交 2.new 出来,attach,再改,再提交 以上两种都较好理解 3.new出来,改了,再attach,在改状态,再提交 ...

  10. 当他们也换成了Linux OS

    近期,斯诺登的事闹得沸沸扬扬,美帝损失了公信.又有传言说Win8给美帝安全局留了后门?XP依旧是生命力旺盛. 还不就是因为那点事儿,看不到人家的源代码? 斗胆提一个问题,如果公务员们或者是一部分,开始 ...