ASP.NET MVC5 高级编程-学习日记-第一章 入门
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主目录的一个子目录中,这个子目录是根据控制器名称来命名的。
上一篇: 换行与不换行