原文:http://weblogs.asp.net/scottgu/introducing-asp-net-5

ASP.NET 5预览版发布了, 可以在这下载最新的Visual Studio 2015体验

ASP.NET 5开源, 可以在Windows, Linux和Mac上开发并运行.

ASP.NET 5 有如下一些基本的改进:

  • 跨平台可在 Windows, Mac和Linux上编译并运行
  • Built on .NET Core, which supports true side-by-side app versioning
  • 一些新的工具简化现在web开发
  • Single aligned web stack for Web UI and Web APIs
  • 云环境配置
  • 集成支持创建使用NuGet包
  • 集成以来注入
  • 可以host在IIS或者self-host

现代web开发

ASP.NET 5有许多不错的特性能让你更好的开发web应用:

动态开发(Dynamic Development)

在Visual Studio 2015, 动态编译能给我们带来更流畅的开发体验. 当你想开到改代码后的结果时你不需要在去手动编译你的程序. 你需要的仅仅是(1) 修改代码, (2) 保存更改, (3) 刷新浏览器, (4) 查看更改后的结果.

集成流行的web开发工具(Bower, Grunt, Gulp)

Visual Studio 2015 继承了Bower, Grunt和Gulp.

  • Bower是一个客户端包管理器, 包括JavaScript和CSS.
  • Grun和Gulp是任务运行器.

Bower: 通过直接在bower.json config文件中加入JS类库到ASP.NET项目:

你依然能通过NuGet包管理器添加服务端的包.

Grunt: 在现代web开发中, 你要管理很多任务: 编译LESS, TypeScript, CoffeeScript linting, JavaScript minification, 运行JS单元测试 等等. 任务运行器能够很方便的管理协调这些任务. Visual Studio 2015支持两种流行的任务管理器, Grunt和Gulp.

例如, 如果你想使用Grunt编译LESS文件. 打开package.json 添加 grunt-contrib-less 包, 他是一个第三方的Grunt插件.

使用任务运行器的边栏绑定任务到编译的步骤(编译前, 编译时, clean, 打开解决方案时).

更简单的依赖管理

在ASP.NET 5中可以通过添加NuGet包管理依赖. 你可以使用NuGet包管理器或者简单的编辑JSON文件(project.json) .

project.json文件类似于下面的样子:

在Visual Studio 2015中, 智能提示会协助你找到NuGet包.

智能提示还可以协助你找到可用的版本号:

云配置

在ASP.NET 5中, 我们消除了使用Web.config文件配置值

在Startup.cs文件中, 你可以添加提供config值的源.

上面的代码展示了一个项目被设置成从一个json文件获取config值和环境变量.  在config.json文件中你可以提供下面的内容.

依赖注入

在MVC, Web API 和 SignalR中集成了依赖注入. ASP.NET 5 提供了内置的依赖注入. You can access services at startup, in middleware, in filters, in controllers, in model binding and virtually any part of the pipeline where you want to use your services. ASP.NET 5 includes a minimalistic DI container to bootstrap the system, but you can easily replace the default container with your container of choice (Autofac, Ninject, etc). Services can be singleton, scoped to the request or transient.

来看看怎么在ASP.NET MVC 6中使用构造函数注入, 创建一个ASP.NET 5 Starter Web项目. 添加一个简单的time service:

using System;

namespace WebApplication1

{

public class TimeService

{

public TimeService()

{

Ticks = DateTime.Now.Ticks.ToString();

}

public String Ticks { get; set; }

}

}

下一步在Startup类的ConfigureServices方法中注册time service为一个瞬时service:

public void ConfigureServices(IServiceCollection services)

{

services.AddMvc();

services.AddTransient<TimeService>();

}

然后, 更新HomeController使用构造函数注入.

public class HomeController : Controller

{

public TimeService TimeService { get; set; }

public HomeController(TimeService timeService)

{

TimeService = timeService;

}

public IActionResult About()

{

ViewBag.Message = TimeService.Ticks + " From Controller";

System.Threading.Thread.Sleep(1);

return View();

}

// Code removed for brevity

}

在MVC 6可以使用[Activate]通过属性注入服务.你可以在controller、fitler、view components使用[Activate]注入:

public class HomeController : Controller

{

[Activate]

public TimeService TimeService { get; set; }

// Code removed for brevity

}

MVC 6同样支持在Razor视图中通过使用@inject关键字注入:

@using WebApplication23

@inject TimeService TimeSvc

<h3>@ViewBag.Message</h3>

<h3>

@TimeSvc.Ticks From Razor

</h3>

更快的HTTP性能

ASP.NET 5引入了新的HTTP请求管道, 以为他是模块化的因此你可以仅添加你需要的组件. 管道同事不在依赖于 System.Web. 通过减少管道的开销,你的应用性能能更好.

在Startup类的Configure方法中自定义你需要在管道中用那些组件. 在Configure方法中指定你要用哪些请求管道. ASP.NET 5已经包含了一些来自于Katana项目的, 比如静态文件中间件, 验证权限和诊断中间件. 下面的代码展示了你可以添加删除管道.

public void Configure(IApplicationBuilder app)

{

// Add static files to the request pipeline.

app.UseStaticFiles();

// Add cookie-based authentication to the request pipeline.

app.UseIdentity();

// Add MVC and routing to the request pipeline.

app.UseMvc(routes =>

{

routes.MapRoute(

name: "default",

template: "{controller}/{action}/{id?}",

defaults: new { controller = "Home", action = "Index" });

});

你可以写一些自己的管道组件中间件.

开源

开源代码在这 GitHub.

[译]Introducing ASP.NET 5的更多相关文章

  1. [译]Introducing ASP.NET vNext and MVC 6

    原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext init ...

  2. Introducing ASP.NET vNext and MVC 6

    [译]Introducing ASP.NET vNext and MVC 6 原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source ...

  3. 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解

    原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details ...

  4. 【译】ASP.NET MVC 5 教程 - 10:添加验证

    原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...

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

    原文:[译]ASP.NET MVC 5 教程 - 9:添加新字段 在本节中,我们将使用Entity Framework Code First 数据迁移功能将模型类的改变应用到数据库中. 默认情况下,当 ...

  6. 【译】ASP.NET MVC 5 教程 - 8:搜索查询

    原文:[译]ASP.NET MVC 5 教程 - 8:搜索查询 添加一个搜索的方法和搜索的视图 在本节中,我们为 Index 方法添加查询功能,使我们能够根据电影的题材或名称进行查找. 修改 Inde ...

  7. 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解

    原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...

  8. 【译】ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据

    原文:[译]ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据 在本节中,你将新建一个MoviesController 类,并编写获取电影数据的代码,使用视图模板将数据展示在浏览器中. ...

  9. 【译】ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串

    原文:[译]ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串 在上一节中,我们创建了MovieDBContext 类来连接数据库.处理Movie 对象和数 ...

随机推荐

  1. Discuz! X2.5 /source/class/helper/helper_seo.php Remote Code Execution Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 SEO模块中的preg_replace+修正符e+双引号引发的远程代码执 ...

  2. Android——PULL解析XML

    简介 Android中常常使用XML文件保存用户的APP设置信息.因此需要对XML文件的相关操作进行了解.本文将以<学生信息管理系统>为案例背景进行介绍相关的XML解析的介绍,以及其他相关 ...

  3. 帝国cms制作手机网站

    1.操作前,我们需要先对网站数据库进行备份. 接下来我们添加手机站的模板组.点击"模板", 选择"模板组管理"中的"导入/导出模板组",然后 ...

  4. Npoi实现Excel绘制功能

    使用Npoi操作Excel,是我一直很喜欢的一种方式. 说简单也简单,但是封装好重用性,易用性,也稍稍费了些时间.在这里做个记录,免得以后遗忘. 首先说一下需求,需求有两点 1.新建Excel,并下载 ...

  5. HDU 5738 Eureka

    传送门 题目大意: 给出平面上的$n$个点,每个点有唯一的标号($\text{label}$),这$n$个标号的集合记作$S$,点可能重合.求满足下列条件的$S$的子集$T$的数目: 1. $|T|\ ...

  6. phpstorm取消自动保存,修改快捷键并标识修改的文件为星星标记

    编辑时间: 2016-8-3 15:15:37 个人通过使用,发现PhpStorm的确是 编辑PHP 的神器,提供用户效率,提供智能代码补全,快速导航以及即时错误检查. 不过,让我用起来不爽的是,它会 ...

  7. jQuery知识点总结(第二天)

    今天继续从我的笔记上面搬运.我们不产生知识,只是知识的搬运工. 内容过滤选择器: ○ 内容选择过滤器                                       $("div ...

  8. CSS3的transition动画功能

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. 支持向量机(SVM)入门

    一.简介 支持向量机,一种监督学习方法,因其英文名为support vector machine,故一般简称SVM. 通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器, ...

  10. asp.net js 倒计时总秒数量 和 排序

    Edit in JSFiddle JavaScript HTML CSS Result h1 { font-family: "微软雅黑"; font-size: 40px; mar ...