All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net通用数据库访问类[精]_[Asp.Net教程]
asp.net2.0中创建Crystal报表的实例
解决sql,server挂起_mssql学习_编程技术
将GridView内容导出到Excel或Word中_[Asp.Net教程]
HTML组件HTML COMPONENTS之五_[Html教程]
用PHP实现登陆验证码(类似条行码状)_[PHP教程]
ASP.NET Remoting体系结构(七)
PHP技巧:PHP中几种删除目录的三种方法_[PHP教程]
PHP实例:用PHP简单实现多条件查询_[PHP教程]
Linux+MYSQL+Apache+PHP的安装_php资料_编程技术
Reading number is top 10 pictures
30 beautiful school beauty2
On the verge of extinction of the beach1
Ashlynn Brooke photograph of a group2
宝贝系列
泳装名模阿尔贝特妮写真
Street street fighting
The terra-cotta warriors2
The hot big eye big breast beauty2
Tie a large font of mouse
这年头,找个靠谱的妹子太难了
Download software ranking
matrix3
卡丁车单机版
The Bermuda triangle3
The cock of the Grosvenor LTD handsome
Tram sex maniac 2 (H) rar bag9
XML+Web+Service开发教程
小黑猫大战两米大花蛇
Dance with duck(male prostitution)
Unix video tutorial4
JSP+Ajax Web development typical examples
归海一刀 published in(发表于) 2014/1/30 0:52:41 Edit(编辑)
ASP.NET,MVC,框架_[Asp.Net教程]

ASP.NET,MVC,框架_[Asp.Net教程]

ASP.NET MVC 框架_[Asp.Net教程]

【原文地址】ASP.NET MVC Framework
【原文发表日期】 Sunday, October 14, 2007 10:41 PM


过去的几年里,很多人要求ASP.NET的一件事情就是对使用基于model-view-controller(模型-视图-控制器,简称MVC)架构来开发web应用的内置支持。


上个周末在Austin举行的Alt.NET大会上,我首次对我的团队正在开发的新ASP.NET MVC 框架作了一个公开的演示。你可以在Scott Hanselman这里的博客上观看我的讲座的录像。


我们将在今年稍后发布该框架的一个公开预览版,然后在明年的上半年将它作为完全支持的ASP.NET特性推出。


模型-视图-控制器(MVC)框架是什么东西?


MVC是个将一个应用的实现分成三个组件角色的框架技术:模型,视图和控制器。



  • 在基于MVC的应用里,Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中(譬如,我们也许会有一个Product(产品)类用来代表SQL中的Products数据表中的订单数据)。


  • 在基于MVC的应用里,View(视图)是负责显示用户界面的组件。这个UI通常是使用模型数据来创建的(譬如,我们也许会生成一个Product"编辑"视图,根据当前Product对象的状态,显示文本框,下拉框和复选框等)。


  • 在基于MVC的应用里,Controller(控制器)是处理用户交互,操作模型和最终选择用哪个视图来显示UI的组件。在MVC应用中,视图只是用来显示信息而已,是控制器来处理和回应用户的输入和交互的。

使用MVC方法的一个好处是,它有助于促进应用中模型,视图,控制器间的关注的清晰分离。保持关注的清晰分离使得对应用的测试极其容易,因为不同应用组件间的契约的定义和表达是更明确的。


MVC模式也有利于促进红/绿式测试驱动的开发 (TDD),通过它,你可以在你实际编写应用代码本身之前首先实现自动化的单元测试,这些单元测试定义和核实了新代码的需求。


ASP.NET MVC 框架的一些简要细节


在几个星期后,相关代码可以下载之后,我将写一些关于这个新的ASP.NET MVC 框架的深入性的教程贴子(与此同时,想进一步了解它的最佳方式是观看我的Alt.net讲座的录像):


这里是关于ASP.NET MVC 框架的一些简要细节:



  • 它将促进清晰的关注分离,可测试性,和TDD。MVC框架中的所以核心契约都是基于接口的,可以轻易地通过mock来模拟(包括基于接口的IHttpRequest/IHttpResponse这些基本的东西)。你可以不用在ASP.NET进程中运行控制器(这使得单元测试很快),就单元测试你的应用。你可以使用你想使用的任何单元测试框架来做单元测试,包括NUnit, MBUnit, MS Test等等。


  • 这个框架具有高度的可扩展性和可插拔性。MVC框架中所有的东西都是这样设计的,它们可以被轻易地替换掉或者定制(譬如,你可以插入你自己的视图引擎,路径转向策略(routing policy),参数序列化等等)。它还支持使用现有的依赖注入(dependency injection)和控制反转(IOC)容器模型(Windsor, Spring.Net, NHibernate等等)。


  • 它包括一个非常强大的URL映射组件,允许你使用非常干净的URL来建造应用。URL不需要拥有文件扩展,是设计来轻松支持SEO和REST友好的命名模式的。譬如,在我上面的项目中,我可以轻松地把/products/edit/4映射到ProductsController类的Edit方法上,或者把 /Blogs/scottgu/10-10-2007/SomeTopic/ 映射到BlogEngineController类的DisplayPost方法上。


  • MVC框架支持将现有的ASP.NET .ASPX, .ASCX,和 .Master 标识文件当作视图模板(view template)之用(这意味着你可以轻松地使用很多现有的ASP.NET特性,象嵌套的母版页,<%= %>块 ,声明式服务控件,模板,数据绑定,本地化等等)。但是,它不使用现有的将交互返回服务器的postback模型,取而代之的是,你将把用户的所有交互转给控制器类来调度,这有助于关注的清晰分离和提高可测试性(这也意味着,在基于MVC的视图内没有viewstate或page的生命周期之说)。


  • ASP.NET MVC框架将完全支持象forms/windows认证,URL授权,成员/角色,输出和数据缓存,session/profile状态管理,健康监测,配置系统,以及provider架构等等现有的ASP.NET特性。

结语


如果你正在想使用MVC方式建造你的web应用的话,我认为你会发现这个新的 ASP.NET MVC 框架选项非常干净,而且容易使用。它将允许你在你的应用中很轻易地保持关注分离,而且有助于进行干净的测试和TDD。


几个星期之后,我将撰文说明新的MVC特性的工作原理,以及如何利用它们。


希望本文对你有所帮助,


Scott


【附】 Scott Guthrie对一些评语的答复:
1. 【问】你可以在现有的ASPX,ASCX等。。。里使用声明式服务控件,假如服务控件需要ViewState和Page的生命周期才能工作的话,那么在基于MVC的视图里使用服务器控件的后果是?
【答】视图本身是标准的.aspx, .ascx, .master文件,所以还是有对应的后台(code-behind)类,你可以在其中处理控件的render事件,以把视图的markup与视图的显示逻辑干净地分开。
至于声明式控件,控件模型对建造控件而言还是一样的,区别是,你不能使用postback特性。从逻辑上说,这就象今天创建一个没有的aspx网页类似。所以象以及其他的控件依旧还会工作,你要使用标准的表单提交或 url来做post操作。
我们也会提供一些对MVC有意识的服务器控件,可以用于没有postback的视图页面里,它们将与基于控制器的逻辑很干净地集成。
2. 【问】MVC框架是否会包括在VS 2008 RTM里?

【答】 MVC框架可以在VS 2008 RTM下工作,我们将在发布VS 2008 RTM的同时,发布第一个预览版。MVC框架本身先会居于一个单独的程序集中,然后会变成.NET 3.5 SP1的一部分。
3. 【问】假如我们使用MVC框架,我们是不是又回到原地了?还是会提供给我们这些认为生命是短暂的人一些适当的好处?用个比喻,我可不想每次冲淋浴,就要重建水龙头(taps)。
【答】注意,MVC框架并不替代现有的web form模型,很明显,我们将继续完全支持并增强web form模型的功能。所有,假如你喜欢控件postback式交互的话,我大概会建议你还是继续目前的做法,使用基于MVP的模型来做测试。
而MVC模型的确在显示HTML方面给你更多的控制。但就象你注意到的,这既有好处也有坏处,好处是你有更多的控制,坏处是,控制越多,你需要照顾的东西也越多。我们将提供很好的方式来处理错误和保持表单状态,这样你就不用写些丑陋的编码来处理这些东西了。对你的界面来说,服务器控件模型还是很好地提供了非常干净的方式来封装视图辅助(view-helper)功能,而且我们将提供一套丰富的控件来辅助你。
4. 【问】Brail视图引擎有一样好处是,视图是独立于主要应用被编译的,所以假如你对视图做了改动,它可以立刻被重新编译。我假定基于DLR的视图没有被编译,但在aspx视图的情形下,改动视图是否需要重新装载应用而导致长时间的延缓呢?假如不需要的话就太好了。
【答】当.aspx网页被改动后, ASP.NET监测到其变化后,会自动为它生成一个新的程序集。那样,我们就不需要重新启动应用了。在基于DLR的.aspx网页的情形下,实际上我们根本不创建程序集,而可以在内存里对它们做编译,基于IronPython的.aspx 网页就是这样工作的。
注意,因为ASP.NET MVC框架是可以插拔的,你可以选用MonoRail Brail视图引擎来显示你的视图。所以如果你喜欢Brail模型的话,还是可以继续和新的MVC框架协同工作的。

5.【问】对MVC有意识的服务器控件能否可以从模型验证来推出自动的客户端验证(譬如通过CSS属性)?
【答】我们会研究,在可能的情况下,从模型的验证,来允许处理错误的客户端样式和客户端JavaScript错误验证。但这个不会出现在几个星期后的第一个预览版里,但这是我们近期看过的,以后会再研究。
6.【问】你是可以讨论一下MVC中DLR,动态语言,LINQ和Asp.Net futures的支持?

【答】LINQ肯定会在MVC框架内完全支持,我们也会增加DLR支持,允许你使用包括IronPython和IronRuby在内的动态语言建造视图和控制器。
7.【问】象UpdatePanel和其他依赖于postback模型的跟AJAX有关的特性将会得到什么样的支持?

【答】UpdatePanel确实使用postback,所以你无法直接在基于MVC的视图里使用那个控件。但我们将提供一个跟该控件类似功能的控件以及相关的辅助方法。它会调用控制器的一个方法,允许你非常容易地做局部更新。它将允许你非常轻松地使用ASP.NET AJAX库。在几个星期之后我会写博客讨论更多细节。
8.【问】你的讲座录像里的视图代码看上去非常危险地象是老的asp(没有.net)。monorail nvelocity也是如此。我希望你能综合两者的好处哦。
【答】有些人喜欢<%= %>模型,在alt.net大会上我演示MVC模型讲座的参与者都要我使用这种方法(所以我写了那样的代码),我也可以使用来做列表,通过code-behind来做数据绑定,这允许你更清晰地构造你的视图显示代码。
9.【问】我只是好奇,你需要对内层代码做多少改动才能使得声明式服务器控件在不使用postback模型的情形下工作?ASP.NET MVC会在没有的页面上支持现有的服务器控件么?我们是否能够在同一个页面上使用多个HTML表单?
【答】我们实际上不用改动内层代码来支持MVC框架,ASP.NET 实际上已经包含大部分所需的hook了。
ASP.NET MVC框架将允许你在同一个页面里使用多个HTML表单。象和其他支持只读模式的控件完全没问题,但倚重于Postback的控件是无法支持postback操作的。
10.【问】我注意到你在ALT.NET的演示里,你从控制器里往视图里以 new {"value", "value2"}的形式传递匿名类型。我的印象是,匿名类型是无法传到一个方法的范围之外的。你能解释一下么?
【答】匿名类型是可以传到他们所在范围之外的,但类型名称是未知的(譬如,你可以以Object类型的形式传递或返回这些对象)。
我使用的辅助方法接受一个object作为可选的参数类型,然后使用IDictionary或反射获取其中的名称/数组对。所以我可以写
<%= Html.Link("Push Me", new { Action="Edit", ID=p.ProductId }); %>

来源:scottgu的blog





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.