目录索引:《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. LVM 移除PV步骤

    1.先查看需要收缩文件系统的使用情况,收缩后的文件系统空间不能小于已经使用的空间 df -hT 2.卸载需要收缩的文件系统(以/dev/vg0/lvm1为例) umount /dev/vg0/lvm1 ...

  2. MySQL 复制 - 性能与扩展性的基石 1:概述及其原理

    1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他服务器保持同步. 接下来,我们将从复制概述及原理.复制的配置. ...

  3. 移动端布局方案汇总&&原理解析

    阿里flexible布局 - 版本1.x 该布局于 2017年8月9日被2.0版本取代 实现原理 假设(UI稿750px宽) 设置viewport的 scale = 1/window.devicePi ...

  4. PLM与企业信息化

    http://blog.itpub.net/31532639/viewspace-2199409/ PLM的发展历史及其与PDM的关系      在ERP.SCM.CRM以及PLM这4个系统中,PLM ...

  5. Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录

    目录 目录 1.介绍 1.1.什么是Crowd? 2.Crowd 的官网在哪里? 3.如何下载安装? 4.对 Crowd 进行配置 4.1.破解 Crowd 第一步 4.2.破解 Crowd 第二步, ...

  6. 我的IDEA配置

    记录一下我的IDEA配置 图片看不清可以在新的标签页打开,因为被我压缩过了 目录: 1.插件 2.配置 一.插件 1.装逼类 (1)Power Mode II 写代码有飘落的像素效果,增加趣味性,因为 ...

  7. Python爬虫 【requests】request for humans

    安装 pip install requests 源码 git clone git://github.com/kennethreitz/requests.git 导入 import requests 发 ...

  8. sdk和api的区别

    SDK SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”.这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档.范例和工具的集合都可以叫做 ...

  9. 分布式之 BASE理论

    ------------------------------珍惜眼前的学习机会,当你现在有机会学习各种经验时,一定要倍加珍惜.靠混日子是混不了一辈子的,许多过程都是不能省略的,至少学会这些经验可以让你 ...

  10. 第16次CCF CSP认证-第5题-317 号子任务(subtask317)-图论最短路径

    [题目背景]“你在平原上走着走着,突然迎面遇到一堵墙,这墙向上无限高,向下无限深,向左无限远,向右无限远,这墙是什么?”——<流浪地球>原著我们带着地球去流浪了,为了处理流浪过程中可能会发 ...