概述

ASP.NET 5 (又称为vNext) 是自ASP.NET产生15年以来一次革命性的更新, 我们可以从以下几点来理解其概貌和意义:

  • ASP.NET 5是开源的
  • ASP.NET 5开发的WebApp是跨平台的: 目前可以确认的平台包括Windows, Linux和Mac
  • ASP.NET 5是完基于OWIN标准, 已经全与System.Web.dll脱离. 换言之,vNext不一定要架设在IIS上面.
  • ASP.NET 5是完全组件化开发, 开发者可以从无到有自行选择其中的功能组件.
  • ASP.NET 5完美支持云部署
  • ASP.NET 5开发环境需要 VS 2015 支持

运行环境

ASP.NET 5 运行的全新的运行环境框架: .NET Execution Environment (DNX) 中.

DNX简言之就是整合了所有需要的SDK和运行时环境的相关内容, 以便于.NET应用能够跨平台运行. DNX是一个全新的概念, 如果要深入了解, 请移步官方文档 DNX Overview.

组件管理

用VS 2013 的同学都能够猜到了,2015 的组件管理就是Nuget, 而且同时还支持NPM 安装Node.Js组件.

但VS2015比VS 2013 更加严格, Nuget已经不是可选项而是必选项,直接添加DLL的模式被取消.所有组件必须通过Nuget方式进行添加.

启动类

ASP.NET 5 的唯一启动入口是 Startup类 (了解OWIN的同学并不陌生), 其样例代码一般为:

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
} public void Configure(IApplicationBuilder app)
{
}
}

ConfigureService方法用于定义整个应用中的服务 (Service), 而Configure方法用于定义整个应用中加载的中间件 (Middleware)

服务 (Service)

基于依赖注入的组件实现,比如原来Controller里面的Attribute就是比较典型的Service组件,ASP.NET 5 内置有一定的默认Service,但它们也能很方便的通过ConfigureServices函数进行替换.

中间件(Middleware)

基于OWIN的理论我们可以知道,我们通过Middleware管理请求管道(Request Pipeline),这个和IIS已经完全预设很多处理机制不同,如果没有任何Middleware的加载,可以认为这个管道是空的. 我们可以通过Configure函数中的IApplicationBuilder参数的Use方法依次添加我们需要的Middleware.

当然, ASP.NET 5 也提供了几个标准的Middleware:

•Working with Static Files : 主要指静态文件功能,基于 ASP.NET StaticFile 组件.

•Routing: 主要指MVC和WebApi相关功能, 基于 ASP.NET Mvc 组件.

•Diagnostics: 主要指Logging相关功能.

•Authentication: 主要指用户验证相关功能,基于ASP.NET Identity组件.

另外开发人员可以自定义任何符合Owin标准的中间件并加入应用.

服务器(Server)配置

ASP.NET默认情况下, 支持IIS和Self-Hosting (基于WebListener组件) 2种服务器启动方式, 注意这2种模式的功能是完全一致的. Self-Hosting方式可以很方便在Windows环境下脱离IIS来运行你的应用; 而在其他平台可以选择基于Owin标准的其他Server实现,比如Kestrel web server. (代码和实现是都是一致的)

静态文件目录

在加载StaticFile的组件的同时,我们需要同时设置整个项目的静态文件根目录,这个配置一般在项目配置文件: project.json 的“webroot” 属性中,默认为 wwwroot.

配置

ASP.NET 5 使用了全新的配置文件体系, 新系统不在基于System.Configuration 或者 web.config, 新的配置文件体系内建了大量的配置文件提供组件 (configuration providers), 这些组件可以很方便的支持多种配置文件类型 (XML, JSON, INI甚至系统环境变量), 开发者甚至可以开发自定义的配置提供组件.

在默认情况下,ASP.NET 5的配置文件一般为project.json和config.json.

结束

想尝试的同学可以再这里安装 VS2015 RC版本进行研究.

https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx

注意在创建Web App的时候不要选择上面的MVC 4.6, 而选择下面的vNext.

MVC 4.6 和目前的机制大同小异, 意义不大.

默认项目里面的Project_Readme.html文件里面就有更多详细的内容, 有兴趣的同学可以一起学习.

最后说2句,MS这次真的是拼了,开源,跨平台,组件化; AngularJS, JQuery, BootStrap已经成为标配, Grunt and Gulp登堂入室,甚至可以直接进行Node.Js开发.

另外如果你还想跟着MS干, ASP.NET 5 决对是值得考虑的升级.

关于ASP.NET 5 的后续介绍文章,第一篇已经完成,请有兴趣的同学移步:

建立和开发ASP.NET 5 项目

使用自定义配置文件

参考资料

Introduction to ASP.NET 5

DNX Overview

Client-Side Development

ASP.NET 5 (vNext) 理解和概述的更多相关文章

  1. ASP.NET 5 (vNext)

    ASP.NET 5 (vNext) 理解和入门   概述 ASP.NET 5 (又称为vNext) 是自ASP.NET产生15年以来一次革命性的更新, 我们可以从以下几点来理解其概貌和意义: ASP. ...

  2. IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述

    本主题概述 ASP.NET 应用程序的生命周期,列出了重要的生命周期事件,并描述了您编写的代码将如何适应于应用程序生命周期.本主题中的信息适用于 IIS 5.0 和 IIS 6.0.有关 IIS 7. ...

  3. ASP.NET MVC5 网站开发实践 - 概述

    前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了.1月26日晚上在群里跟@怒放 他们讨论这个问题,结论是即使只是一个小d ...

  4. IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)

    IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...

  5. Linux部署ASP.NET 5 (vNext)

    原文:Linux部署ASP.NET 5 (vNext) ASP.NET 5 (vNext) Linux部署   引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubun ...

  6. WebForm和Asp.Net MVC的理解

    我对WebForm和Asp.Net MVC的理解   比较WebForm和Mvc的请求处理方式 首先简单了解一下Asp.Net中怎么对页面进行请求处理的: 在管道的第7-8个事件之间,有一个MapHt ...

  7. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

  8. IIS 7.0 的 ASP.NET 应用程序生命周期概述

    文章:IIS 7.0 的 ASP.NET 应用程序生命周期概述 地址:https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx ...

  9. ASP .NET依赖注入理解

    ASP .NET依赖注入理解[转]:  https://www.cnblogs.com/wzk153/p/10892444.html

随机推荐

  1. 2-3. Using Type Deduction

    Type Deduction 发生在编译时期 可以对一般类型,自定义类型进行类型自推导 下面有两个例子: 1. Using auto with a class #include <iostrea ...

  2. MCMC and Bayesian Data Analysis(PPT在文件模块)

    How to generate a sample from $p(x)$? Let's first see how Matlab samples from a $p(x)$. In Matlab, t ...

  3. js判断字符串中是否含有指定汉语

    核心代码: function haveChinese(str,c){ if(escape(str).indexOf(escape(c))!=-1){ retrun true; } return fal ...

  4. Q_OBJECT

    所有QObject的派生类在官方文档中都推荐在头文件中放置宏Q_OBJECT,那么该宏到底为我们做了哪些工作?在qobjectdef.h中有下面的代码: #define Q_OBJECT \ publ ...

  5. C# 基础(8)--网络编程

    套接字,客户端连接服务器,作为进程通讯机制,是基于描述IP地址和端口,是一个通讯链的句柄,其实质就是两个程序通讯用的. 非常类似于电话插座.双方通话的过程,是一方向电话机发出信号和对方从电话机接受信号 ...

  6. loop 循环和检测点 9.3

    loop 指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址.对 IP 的修改范围都为:-128~127. 指令格式:loop 标号 操作: (cx)=(cx)- ...

  7. 换行(\r)和回车(\n)

    主要摘录自2篇blog: http://www.cnblogs.com/clarkchen/archive/2011/06/02/2068609.html http://www.360doc.com/ ...

  8. gitlab安装过程总结

    gitlab总算搭建好了,今天下午完成了第一个工程的导入. 梳理下搭建的过程: 1.下载bitnami的一键安装包,并安装 注意设置权限为777,以免出现某文件写入错误的问题 2.配置邮件服务 分别修 ...

  9. Qt 为tableview的item添加网格线

    使用qss可以显示每个item的网格: selection-background-color: rgb(170, 170, 127); gridline-color: rgb(255, 255, 25 ...

  10. “ORA-01033:ORACLE initialization or shutdown in progress”错误的解决

    网页上显示以下错误信息: ORA-:ORACLE initialization or shutdown in progress 启动oracle数据库,有以下提示信息 Database mounted ...