ASP.NET网站制作之.NET的MVVM框架仓酷云
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!Model-View-ViewModel是一种架构形式,次要在WPF、Silverlight和WP7开辟里利用,它的方针是从视图层移除几近一切代码埋没(code-behind)。交互计划师能够专注于利用XAML表达用户体验需求,然后创立和视图模子的绑定,而视图模子则是由使用程序开辟者开辟和保护的。MVVM是加倍通用的Presentation形式的一个详细完成。MVVM视图模子包括观点模子而不是数据模子,一切营业逻辑和别的操纵都是在模子和视图模子里完成的。有良多框架能够做到这点,个中一些是:
开源的
[*]PRISM:由微软供应,和MEF/Unity一同用于依附注进,撑持组合命令,能够扩大。MSDN上有具体的教程和练习训练。
[*]MVVMLightToolkit:有visualStudio和ExpressionBlend的项目和项的模板。更多信息请看这里,别的能够参考VS和ExpressionBlend的利用教程。
[*]CaliburnMicro:撑持视图模子先行(ViewModel-First)和视图先行(View-First)两种开辟体例,经由过程co-routine撑持异步编程。
[*]SimpleMVVMToolkit:供应VS项目和项的模板,依附注进,撑持深拷贝和模子和视图模子之间的属性联系关系。
[*]Catel:包括项目和项的模板,用户控件和企业类库。撑持静态视图模子注进,视图模子的提早加载和考证。还撑持WP7公用的视图模子服务。
闭源的
[*]IntersoftClientUI:付费的,只撑持WPF和Silverlight,可是,除MVVM框架,它还供应别的一些特征。
[*]Vidyano:收费但不开源。带有实体映照/假造耐久化对象(数据容器),营业划定规矩和内置基于ACL的平安特征。
若想懂得MVVM,能够参考以下材料:
[*]LaurentBugnion的《UnderstandingMVVMPattern》和《DeepDiveMVVM》
[*]微软Silverlight组的《UnderstandingtheMVVMPatterninSilverlightApplications》
[*]ErikLebel在InfoQ上的视频演讲《PresentationPattern》
利用MVVM的最年夜优点之一是分别存眷点,以便用户体验计划师和使用程序开辟者能够并行事情。另外一方面,相干的担心包含它关于UI操纵对照复杂的情形有点杀鸡用牛刀的感到,数据绑定有点难以调试,和大批利用数据绑定大概带来功能成绩等等。
JonathanAllen在批评里提到几点毛病利用MVVM的征象:
1.你的模子和视图模子名字不异。
视图模子不该该是对模子的包装。视图模子的职责是内部服务的哀求中介,好比加载和保留数据。而数据自己,和考证和年夜多半营业逻辑应当放在模子里。
我常常夸大这点。每当你创立一个视图模子包装一个模子,你就在你的API里引进一个伟大毛病。详细地,任何间接援用这个模子的工具都大概以视图模子没法发觉的体例改动某个属性,因而UI也不会有响应的改动。一样地,模子里盘算字段的任何变动也不会回传给视图模子。
2.你的视图和视图模子名字不异。
幻想的情形下,视图模子是不晓得利用它们的视图的,特别是WPF使用程序有多个窗口共享不异的视图模子。
关于对照小型的使用程序来讲,全部使用程序大概只需一个视图模子。关于对照年夜型的使用程序来讲,次要功效大概必要一个视图模子,每一个主要方面也必要一个,好比设置办理。
3.你没有代码埋没。
代码埋没既非一个好的工具,亦非一个坏的工具。它只是一个用来安排和视图或控件相干的逻辑的中央。因而,当我看到一个视图没有任何代码埋没,我就会即刻反省是不是存在以下成绩:
[*]视图模子是不是经由过程名字打仗了特定的控件?
[*]视图模子是不是经由过程命令参数会见控件?
[*]是不是利用了EventToCommand或别的能够招致保守的举动而不是复杂的事务处置程序?
MVVMLight的EventToCommand很有成绩,由于它会使得控件从屏幕移除以后没法被渣滓接纳。
4.视图模子监听属性变动关照
假如一个模子的的性命周期比监听它的事务的视图模子长,那末大概招致内存保守。分歧于视图有个Unloaded事务,视图模子关于性命周期办理没有很好的计划。因而假如它们联系关系到存活期比它们更长的视图模子的事务,视图模子将会呈现保守。
检察英文原文:MVVMFrameworksFor.NET
译者李永伦李永伦,从02年入手下手存眷.NET,读过4年工商办理,任过3届微软MVP,比来迷上WindowsPhone和Ruby。
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具) 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
页:
[1]