惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - 大熊(BigBear)

ADO.net实现批量SQL操作. - 大熊(BigBear) - 博客园 Application_AcquireRequestState事件,导致Ajax客户端不能加载 CSLA.Net在Web项目中使用SQL2005的分页 Moss中Form验证中"找不到匹配项"问题的处理 对于知识库系统建设的思考 知识管理中知识地图详解〔转〕 知识管理中的一些概念 Aop面向方面编程之PostSharp框架 [摘]IIS上部署WCF的问题 Linq使用之分组 Silverlight表格绑定中的一点细节处理 页面加载性能的优化 由一棵树绑定引发的遐想 IBatis.Net使用MemCached替换内置缓存策略 .Net下调用Java安全Web服务 Webpart深入(二) Webpart深入(一) ASP.NET MVC 中文文档3 ASP.NET MVC 中文文档2
ASP.net MVC 中文文档1
大熊(BigBear) · 2008-10-31 · via 博客园 - 大熊(BigBear)

喜欢MVC的轻快优雅,所以把官方的翻译一下,分几次发上来:

ASP.NET Model-View-Controller Applications

介绍

Model-View-Controller (MVC) 模式分类了一个 MVC Web application的各个组件. 这种分离让你对每个独立的部分有了更多的控制,这能让你更容易的开发、修改、测试他们。
下面的主题描述了 ASP.NET MVC framework 和如何创建一个MVC applications. 以及如何创建 MVC 单元测试项目,可以让你使用测试驱动的开发技术 (TDD) 来开发 MVC applications.另外, 还告诉你如何通过使用controller-actionframework-helper方法来渲染views. 也解释了如何用action filters来限制对 action 方法的访问, 处理错误,缓存action方法的输出, 以及如何通过优先级来控制filters程序是在action 方法运行之前还是之后来执行.

ASP.NET MVC 概览

Introduction

Model-View-Controller (MVC) 架构模式将一个应用程序分离成主要的三个组件: the model, the view, and the controller. ASP.NET MVC 框架提供了一种ASP.NET Web Forms模式的替换,让你可以创建给予MVC Web应用. ASP.NET MVC 框架是一个轻量级的, 高可测试性的显示框架,并集成了现有的ASP.NET 特性, 比如 master pages membership-based 权限. MVC framework 定义在System.Web.Mvc 命名空间,以System.Web 空间为基础和支撑.

MVC

是一个许多开发人员都熟悉的开发模式.一些类型的Web应用将会受益于MVC framework. 一些将继续使用传统的基于Web Forms postbacks ASP.NET application 模式. 另外一些将同时使用两种类型,他们互相并不排斥.

MVC framework

包含下边的这些组件:

 

Models. Model 对象程序中实现逻辑和数据域的地方. 通常, model 对象检索和存储 model 状态到数据库. 例如,一个产品对象需要从数据库中检索信息,对它进行操作, 并把信息更新会数据库中的Products.

在小型项目中, model通常是一个概念上的分离,而不是在物理上存在. 例如, 如果一个程序仅仅是读取dataset 和发送数据到 view, 这个程序没有一个物理上的 model 层以及相关的类. 在这种情况下, dataset 就取代了model 对象的角色。

Views. Views 是用来显示程序的用户界面的部分(UI). 典型的, UI是从model 数据中创建的. 比方说一个Products表的编辑视图显示text boxes, drop-down lists, and check boxes,是基于Products对象的当前状态的.

Controllers. Controllers 是用来处理用户交互,与model 协同工作,决定选择哪个View来渲染UI的组件. MVC程序中, view只负责显示信息; controller 负责处理、响应用户输入、交互. 比如, controller 处理query-string 的值, 并传递这些值到model, 以用来查询数据库。

MVC 模式可以帮助你创建关注分离的应用(输入逻辑, 商务逻辑, UI逻辑), 这些元素之间是松耦合的. 这个模式指定了每种逻辑应该放在应用程序的什么位置. UI逻辑属于view. Input逻辑属于controller. 商业逻辑属于model. 这种分离能帮助你管理程序中的复杂性, 因为它允许你在某个时间点只关注实现的一个方面. 比如, 你可以焦点在view而不用依赖逻辑层.在管理复杂性上, MVC模式比Web Forms更易测试. 比如, Web Forms,单个类被同时用来显示输出和响应用户输入. 编写Web Forms自动测试是复杂的,因为测试一个独立的页面, 你必须实例化page,所有的子控件,和依赖的其他类. 因为这么多类都要实例化来运行这个页面, 很难为程序中独立的部分写出排他的测试用例来. Web Forms写测试用例要比MVC难得多. 此外, 测试Web Forms需要一个Web server. MVC 框架解耦了各个组件而且强烈依赖接口, 这样就可以测试独立的一个组件而把框架的其他部分隔离开来.

MVC

中三个组件的松耦合也促进了平行开发. 例如,一个开发人员开发view, 第二个开发人员可以开发controller的逻辑, 第三个开发人员可以关注model中的商业逻辑。

决定什么时候来创建一个 MVC Application

你需要仔细考虑实现一个Web application到底是用ASP.NET MVC还是Web Forms. MVC并不能替代Web Forms; 你可以同时使用. (如果你已有一个基于Web Forms的程序,他们能像往常一样运行良好.)在你决定使用MVC或者Web Forms,请衡量各自的优点。

基于MVCWeb程序的优点

ASP.NET MVC提供了以下优点:

通过分离一个程序为model, the view, controller,将更容易管理其复杂性.

它不使用view state 和服务端表单. 这对于想完全控制程序行为的开发人员来说MVC更加理想.

它使用前置控制模式通过单个的控制器来处理Web请求. 这让你可以设计一个程序来支持丰富的路由功能. 更多信息, 请看 Front Controller MSDN 网站.

对测试驱动的开发提供更好的支持 (TDD).

它支持大团队开发,并给那些需要高度控制程序行为的开发者提供了更多的支持.

基于Web Forms Web程序的优点

Web Forms提供以下优点:

它支持事件模型在HTTP协议下保持状态信息, line-of-business Web程序开发从中受益. Web Forms提供了一系列的事件来支持成千上百的服务端控件.

他使用Page Controller 模式来添加功能到单独的页面. 更多信息, Page Controller MSDN网站.

它使用view state和服务端表单, 让状态管理更容易.

在小型开发团队中他工作良好,而且设计人员可以以利用大量的组件来进行快速的开发.

通常, 用它开发程序更简单, 因为组件高度集成而且比起MVC通常代码量更少.

ASP.NET MVC的特性

ASP.NET MVC提供以下特性:

分离的程序任务(输入逻辑, 商务逻辑, UI逻辑), 可测试得, 测试驱动的开发 (TDD). MVC中所有的核心契约都是基于接口的而且能使用模拟对象进行测试, 这些模拟对象可以模仿实际对象的行为. 你可以对controllers进行单元测试并不需要启动ASP.NET进程, 这让单元测试更快更富弹性. 你可以使用任何兼容.NET的测试框架.

是一个可扩展的插件化的框架. ASP.NET MVC的组件被设计成很容易替换和自定义的. 你可以插入你自己的视图引擎, URL路由策略, action-method参数序列化, 和其他组件. ASP.NET MVC也支持依赖注入 (DI)反转控制(IOC)容器模式. DI允许你注入对象到类, 而不必自己创建它的实例. IOC指出如果一个对象需要另一个对象, 第一个对象可获得第二个对象通过外部来源,比如一个配置文件.这让测试更容易.

更强大的URL映射组件让你的程序拥有可理解的可查询的URLs. URLs不包含文件扩展名, 且设计成URL 命名模式在搜索引擎中得到优化 (SEO) 表象化状态转变(REST)的地址.

支持ASP.NET中已存在的页标记 (.aspx文件), 用户控件 (.ascx 文件), 模板页 (.master 文件). 你可以使用已有的ASP.NET的特征, 比如嵌套模板页, in-line 表达式 (<%= %>), 声明的服务端控件, 模板, 数据绑定, 定位, 等等.

支持已有的ASP.NET特征. ASP.NET MVC forms验证 Windows 授权, URL 授权, membership,  角色, 输出缓存, session profile 状态管理, 健康监视, 配置系统, provider架构.