Aries-rong

1.1 ASP.NET MVC 简介

 ASP.NET是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架。

1.1.1 MVC模式简介

MVC将应用程序的用户界面(User Interface, UI)分为三个主要部分:

  • 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。
  • 视图:定义应用程序用户界面的显示方式。
  • 控制器:一组类,用于处理来自用户、整个应用程序流以及特定应用程序逻辑的通信。

 MVC作为用户界面模式


 注意这里的MVC指的是一种用户界面模式。MVC模式是处理用户交互的一种解决方案,它并不处理应用程序关注的其他问题,如数据访问、服务交互等。

1.1.2 MVC在Web框架中的应用

MVC模式经常应用于Web程序设计中。在ASP.NET MVC中,MVC三个主要部分的定义大致如下:

  • 模型:模型是描述程序设计人员感兴趣问题域的一些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执行特定域业务逻辑的代码。在ASP.NET MVC中,模型就像使用了某种工具的数据访问层(Data Access Layer),这种工具包括实体框架(Entity Framework)或者与包含特定域逻辑的自定义代码组合在一起的NHibernate。
  • 视图:一个动态生成HTML页面的模板。
  • 控制器:一个协助视图和模型之间关系的特殊类。它响应用户输入,与模型进行对话,并决定呈现哪个视图(如果有的话)。在ASP.NET MVC中,这个类文件通常以后缀名Controller表示。

注意  MVC是一种高级架构模式,它的使用取决于具体应用环境。ASP.NET MVC的上下文是问题域(一个无状态的Web环境)和宿主系统(ASP.NET)。

ASP.NET MVC注重应用MVC模式来提供一个运行在.NET平台上的强大Web开发框架,上下文则是其强大原因的一部分。

ASP.NET采用了大部分觊觎MVC的Web框架所使用的一些基本原则:

  • 约定优于配置(convention over configuration)
  • 不重复(又名DRY原则)
  • 尽量保持可插拔性(pluggability)
  • 尽量为开发人员提供帮助,单必要时允许开发人员*发挥。

1.2 ASP.NET MVC5概述

ASP.NET MVC5主要特性:

  • One ASP.NET
  • 新的Web项目体验
  • ASP.NET Identity
  • Bootstrap模板
  • 特性路由
  • ASP.NET基架
  • 身份验证过滤器
  • 过滤器重写

1.2.1 One ASP.NET

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

1.2.2 ASP.NET Identity

ASP.NET Identity的一些主要的新特性:

  • One ASP.NET Identity系统:为了支持前面介绍的One ASP.NET这个关注点,新的ASP.NET Identity被设计为可在整个ASP.NET家族中使用。
  • 控制用户资料数据:ASP.NET Identity使得存储额外的用户信息很容易,只需要在代表用户的模型类中添加属性即可。
  • 控制优于持久化:默认情况下,所有用户信息都使用Entity Framework Code First存储,所以可以获得我们在使用Entity Framework Code First时已经习惯了的简单性和控制。但是,也可以插入其他任何我们希望使用的持久化机制,包括其他ORM、数据库、自定义的Web服务等。
  • 可测试性:ASP.NET Identity API是使用接口设计的,所以允许为用户相关的应用程序代码编写单元测试。
  • 基于声明:虽然ASP.NET Identity仍然支持用户角色,但是也支持基于声明的身份验证。
  • 登录提供器:ASP.NET Identity并不是只关注用户名/密码身份验证,而是也理解用户经常通过社交服务-提供器和Windows Azure Active Directory进行身份验证。
  • NuGet分发:AP.NET Identity 作为NuGet包安装到应用程序中。这意味着可以单独安装ASP.NET Identity,并且通过更新一个NuGet包,就可以把它升级到新版本。 

1.3 安装MVC5和创建应用程序

1.3.1 创建ASP.NET MVC5应用程序 

创建一个新的MVC项目的步骤如下:

(1).选择File|New Project选项。

(2).在New Project对话框左栏的Installed Templates部分,选择Visual C#|Web模板列表,这件在中间栏显示Web应用长须类型列表。

(3).选择ASP.NET Web Application,将应用程序命名为MvcMusicStore,然后单击OK按钮。

1.3.2 New ASP.NET Project对话框

创建一个新的MVC5应用程序后,将会出现New ASP.NET Project对话框。该对话框列出了所有ASP.NET应用程序共有的一些选项:

  • 选择模板
  • 添加框架文件夹和核心引用
  • 添加单元测试
  • 更改身份验证
  • Microsoft Azure

前两个选项(Select a template和Add folders and core references for)共同起作用。模板选择了一个起点,然后使用框架复选框来添加对Web Forms、MVC和Web API的支持。这意味着我们可以选择一个MVC模板,然后添加Web Forms支持,或者可以选择空模板,添加对框架的支持。这种功能不止在创建新项目时可以使用:任何时候都可以添加对任意框架的支持,因为框架文件夹和核心引用是通过NutGet包添加的。

1.选择一种应用程序模板

  • MVC:MVC模板设置一个标准的、带几个视图的Home Controller,配置站点布局,并包含一个MVC特定的Project_Readme.html页面。
  • Empty:空模板会建立一个空的项目骨架。得到的文件包括一个web.config(包含一些默认的网站配置设置)和创建项目所需的几个程序集引用,但是仅此而已。这个模板不会提供代码,不包含JavaScript或CSS脚本,甚至不会提供一个动态地HTML文件。
  • Web Forms:Web Forms模板为ASP.NET Web Forms开发发下基础。
  • Single Page Application:Single Page Application模板创建的应用程序主要通过JavaScript请求Web API服务驱动,而不是采用传统的Web页面请求/相应周期。最初的HTML由一个MVC Home Controller提供,其余的服务器端交互则有一个Web API控制器处理。次模板使用Knockout.js库来帮助管理浏览器中的交互。
  • Facebook:这个模板方便了构建一个Facebook“画布”应用程序,也就是看上去托管在Facebook网站上的一个Web应用程序。
  • Azure Mobile Service:Azure Mobile Service现在支持Web API服务,所以使用这个模板能够比较容易地创建针对Azure Mobile Service的Web API。

2.测试

 所有的内置项目模板都有一个选项,用来使用样本单元测试创建单元测试项目。

3.配置身份验证

 可选择身份验证方法:

  • No Authentication:用户不需要身份验证的应用程序,例如没有管理单元的公共网站。
  • Individual User Accounts:用于在本地存储用户配置文件的应用程序。支持用户名/密码账号,以及社交认证提供程序。
  • Organizational Accounts:用于通过某种形式的活动目录进行身份验证的账户。
  • Windows Authentication:用于内部网应用程序

新MVC项目在应用程序的根目录下包含Project_Readme.html文件。创建项目时间自动显示这个文件。这是一个完全自包含的文件----所有的样式都通过HTML样式标签包含进来,所以使用完该文件后可以删除它。

1.4 ASP.NET MVC应用程序的结构

 用VS创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录。

    

 这些由VS添加的默认文件提供了一个可以运行的应用程序的基本结构,完整地包括了首页、关于首页、账户登录/退出/注册页面以及一个未经处理的错误页面(所有页面彼此联系起来,可以直接使用)。

 1.4.1 ASP.NET MVC和约定

默认情况下,ASP.NET MVC应用程序对约定的依赖性很强。这样就避免了开发人员配置和指定一些项。

ASP.NET MVC的约定非常容易理解,下面是预期的程序结构:

  • 每个Controller类的名字以Controller结尾。
  • 应用程序的所有视图放在单独的Views目录下。
  • 控制器使用的视图实在Views主目录的一个子目录中,这个子目录是根据控制器名称来命名的。 

相关文章: