第一章 mvc概述
需要安装 Visual Studio 2008 或 Visual Web Developer 2008 Express 来构建 ASP.NET MVC 应用程序。还需要下载 ASP.NET MVC Framework。
如果没有 Visual Studio 2008,可以从下面的网址下载 90 天试用版:
http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx
另外,也可以使用 Visual Web Developer Express 2008 创建 ASP.NET MVC 应用程序。如果决定使用 Visual Web Developer Express,则必须安装 Service Pack 1。可以从以下网址下载带有 Service Pack 1 的 Visual Web Developer 2008 Express:
http://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14&displaylang=en
安装 Visual Studio 2008 或 Visual Web Developer 2008 后,需要安装 ASP.NET MVC Framework。可以从以下网址下载 ASP.NET MVC Framework:
http://www.asp.net/mvc/
mvc(model-view-controller) (框架)模型-视图-控制器 同于表示一种软件架构模式。它把软件系统分为三个基本部分模型 (model)存储数据的组件(与领域模型不同)
视图(view)根据model数据进行 内容展示的组件 --获取model的状态
和控制器(controller) 接收并处理用户的指令 操作model . 和model 和 view 协作的 作用
并不只是 业务逻辑的组件 。
表现模式: presentation pattern /ui
两种分离:
view和数据(model)分离
-能够 不同的view对model进行展示
- 分离 可视和 不可视 的组件。 能够对model 进行对立测试(view到model单向引用)
view 和 controller 分离
-分离 表现逻辑和 具体展示。--能够进行对立的测试
mvc两种变种:
--observer模式
--MVP模式--事件驱动。
与三层架构的比较
view-- UI Layer
Controller -- BL Layer
Model -DA Layer
MVC 表现模式 :presentation pattern-- 独立关系
优点。 容易分离 。三者 是 协作的关系
三层架构 架构模式-- 从上 到下 -- 依赖关系 --双向引用 --难以分离
没有 可比性。
asp.net mvc 特点
-- 一切都可以 替换
-- viewengine 视图引擎
-- action filter
--一切都是可测试的
--公开源代码
-- 可以修改
-- 不 可 重新发布
asp.net mvc 的组件协作
--url routing
--asp.net mvc使用 url进行 驱动
-- 根据程序中制定的规则 从url中:
--确定 controller 名
-- 确定action 名
-- 生成其余各种参数
article/show/2008/4/10/13411
{controller}{action}{year}{month}{day}{id}
--controller&action executing
-- view rendering
LINQ TO SQL
--.NET FRAMEWORK 3.5的ORM框架
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = 0 },
new { action = @"^\w+", id = @"^\d+" }
);
routes.MapRoute(
"Blog",
"Archive/{date}",
new { controller = "Blog", action = "Archive" },
new { date = @"^\d{4}-\d{2}-\d{2}" }
);
routes.MapRoute(
"Car",
"Car/{make},{model}",
new { controller = "Car", action = "Index" },
new { date = @"(acural|bmw)" }
);
routes.MapRoute(
"Book",
"Book/Add/{name}",
new { controller = "Book", action = "Add" },
new { httpMethod = "POST" }
);
routes.MapRoute(
"CatchIt",
"Product/{*values}",
new { controller = "Product", action = "Index" }
);
再浏览器地址栏 中输入的 url 和 应用程序中的文件 不存在 对应的关系。 再asp.net Mvc 应用程序 中,url web forms 应用程序关注的 是内容,相反
mvc 应用程序 的程序逻辑
URL 路由(routing) 的asp。net mvc 功能映射到 控制器的操作. URL 路由 - u使用 路由表 处理 请求。 第一次 启动 创建。
路由表 global。asax 文件中设置。
默认的 设置如下
public static void registeroutes( routecollection routes)
{
routes.ignoreroute(" {resource}.axd /{*pathinfo}");
routes.maproute{
"default",
"{controller}/action/{id}",
new {controller ="Home" ,action ="index" ,id=""};
}
protected void application start()
{
registerrouters{routetable.routes};
}
/Product/Details/3
此 URL 被解析为如下三个部分:
Controller = ProductController
Action = Details
Id = 3
}