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

近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS、Cloud-ready环境配置降低了云端部署的门槛,另外源码开放无疑也是一个重量级惊喜。这些更改会有助于创建易于开发、部署、维护和现代的Web应用程序。相信看到以上几点作为.NET程序员的你已经迫不及待体验ASP.NET 5 的新功能了,下面我们就来看下这些新特性。

ASP.NET 5 是用于创建Web应用的框架,相对于以前的版本它更加简练、灵活,本次发布的版本彻底优化了应用开发框架,你可以轻松部署应用到云端或其他平台,它包含了最小的模块化组件,所以确保你在构建复杂解决方案的同时保持灵活性。

ASP.NET 5 包含以下特性:

·灵活的跨平台运行时

·新的HTTP模块请求管道

·Cloud-ready环境配置

·统一了包含 MVC、 Web API 和 Web 页面的编程模型

·无需重新编译即可查看更改效果

·并行的.NET Framework 版本

·自主部署或IIS部署能力

·内嵌于Visual Studio 2015中的新工具

·GitHub开放源码

使用旧版本开发的应用程序不需要做任何修改,即可直接在 ASP.NET 5上运行。然而,如需使用ASP.NET 5 新功能,你需要将现有代码移植到新的框架。ASP.NET 5 和早期 ASP.NET 版本基本相同,因此你只需要把精力集中到新功能开发上,节省了你的代码迁移时间。

以上概括性的介绍了ASP.NET 5的新特性和增强功能。

本篇文章中我们将重点阐述以下几点:

  • 为什么重新设计ASP.NET
  • 灵活的跨平台运行时需求
  • 灵活的部署环境
  • 多Framework版本并行使用
  • 简化依赖关系管理
  • 合并MVC、 Web API 和 Web 页
  • 增强HTTP性能
  • Cloud-ready 部署能力
  • 集成依赖注入
  • 开源
  • 提供敏捷的开发环境
  • 关于Web Forms
  • 早期版本Framework开发应用兼容性

为什么重新设计 ASP.NET?

灵活的跨平台运行时需求

早期 .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文件中添加即可。

在 Visual Studio 2015中,根据智能提示可以快速的添加NuGet 包。

project.json 文件仅包含直接添加到工程中的 NuGet 包。如果添加引用文件外的包,这类依赖项将仅仅被加载,而不会显示到project.json 文件中。这种机制可以使project.json 文件轻便易管理。

JSON格式文件使你可以在没有安装Visual Studio情况下,轻松管理引用。当然,可以使用任何文本编辑器打开和编辑project.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。

提供敏捷的开发环境

Visual Studio 2015 提供了一个轻量级的ASP.NET 开发环境。无需重新编译工程,只需要保存更改代码,就可以在浏览器中查看最新结果。

你更改的代码可以在Web工程或者由当前Web工程中引用的类库中。

Visual Studio 使用 Roslyn 编译器允许动态编译。确保你拥有完整、强大的编译框架的同时,拥有趋近于解释语言的开发体验。

每个Visual Studio 的用户界面都具有对应的脚本,因此你可以轻松在UI界面和脚本之间切换。

最后,可以使用其他代码编辑器编辑ASP.NET 5 工程。

关于 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 5的新特性,才能更好地利用这些新特性进行开发,同时还可以借助一些开发工具,ComponentOne Studio for ASP.NET 是ASP.NET平台上的一整套完备的开发工具包,包含的Web窗体控件、MVC scaffolding模板以及HTML5/JavaScript页面组件,仅通过几行代码就可以在系统中实现丰富的功能。

 

原文地址:ASP.NET 5 Overview

时间: 2024-10-27 16:42:50

ASP.NET 5系列教程 (一):领读新特性的相关文章

ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API

ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用. 接下来几篇文章中您会了解以下内容: ASP.NET MVC 6 中创建简单的web API. 如何从空的项目模板中启动,及添加控件到应用中. 如何配置 ASP.NET 5.0 管道. 在 IIS 外对立部署应用. 本文的目的是从空的项目开始,逐步讲解如何创建应用.当然,您也可以从"Starter Web" 模板开始,它默认包含了MVC 6.权限.记录等其他模块,同时也内置了有效的控制器和视图在其中. 创

ASP.NET 5系列教程(七)完结篇-解读代码

在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]")]   所有符合该模板类型的HTTP 请求都会被路由到该controller.在本例中, 路由的命名规范为对应Controller 的前缀,对于TodoController 类,路由模板为 "api/todo". HTTP 方法 [HttpGet].[HttpPost]和[HttpDele

ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云

向视图中添加服务 现在,ASP.NET MVC 6 支持注入类到视图中,和VC类不同的是,对类是公开的.非嵌套或非抽象并没有限制.在这个例子中,我们创建了一个简单的类,用于统计代办事件.已完成事件和平均优先级的服务. 1. 添加命名为Services 的文件夹,在该文件夹下添加名称为 StatisticsService.cs 的类: StatisticsService 类代码设计如下: using System.Linq; using System.Threading.Tasks; using

ASP.NET MVC3 系列教程 - Razor视图引擎基础语法

原文:ASP.NET MVC3 系列教程 - Razor视图引擎基础语法 I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!) 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page"; }   <h2>@View

【译】ASP.NET MVC 5 教程 - 9:添加新字段

原文:[译]ASP.NET MVC 5 教程 - 9:添加新字段 在本节中,我们将使用Entity Framework Code First 数据迁移功能将模型类的改变应用到数据库中. 默认情况下,当我们使用Entity Framework Code First 自动创建一个数据库,像我们之前教程中讲的那样,Code First 添加一个table帮我们跟踪数据库结构是否与模型类同步.如果不同步,Entity Framework 将抛出一个错误,这样更方便我们在开发的时候发现问题,否则只能在运行

微信“为盲胞读书”项目上线“团体领读”新功能

近日,微信团队宣布上线"团体领读"新功能,团体领读是对于"为盲胞读书"项目的一次升级,参与组织单位可从微信领取一个团体代码,选择读书段落.为盲胞读书项目有一个公众号,鼓励关注用户每人一分钟,让盲胞有书可读.通过语音功能,朗读一小段文字,你就可以成为声音的捐献者,为盲胞制作充满温暖的有声书. 用户进入"为盲胞读书"公众号,输入团体代码,即可随时随地与同事.客户.周边朋友阅读同一本书籍,合力为视障群体读书.腾讯微信事业群技术顾问杨强表 示,微信按照段

ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.JavaScript单元测试等. 方便的获得Web开发者生态圈的工具包. 为了实现这些场景,Visual Studio 2015已经内置了一些流行的第三方工具包: Bower:Web包管理器,Bower可以帮你安装前端包,包括JavaScript.CSS类库.对于服务器端包,请通过NuGet包管理. G

ASP.NET 5系列教程 (二):Hello World

本篇文章内容比较基础,主要是向大家展示如何创建一个 ASP.NET 5 工程,主要包含内容如下: 创建ASP.NET 5 工程 添加 Todo 控制器 安装 K Version Manager 执行 EF 迁移 打开Visual Studio 2015 Preview.选择 "File" 菜单,选择New > Project. 在New Project 对话框中,点击Templates > Visual C# > Web,选择ASP.NET Web Applicati

ASP.NET 5系列教程 (三):view components介绍

在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制应用中的某一功能模块,例如: 动态导航菜单 标签云 登录面板 购物车 最近文章 博客侧边栏 假如使用VC 创建了登录面板,可以在很多场景中调用,例如: 用户没有登录 用户已登录,需要退出使用其他帐号登录或者管理其他帐号. 如果当前登录角色为管理员,渲染管理员登录面板 你可以根据用户的需求获取数据进行