目录索引:《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. 网页基础:网页设计(我所知道的所有的html和css代码(含H5和CSS3)),如有错误请批评指正

    最基础的网页设计,就是给你一个图片你做成一个网页,当然,我的工作是C#,个人网页的功底不是很高首先先认识一下网页的一些相关知识: 一般的,现在一个html网页一般包含html文件,css文件,js文件 ...

  2. ES踩坑笔记

    现在开始在业务上使用ES,记录一些踩坑经历,做点笔记. 2018-11-13 source不返回问题 使用了角色校验,客户端插入成功之后获取数据没有source,和查询参数无关. 检查mapping, ...

  3. 从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲&计划书

    前言 哈喽大家周四好!时间过的很快,现在已经是三月份了,我的 IdentityServer4 教程也拖了一定的时间了,正好最近有精力学新东西了,主要中间被小伙伴要求写一个管理后台,目前1.0已经上线( ...

  4. Netty源码—六、tiny、small内存分配

    tiny内存分配 tiny内存分配流程: 如果申请的是tiny类型,会先从tiny缓存中尝试分配,如果缓存分配成功则返回 否则从tinySubpagePools中尝试分配 如果上面没有分配成功则使用a ...

  5. 如何在ASP.NET Core中自定义Azure Storage File Provider

    文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...

  6. Vue源码解析(二):数据驱动

    一.数据驱动: 数据驱动是vue.js最大的特点.在vue.js中,数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom.数据驱动还有一部分是数据更新驱动视图变化. ...

  7. netty之NioEventLoopGroup源码分析二

    大家好,今天我准备死磕NioEventLoopGroup的源码,首先讲下概念,NioEventLoopGroup 它是一个线程池,存放NioEventLoop,一个数组,今天打算先看下这行代码的初始化 ...

  8. css公共库——简介中超过长度显示省略号

    在简介.引言中常见:文字只有一排,超出宽度以省略号显示,像这样 实现方法:在公共库定义otw类 .otw{ overflow: hidden; text-overflow: ellipsis; whi ...

  9. CODING Pages 服务全面升级,更快更稳更可靠!

    尊敬的 CODING 用户: 您好! 由于原上游服务商无法满足 CODING Pages 日益增长的用户量以及访问速度需求,同时提供的 DDoS 解决方案无法支撑大型 DDoS 攻击,给 CODING ...

  10. Android For OpenCV的环境搭建

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类 ...