MVC概述
MVC三种角色
– Model: 用于存储数据的组件(与领域模型概念不同)。
– View: 根据Model数据进行内容展示的组件
– Controller:接受并处理用户指令(操作Model),选择一个View并输出内容。
MVC概述:两种分离
• View和数据(Model)分离
–能够为相同的Model开发不同的View进行展示
–分离可视与不可视得组件,能够对Model进行独立测试(只有View到Model的单向引用)
• View和表现逻辑(Controller)分离
–分离逻辑与具体展示,能够对逻辑进行独立测试(只有Controller到View的单向引用)
MVC与三层架构
• MVC与三层架构类似?
– View – UI Layer
– Controller – BL Layer
– Model – DA Layer
• 其实不然
– MVC是表现模式(Presentation Pattern)
–三层架构是架构模式(Architecture Pattern)
– 没有太多可比性
MVC之间无依赖关系,MVC之间是协作关系,没有层次的关系。MVC不是分层。
WebForms vs ASP.NET MVC
• WebForms的优点
– 将Web开发抽象成一个组件模型
– 使用方便,入门容易
–使控件产业大大加强
• WebForms的缺点
–封装太强——这还是Web开发吗?
– 入门容易,用好难
– 不易进行单元测试,前后台不易配合
• 不过WebForms也在成长
ASP.NET MVC的优势
• 直接,Web开发就是Web开发
• 易于对界面逻辑进行单元测试
– Design for testability
• 易于后台与前台开发人员的配合
• ASP.NET MVC是在ASP.NET平台下开发Web应用程序的另一选择,并非为了取代WebForms。
ASP.NET MVC的特点
• 一切都是可替换的
– ViewEngine
– Action Filter
• 一切都是可测试的
• 公开源代码
– 可以修改
–不可重新发布
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
//这是一个规则,表示如果抛出异常将由规定页面处理
[HandleError]
/**////
/// HomeController对应Views中的Home文件夹
///
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
// .return View();表示要展现一个aspx页面。
//默认情况下显示同名aspx页面:Views/Home/Index.aspx
//当然你也可以自己指定,例如return View("index1")
//就是显示Views/Home/Index1.aspx
return View();
}
public ActionResult About()
{
return View();
}
}
}