asp.net 5 新特性简述(学习笔记)

自从我大微软发布的asp.net 5的更新以来,网上有众多介绍它的文章,我大概翻了一遍之后概括为以下几点:

1.多平台运行(Windows、linux、MacOS)

asp.net 5版本以后使用一套DN工具和命令集来管理运行环境、包引用,具体说明请参阅:
http://www.cnblogs.com/shanyou/p/4589930.html
https://github.com/aspnet/dnx
使用DNVM来配置项目的运行环境,目前运行环境分为:全功能.NET CLR核心.NET CLRcore CLR,它们的区分是:

.NET CLR:就是我们以前的.net framework全功能的运行环境
核心.NET CLR:是.net framework的精简运行时,在部署时可以连clr一起部署,意味着你的应用可以运行在不同的运行时环境中,不依赖与部署环境中的.net运行时
core CLR:这是微软和mono社区合作完成的跨平台运行时

2.自寄宿独立于IIS web服务器

asp.net 5以前我们的项目是运行在iis中,IIS提供了一套请求管道机制
(管道请参阅:http://www.cnblogs.com/fengzheng/p/3668283.html
IIS中运行的程序已HttpModule为模块组件,根据不同的周期注册模块,从来实现程序响应。而asp.net 5以后引入佶了Middleware概念,不再有管道的各个声明周期,而是以中间件的形式在服务器和应用程序之间插入特定目的Middleware,从而对request和response响应进行检查、路由和修改。
Middleware概念详细参阅:http://www.cnblogs.com/TomXu/p/4496435.html
脱离IIS的管道生命周期之后,不再依赖于IIS这一款web服务器,asp.net 5实现了监听端口解析http请求和返回的功能。

3.Roslyn新编译器,实现实时编译

微软全新的开源编译器,开发了API可以在内存中动态解析编译语法,它的编译速度是以前的3倍(好像是),有了它之后在开发MVC的时候不再需要修改代码后编译运行了,直接修改代码刷新页面就可以了。

4.Tag Helper以页面元素标签的形式代替原本的Razor语法

以前的Razor语法不得不说给前端的开发增加了很多麻烦,因为它的语法是这样子的

@Html.LabelFor(model => model.FullName)
@Html.EditFor(model => model.FullName)
@Html.ValidationMessageFor(model => model.FullName)

每次前端的页面开发完整之后都需要用这套语法重新写一遍,而新版的Tag Helper是这样子的:

<label asp-for="FullName" class="col-md-2" />HI</label>
<input asp-for="FullName" class="form-control" />
<span asp-validation-for="FullName"></span>

是不是看起来舒服多了?

5.深度集成DI

以前我们一帮用Ninject、AutoFac等第三方的依赖注入框架来帮我们做接口和服务的分离,在mvc提供的接口中注册框架。
而在新版asp.net 5中DI已经深度集成到各个环节中,我们只需要在startup.cs中写好依赖关系就好,
在controller中以构造函数、字段等注入方式注入。

6.MVC和Web API合体

在之前的版本中MVC和Web API并不是在一套程序集中我们在站点需要mvc和web api时还需要引用不同的程序集,并且路由注册、依赖注入等还需要分开配置。
他们有很多功能在不同的程序集中实现了相同功能,在此次发布的版本中mvc和web api将不再区分,他们的controller继承自Microsoft.AspNet.Mvc.Controller,使用同一套路由相同的配置,不得不说极大的方便了我们的开发。

7. C# 6.0发布

我觉的此次的更新更多的是加入了一些语法糖:
自动初始化:
以前

public class DemoClass {
    public DemoClass(){
        Id = 1;
        Name = "cf";
    }
    public int Id { get; set; }
    public string Name { get; set; }
}

现在:

public class DemoClass {
    public int Id{ get; set } = 1;
    public string Name { get; set; } = "cf";
}

其他特性不再列举,详细请参阅:http://www.oschina.net/translate/new-features-in-csharp

8.使用JSON来配置项目

新版mvc抛弃了web.config文件而使用了config.json文件来配置项目,json比xml更具有可读性。
并且新版本中新版的配置信息处理机制,可以从多个数据源(json、ini、xml等)获取配置信息,这些都在startup.cs中去设置,这样一来我们可以针对不同的开发环境(开发环境、生产环境)配置不同的配置。

9.拥抱前端环境

新版本的visual studio中创建mvc 6的项目后,在项目的目录中多了一个前端的依赖项管理,目前支持的包管理器有bower和npm,可以像编辑文本一样来管理前端包的依赖关系:

{
  "name": "ASP.NET",
  "private": true,
  "dependencies": {
    "bootstrap": "3.0.0",
    "bootstrap-touch-carousel": "0.8.0",
    "hammer.js": "2.0.4",
    "jquery": "2.1.4",
    "jquery-validation": "1.11.1",
    "jquery-validation-unobtrusive": "3.2.2"
  }
}

在dependencies中添加你需要的包保存后,vs会自动安装包到你的项目中。

另外,visual studio还集成了gulp构建工具,可以在项目的生成前、生成后、清除、项目打开这些项目操作时去调用执行的gulp任务,帮助你方便的构建你的前端应用。

引用出处:

http://www.cnblogs.com/TomXu/p/4496545.html 感谢汤姆大叔非常详细的教程
http://blog.csdn.net/u014388424/article/category/2948671
http://www.cnblogs.com/powertoolsteam/tag/ASP.NET%205/


版权声明:本文为i348018533原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。