《圣殿祭司的ASP.NET4.0专家技术手册》----1-1 ASP.NET平台的三分天下

1-1 ASP.NET平台的三分天下

圣殿祭司的ASP.NET4.0专家技术手册
如果访问微软www.asp.net网站,会发现ASP.NET技术目前有3位成员:Web Form、MVC和Web Pages,如图1-1所示。它们各有不同的定位与特色,彼此的开发方式也不相同。目前,使用人数与市场占有率最高的仍是Web Form,而MVC近两年有不少技术玩家和项目采用,至于Web Pages,则是另外的Web Matrix开发工具预定的网页开发技术,它走更易于使用的开发路线。

你心里可能有疑问:“为什么微软要将ASP.NET分成3块,如何选择与适从?”这是一个很好的问题。下面,先简单介绍这几种技术的由来。

(1)ASP.NET最早的成功是基于ASP.NET Web Form的,它是使用Web Form + 一堆好用的控件 + Code-Behind模式的Managed Code + 易学易用。这使得ASP.NET迅速攻占全球市场,甚至成为企业开发主力。

(2)后来推出ASP.NET MVC是因为JSP或PHP使用MVC模式已行之多年,但微软长久以来一直欠缺MVC Framework这块,故多年后终于发展出自己的ASP.NET MVC 1.0,目前正式版是ASP.NET MVC 4.0,以满足ASP.NET开发人员多年期盼的MVC框架。

(3)至于Web Matrix和Web Pages的开发,算是另一种简化与尝试,适合那些觉得传统ASP.NET开发还是太难的人员。这会让他们得到较为简单的工具与开发模式。

1-1-1 多元或纷乱的局面

虽说不同的技术是为了满足不同喜好的人,但毕竟会形成多元或纷乱的局面(许多事之间往往只有一线之隔),这种事很难事先逆料,必须视后续发展才能概括论定。例如,有的ASP.NET MVC用户,会有种莫名优势感,宣称MVC才是王道,Web Form发展不下去的言论。但事实上,这些都不代表微软态度与立场,官方一直以来的立场是:“多一个选择!”以此满足不同的开发者,而不是扶植谁或消灭谁,所以,应以中庸之道观之,以平等心去看待多元的技术,就不会为此感到烦恼。

本书通篇是以Web Form技术为主,而以下会约略介绍MVC与Web Pages技术,以满足读者的求知欲。MVC这篇是笔者为微软台湾MSDN电子报所写的一篇专栏,以美国总部ASP.NET的RD团队观点来陈述ASP.NET MVC的技术定位。

1-1-2 ASP.NET MVC技术定位与抉择

在2009年4月,微软正式推出了ASP.NET MVC Framework,它是一个以MVC设计模式为理念的网页开发技术,MVC是“Model-View-Controller”3个单词前缀的缩写。这个设计模式的主要精神,在于将Web应用程序,依其特性区分为3大类功能块,View是表示层UI接口;Controller则是负责用户与系统之间的互动,如图1-2所示。例如,Input及Output都是由Controller统筹,最后Model则表示业务逻辑与数据处理。

然而MVC设计模式并不是什么新的概念,也不是什么新的创举,它是由Trygve Reenskaug于1978年所提出,当初是为了“缩小人类精神面Mental Model与数字系统Digital Model间的鸿沟”这个议题,企图通过MVC功能性的分层归类,而达到一个较好的系统设计与互动模型。MVC设计模式从首次提出到现在,已超过30年以上,在计算机科学的领域中,可谓是前辈级的技术。它对今日Web开发技术有着极为深远的影响,处处都可以看到MVC设计模式的影子,实现或提供MVC Framework的解决方案不计其数,例如,在Java领域有Struts、Tapestry与Spring等17种;PHP领域有Zend Framework、Zoop Framework等40种;Ruby领域有Ruby on Rails与Merb等7种,其余在ColdFusion、Flex、Python领域亦是不胜枚举。

在每种主流语言领域,都有MVC Framework解决方案,故微软自是不能缺席,于是也推出了ASP.NET MVC Framework解决方案,企图满足不同程序员及项目开发需求。但对于ASP.NET MVC的诞生,全球ASP.NET程序员第一个反应,多数人不是立即热烈拥抱或额首称庆,反而是一连串疑惑,担心现有的ASP.NET Web Form是否要改朝换代?或者是ASP.NET MVC将主导未来势力?现有的ASP.NET技术投资将白费?是否该全面转换到MVC的跑道?若要看透这种种的不安与疑惑,得从ASP.NET MVC的技术定位及特性来看,深入了解后,心中那团谜雾自会烟消云散。

微软对ASP.NET MVC Framework的定位是什么?答案很简单,就是“多一个选择!”并清楚指出,在未来,现有ASP.NET Web Form及控件技术的使用率仍会占多数,且会持续大力投资,没有任何改朝换代的计划;但对于喜欢MVC设计模式的企业级程序员,将会多一个选择,可以在MVC设计模式中获得他们想要的优点与元素,以更灵活的方式来面对不同项目开发需求。那你一定想知道,ASP.NET Web Form与ASP.NET MVC二者之间究竟有什么差异,有什么是现有Web Form及控件技术做不到的,或者说力犹未逮的,非得再另外推出一个ASP.NET MVC选择?以下说明ASP.NET MVC的优点与利益:

1.以MVC开发的Web在维护上较为容易
由于MVC天生采用模块化设计,故会自动隔离表示层、用户Input互动逻辑层、数据访问层之间的高度依赖性,变成松散耦合的系统设计,因此在系统后续的维护、升级与软件修正上,相对较为容易。

2.可完全掌控网页细部运作及高度定制化
由于ASP.NET MVC的网页设计,不依赖传统的ASP.NET控件,强调inline Code的Markup精神,以及Controller及Model的种种自定义,所以可以对网页细部运作有更强的掌控力,以及深入定制化的能力。

3.ASP.NET MVC可整合运用ASP.NET核心功能
虽然ASP.NET MVC不依赖传统的ASP.NET控件,但不意味着全然放弃原本ASP.NET基础架构,因为它仍然可使用原本ASP.NET诸多核心功能,例如,Forms authentication、Windows authentication、URL authorization、Membership、Roles、Output与Data Caching、Session与Profile State Management、Health Monitoring、Configuration System及Provider Architecture,所以使用ASP.NET MVC技术,依然要使用熟悉的ASP.NET技能。

4.MVC设计模式有助于增进团队协同开发
由于MVC本身就是分层设计的思维,因此,很适合多人同时进行的团队开发工作,例如,可以将View表示层部分交由Designer设计人员,而Model及Controller则交由多个程序员来进行,让团队协同开发工作可以同步进行,功能模块也更容易切割,交由不同人来开发。

5.MVC开发模式让测试驱动式开发式或单元测式变得容易
由于MVC的程序有明确的功能性区分,以及不依赖原有Web Form架构,因此,在程序测试的层面,你可以采用事后的单元测试,或者是事前的测试驱动开发(Test Driven Development,TDD),种种的测试工作在MVC的模式下,都会变得十分容易。

在初步了解ASP.NET MVC设计的优点之后,你一定会面临抉择上的问题,无论是学习或者实务运用上,希望能快速分辨二者的选用时机,以下是说明:

使用ASP.NET Web Form技术的时机。
如果你是属于以下几种情况的用户,建议继续采用ASP.NET Web Form的开发模式,因为这会比较符合你实际的需求与特性。

(1)快速建立网站与完成项目工作对你而言,其重要性远大于对网站技术细节的控制力。

(2)喜欢ASP.NET丰富控件所带来的快速构建能力,以及控件隐藏底层技术复杂度与抽象化运作,让你专注于工作的本身,而非繁琐的程序运行细节。

(3)对于Code-Behind程序写作的喜好,大过于inline Code,甚至是想尽量避免inline Code的写作模式。

(4)对于设计模式的开发模式不感兴趣,甚至是对MVC设计模式根本不熟悉,也不想了解太多。

使用ASP.NET MVC技术的时机。
如果你符合以下几种特质,那ASP.NET MVC将会十分适合你的需求。

(1)希望通过Markup程序的编写,取得网页运作的完全控制力,甚至不惜多花费一些额外力气与时间来完成MVC设计模式的工作。

(2)不喜欢ASP.NET控件的底层抽象化运行,喜欢透明及全面性的掌控力。

(3)不介意inline Code程序编写风格。

(4)喜欢设计模式的程序开发模式,特别是对MVC明确功能性分层的设计模式有着高度偏好。

(5)期望日后应用程序有较佳的维护性与升级性。

(6)希望程序可以有较好的测试性,或者是让测试过程变得简单与顺利。

最后总结,ASP.NET MVC带来了新的选择性,打破从前ASP.NET Web Form独占的局面,让企业或程序员可以在两种模式中取舍,而非取代彼此,因此,喜欢原有ASP.NET Web Form的人,可以继续保有原本技能,而想要MVC独特利益的人,可以尝试新的设计手法,二者可视时机交互选择运用,完全不相冲突,最重要的是,在未来ASP.NET世代,二者都会被重视,持续做功能性的改良与进化,将ASP.NET最好的功能面呈现给各位!

1-1-3 Web Matrix与Web Pages

Web Matrix是一套免费、轻量级、易于使用的网站开发工具,它内建IIS Express、Web Framework及SQL Server Compact数据库。而Web Pages是Web Matrix默认采用的网页技术。Web Matrix不包含在Visual Studio中,而是另一套独立的开发工具,可在以下网址下载安装。安装后,其启动界面如图1-3所示。

http://www.asp.net/web-pages
执行Web Matrix开发工具,例如,选择【模板】→【照片库】,如图1-4所示,然后Web Matrix会建立一个网页电子相簿的模板网站,供你使用或修改。而每个Web Page的扩展名是.cshtml(Web Matrix目前只支持C#语言),并使用Razor语法,如图1-5所示。

但深入介绍Web Matrix及Web Pages不是本书重点,故以下仅以一个范例让各位体验Web Pages及Razor语法的应用。

范例1-1 在ASP.NET项目使用Web Page及Razor语法
ASP.NET 4.0项目也能使用Web Page及Razor语法,请参考WebPage.cshtml程序,具体步骤如下。

F:\20100708-Nancy-AEL010800\ICON\STEP01.tif加入Web Pages页面

在ASP.NET项目中加入一个网页(Razor)页面,命名为“WebPage.cshtml”,如图1-6所示。

F:\20100708-Nancy-AEL010800\ICON\STEP02.tif 以Razor语法编写Web Page网页

在Web Page中以Razor语法编写以下程序,用来显示变量及图片数据:

- 01   <!--声明Razor语法-->
02   <!--单行变量定义-->
03   @{ var Name="圣殿祭司" ;}
04   <!--多行变量定义-->
05   @{ var Mobile = "0955168888";
06     var Gender = true;
07     var Height = 180;
08     var Weight = 75;
09     var GenderInfo="";
10     if (Gender==true)
11     {
12         GenderInfo = "男性";
13     }
14     else
15     {
16         GenderInfo = "女性";
17     }
18
19     var ImageUrl =  "https://public.bay.livefilestore.com/y1pXTIK0XPispFw39cSWlcUEg3TJ7UId72JRVa2
 LjP8sbNw1iSJgjj8ZdFUkEMy_uXd74u3AwXlDgkuXZH_OQ/Naruto.png?psid=1";
}
21
22 <!DOCTYPE html>
23 <html>
24     <head>
25         <title>Razor语法</title>
26     </head>
27     <body>
28         <!--显示个人资料--->
29         <h2>Web Pages的Razor语法应用</h2>
30         Hello @Name ! 今年是 @DateTime.Now.Year 年,你的个人资料如下:<br />
31         <ul>
32             <li>手机:@Mobile </li>
33             <li>性别:@GenderInfo </li>
34             <li>身高:@Height </li>
35             <li>体重:@Weight </li>
36         </ul>
37         <img src="@ImageUrl" alt="" />
38     </body>
39 </html>

程序说明

程序中以@开头的是变量,在执行时就会替换成实际数值。

程序的执行结果如图1-7所示。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-11-08 18:22:22

《圣殿祭司的ASP.NET4.0专家技术手册》----1-1 ASP.NET平台的三分天下的相关文章

《圣殿祭司的ASP.NET4.0专家技术手册》----1-3 ASP.NET 4.0技术概览

1-3 ASP.NET 4.0技术概览 圣殿祭司的ASP.NET4.0专家技术手册 1-3 ASP.NET 4.0技术概览ASP.NET 4.0技术概览 ASP.NET 4.0是在ASP.NET 2.0及3.5基础上,添加了一些新技术,一方面保持适当幅度创新,另一方面也保持对旧版本的兼容与延续性.例如,图表控件的内建.Silverlight 5.ASP.NET AJAX 4.0.jQuery.C# 4.0.VB 10.F#.IronPython.IronRuby.LINQ.Entity Fram

《圣殿祭司的ASP.NET4.0专家技术手册》----1-12 ASP.NET程序的编译模型

1-12 ASP.NET程序的编译模型 圣殿祭司的ASP.NET4.0专家技术手册 ASP.NET 4.0支持两种编译模型:动态编译(Dynamic Compilation)与预编译(Precompilation),让你来决定不同网站何时该用何种编译模型,不但灵活性提升,且若采用预编译网站,执行性能还可以更高. 1-12-1 ASP.NET网站动态编译 动态编译是用户第一次浏览网站时,ASP.NET会将网站程序编译成一个dll组件文件,后续的请求就会以此组件来响应,而编译过后的网站执行性能明显较

《圣殿祭司的ASP.NET4.0专家技术手册》---- 1-6 VS 2010 SP1安装与三个扩展管理工具

1-6 VS 2010 SP1安装与三个扩展管理工具 圣殿祭司的ASP.NET4.0专家技术手册 2011年3月,微软推出VS 2010 SP1软件补丁,里面包含许多新功能与问题修正,其中与Web开发相关新功能有: IIS 7.5 Express精简版网页服务器的支持(IIS 7.5 Express需额外下载安装): SQL Server CE 4.0的支持(SQL Server CE 4.0需额外下载安装): Razor语法支持: 可部署的依赖性支持(Deployable dependenci

《圣殿祭司的ASP.NET4.0专家技术手册》----1-2 .NET 4.0平台新功能概览

1-2 .NET 4.0平台新功能概览 圣殿祭司的ASP.NET4.0专家技术手册 .NET平台版本从1.0.1.1.2.0.3.0.3.5不断演进.最新4.0版的重要改进如下: NET Framework 4.0 Visual C# 2010 Visual Basic 2010 Visual F# 2010(或F# 2.0) 新的CLR 4.0运行时 DLR动态语言运行时(Dynamic Language Runtime) ASP.NET 4.0 ASP.NET MVC 2.0(最新版为4.0

《圣殿祭司的ASP.NET4.0专家技术手册》----2-4 DLR动态执行环境

2-4 DLR动态执行环境 圣殿祭司的ASP.NET4.0专家技术手册 在.NET 4.0平台下有3个重要动态角色:①dynamic动态类型.②IronPython与IronRuby动态语言.③DLR(Dynamic Language Runtime)动态执行环境,前两者之所以能够存在,在于DLR的创建,DLR克服了原本.NET平台无法支持动态语言的限制,在DLR基础架构的支持下,便能衍生出动态类型.动态语言的诸多应用,如图2-2所示. 微软列举DLR的好处有: 简化将动态语言移植到.NET F

《圣殿祭司的ASP.NET4.0专家技术手册》----2-3 C# 4.0静态基础融入动态能力

2-3 C# 4.0静态基础融入动态能力 圣殿祭司的ASP.NET4.0专家技术手册 在了解静态与动态语言后,大家直觉上可能会以为这是二元的对立,非黑即白,不是静态语言,就是动态语言.但您是否想过静态和动态之间是可以兼具或混合的可能性?例如,静态语言为获取动态语言优点,而融入了一些动态语言的功能,然后又保持静态语言的优势,如类型安全.优化.高效率. 是的,.NET 4.0正是以这个方向去改造,在原本C#.VB静态语言基础上,加上动态语言的一些特性与优势,这样就达到以静态为主,动态为辅之目的,让C

《圣殿祭司的ASP.NET4.0专家技术手册》----1-8 .NET 4.0内建的图表控件

1-8 .NET 4.0内建的图表控件 圣殿祭司的ASP.NET4.0专家技术手册 以往ASP.NET 3.5要使用图表控件,必须再另外下载安装,但到了.NET 4.0,图表控件已变成内建,在ASP.NET 4.0项目中就可以直接使用,如图1-17所示,省去了很多麻烦. .NET 4.0图表控件联机帮助文件: http://msdn.microsoft.com/zh-tw/library/dd456632.aspx .NET 3.5图表控件范例程序: http://goo.gl/Pz4I1 .N

《圣殿祭司的ASP.NET4.0专家技术手册》----2-1 C# 4.0语言新功能

2-1 C# 4.0语言新功能 圣殿祭司的ASP.NET4.0专家技术手册 C# 4.0新增的语言功能,除了命名实参和可选实参(VB早已支持)较为常用,其他功能几乎是从动态基础衍生出来的便利性或灵活性,新功能如下: 命名实参和可选实参(Named and Optional Arguments): Dynamic动态类型(Dynamic Type): 共变量与反变量(Covariance and Contravariance): Office可程序性支持(Office Programmabilit

《圣殿祭司的ASP.NET4.0专家技术手册》----1-15 将ASP.NET程序开发服务器Port固定的技巧

1-15 将ASP.NET程序开发服务器Port固定的技巧 圣殿祭司的ASP.NET4.0专家技术手册 如果项目以"文件系统"建立,则网页执行时会使用Visual Studio内建的"ASP.NET程序开发服务器",这样便解决了操作系统无IIS服务器的困扰,但有的人问:"能否将Port固定下来?"因为变动的Port,有时要以完整路径引用参考目录下的照片或CSS设置就会产生困扰(如/Images/Pic01.jpg或/Css/WebSite.css