目录索引:《ASP.NET MVC 5 高级编程》学习笔记

本篇内容:
  一、One ASP.NET
  二、新的Web项目体验
  三、ASP.NET Identity
  四、Bootstrap 模板
  五、特性路由
  六、ASP.NET基架
  七、身份验证过滤器
  八、过滤器重写

  2013年10月,ASP.NET MVC 5与Visual Studio 2013一起发布。
  这个版本的关注点是“One ASP.NET”计划(稍后介绍),以及对整个ASP.NET框架所做的核心增强。
  下面列出了一些主要特性:
  1)One ASP.NET
  2)新的Web项目体验
  3)ASP.NET Identity
  4)Bootstrap 模板
  5)特性路由
  6)ASP.NET基架
  7)身份验证过滤器
  8)过滤器重写

一、One ASP.NET

  有很多的选项是好事。Web应用程序千差万别,而Web工具和平台也不是有了一种就可以应对所有情况。但是另一面,一些选项会让我们束缚手脚。
  正如“鱼和熊掌不可兼得”,如果选择一样东西意味着放弃另一样东西,那么我们不希望被迫必须选择他。
  这一点特别适用于开始创建项目时的选项:我们刚刚开始创建项目,怎么知道一年以后这个项目需要什么!

  在之前的MVC版本中,每次创建项目的时候都面临着选择:创建一个MVC应用程序、Web Forms应用程序或其他项目类型。
  之后,实际上我们就被限制住了。在某种程度上,可以吧Web Forms添加到一个MVC应用程序中,但是把MVC添加到Web Forms应用程序中是很困难的。
  MVC应用程序在csproj文件中隐藏了一种特殊的项目类型GUID,当尝试吧MVC添加到Web Forms应用程序时,这只是必须做的几个神秘修改之一。
  在MVC5中,情况发生了变化,因为现在只有一种ASP.NET项目类型,如图4所示:

  在Visual Studio 2013中创建新的Web应用程序时,没有复杂的选项,只有Web应用程序。
  不只是在一开始创建ASP.NET项目时才支持这么做:在不断开发的过程中,可以添加对其他框架的支持,因为工具和特性都是作为NuGet包提供的。
  例如,如果开发过程中改变了想法,就可以使用ASP.NET基架向任何现有的ASP.NET应用程序添加MVC。

二、新的Web项目体验

  作为新的One ASP.NET体验的一部分,Visual Studio 2013中创建新的MVC应用程序的对话框已被合并和简化(如上图)。
  下篇咱们在一步步创建一个项目瞅瞅里面啥样的。

三、ASP.NET Identity

  MVC5彻底重写了成员和身份验证系统,使其成为新的ASP.NET Identity系统的一部分。
  这个新系统拜托了原来的ASP.NET成员系统的陈旧局限,并让MVC4的Simple Membership系统变得更加成熟,可配置性更好。
  
  下面列出了ASP.NET Identity的一些主要新特性:
  1)One ASP.NET Identity系统
  为了支持前面介绍的One ASP.NET这个关注点,新的ASP.NET Identity被设计为可在整个ASP.NET家族中使用(包括MVC、Web Forms、Web Pages、Web API、SignalR,以及使用其中任何技术组合创建的混合应用程序)。

  2)控制用户资料数据
  虽然ASP.NET的成员系统常被用于存储关于用户的额外的、自定义的信息,但是使用起来越很困难。
  ASP.NET Identity使得存储额外的用户信息(如账号、社交媒体信息和联系地址)很容易,只需要在代表用户的模型类中添加属性即可。

  3)控制优于持久化
  默认情况下,所有用户信息都是用Entity Framework Code First存储,所以可以获得我们在使用Entity Framework Code First的时候已经习惯了的简单性和控制。
  但是,也可以插入其他任何我们希望使用的持久化机制,包括其他ORM、数据库、自定义的Web服务等。

  4)可测试性
  ASP.NET Identity API是使用接口设计的,所以允许为用户相关的应用程序代码编写单元测试。

  5)基于声明
  虽然ASP.NET Identity仍然支持用户角色,但是也支持基于声明的身份验证。
  声明的表达力比角色强许多,所以给我们提供了强大的能力和灵活性。
  角色成员关系是一个简单的布尔值(是/不是 管理员身份)。
  而用户声明可以包含丰富的信息,比如用户的成员级别或身份细节等。

  6)登录提供器
  ASP.NET Identity并不是只关注用户名/密码身份验证,而是也理解用户经常通过社交服务提供器(如Microsoft 账户、Facebook或Twitter)和Windows Azure Active Directory进行身份验证。

  7)NuGet分发
  ASP.NET Identity作为NuGet包安装到应用程序中。
  这意味着可以单独安装ASP.NET Idetntiy,并且通过更新一个NuGet包,就可以把它升级到最新版本。

  关于ASP.NET Identtiy系统,我们会在后面的文章中详细讨论。

四、Bootstrap 模板

  MVC1项目的默认模板的视觉设计一直到MVC3都没有改变。
  创建并运行一个新的MVC项目时,得到的是蓝色背景,其上有一个白色的方框。

  在MVC4中,重新设计了默认模板的HTML和CSS,使其默认的视觉设计也能拿得出手了。
  而且,在不同的屏幕分辨率下,默认模板的HTML和CSS也工作的很好。
  (这个在上面的MVC4概述介绍过了)但是MVC默认模板的HTML和CSS都是自定义的,这不够理想。
  视觉设计的更新与MVC的产品发布周期捆绑在一起,所以很难与Web开发社区分享设计模板。

  在MVC5中,项目模板改为运行在流行的Bootstrap框架上。
  Bootstrap最初由Twitter的一名开发人员和一名设计师创建,他们后来离开了Twitter,专注于Bootstrap的开发。
  MVC5的默认设计实际上看起来就像可以直接部署到生产环境一样,如图所示:
  

  更好的是,因为Bootstrap框架在Web开发人员群体中获得了很高的接受度,所以在https://wrapbootstrap.com/和http://bootswatch.com/上可以获得大量的、多种多样的Bootstrap主题(有免费的,也有付费的)。
  例如,如下图所示,我是用了Bootswatch免费提供的Slate主题,上面的默认“蓝白框”效果就变成了:
  

  后面我们将介绍如何针对移动Web浏览器优化MVC应用程序,详细介绍Bootstrap。

五、特性路由

  特性路由是一种新的指定路由的方法,可将注解添加到控制器类或操作方法上。
  流行的AttributeRouting开源项目让我们的这种方法成为可能。

  后面我们将单独介绍特性路由。

六、ASP.NET基架

  基架是基于模型类生成样板代码的过程。MVC从版本1开始就有了基架,但是仅限于MVC项目使用。
  新的ASP.NET基架系统可以在任何ASP.NET应用程序中工作。
  另外,它还支持构建强大的自定义基架,使其具有自定义对话框和完善的基架API。

  后面我们会单独一篇文章简单的讨论一下ASP.NET的基架系统,最后还会介绍扩展基架系统的两种方式。

七、身份验证过滤器

  MVC很久以来一直支持认证过滤器的功能,允许基于角色身份或其他自定义逻辑来限制对控制器或操作的访问。
  但是,在后面的文章中我们将会看到,身份验证(确定用户是谁)和授权(经过身份验证的用户能够做什么)之间存在一个重要的区别。
  新增的身份验证过滤器先于授权过滤器执行,从而允许访问ASP.NET Identity提供的用户声明,以及运行自定义的身份验证逻辑。

  后面我们会详细讨论身份验证过滤器。

八、过滤器重写

  过滤器是一项高级的MVC特性,允许开发人员参与操作和结果执行管道。
  过滤器重写意味着可以实现让某个控制器或操作不执行的全局过滤器。

  这个我们先不会详细介绍,在最后的文章中我们再详细地介绍过滤器以及过滤器重写。

02 入门 - ASP.NET MVC 5 概述的更多相关文章

  1. Easyui入门视频教程 第02集--- ASP.NET MVC下 搭建 EasyUI环境

    Easyui入门视频教程 第02集--- ASP.NET MVC下 搭建 EasyUI环境 目录 ----------------------- Easyui入门视频教程 第09集---登录完善 图标 ...

  2. 04 入门 - ASP.NET MVC应用程序的结构

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 用Visual Studio创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录. 如图所示: ...

  3. 《ASP.NET MVC 5 高级编程》学习笔记

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

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

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

  5. ASP.NET MVC 5 入门指南汇总

    经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...

  6. ASP.NET MVC 5 入门摘要

    翻译和编辑的第一阶段后,.我们已经发出12片ASP.NET MVC 5入门文章. 他们中的大多数来自翻译ASP.NET MVC 5 官方教程,因为本系列文章言简意赅,篇幅适中,从一个web站点演示样例 ...

  7. 《ASP.NET MVC 5 破境之道》:概述

    第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...

  8. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列

    http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...

随机推荐

  1. STM32学习笔记(二):GPIO口工作原理

    STM32每个IO口具有7个寄存器来控制,每个IO口都可以自由进行编程控制,我们编程实际上控制的是通过控制那7个寄存器来控制我们的IO口,我们可以通过编程控制IO口,把IO口配置成如下八种模式: 1. ...

  2. PHP过滤数组中的空值

    php对数组的操作已经很完善了,提供给我们很多内置函数用以操作数组,其实可以用array_filter函数对PHP数组中的控制进行过滤 array_filter() 函数用回调函数过滤数组中的值.该函 ...

  3. VS2017 WinFrom打包设置与教程

    前言 项目中有用到winfrom做配套的打印程序,直接给客户一个debug文件夹,当然不是很好.. 记录一下打包过程. 正文 首先需要下载 Visual Studio插件,到如图的地方下载: 搜索Mi ...

  4. 京东云罗玉杰:OpenResty 在直播场景中的应用

    2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,京东云技术专家罗玉杰在活动上做了< OpenResty ...

  5. ASP.NET Core中实现单体程序的事件发布/订阅

    标题:ASP.NET Core中实现单体程序的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10468058.html 项目源代码: ...

  6. Python调用ansible API系列(二)执行adhoc和playbook

    执行adhoc #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from collections import namedtuple ...

  7. Windows中使用Mysql-Proxy实现Mysql读写分离

    1.简介 读写分离:当业务量上来时,往往一台单机的mysql数据库不能满足性能需求,这时候就需要配置主从库读写分离来解决性能瓶颈.简单的来说,就是原先一台数据库既读又写,现在改成一台写和1台以上读. ...

  8. 【Java】广州三本秋招经历

    前言 只有光头才能变强 离上次发文章已经快两个月时间了,最近一直忙着秋招的事.今天是2018年10月22日,对于互联网行业来说,秋招就基本结束了.我这边的流程也走完了(不再笔试/面试了),所以来写写我 ...

  9. Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件

    由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...

  10. 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务

    在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...