Flash务实主义(四)――Flash中的MVC
2011年04月20日
FLASH与传统环境的不同点 MVC最早在1979年的时候第一次被人提出。不过,当时还不存在网络应用的概念。之后当万维网诞生之后,又过了很长时间……
它并不是自诞生就开始流行的,而改变的原因很简单――因为两个极其流行的开发框架包含了这种模式,它们就是:Struts 和 Ruby on Rails。之后,模仿者蜂拥而至。所以,在人们眼里看来,实际上是先有的Struts,然后才有的MVC,也无怪乎MVC的概念会始终沾染着Web概念,乃至和一些框架附加内容牵涉不清。
因为Struts很好用,别的不说,至少让HTML显得干净了很多。所以很多人都在用Struts,这未必是因为需要MVC模式,而是因为他们需要Struts。因此,当环境变化后,我们不使用Struts而是在使用一些其他的框架的时候,是否还应该像以前那样使用MVC框架就成为了一个问题。因为环境不同,即使在其他语言中使用MVC框架很普遍,也不代表在新环境里同样应该是如此。
AS3与传统语言的不同点:
AS3是单一语言环境,多层代码混在一起问题没那么严重。AS3正常情况都是一次性编译全部代码,即使用了MVC框架还是需要一起编译。单独编译一个模块减少编译时间有别的办法,不需要依赖MVC。AS3本身的事件和动态特性和一些框架的功能重复。AS3目前的框架还很不成熟,没有提供比较醒目的功能。结果是,至少,目前AS3的MVC框架比起传统语言并没有那么突出的作用,就算用了,也不会像Struts那样有质的变化。而且,至少在我看来,AS3的框架使用成本却不见得比Struts低。两者相减,结果就很麻烦了。
而且,AS3在不使用框架的时候有它自己的优势,使用框架会毁掉这些优点:
有一个相对还可以的调试器,使用了框架会调试上产生麻烦,主要体现在单步调试步骤变多的问题上。阻碍使用IDE的功能。以Flex Builder为例,你可以通过Ctrl+单击(F4)跳转到指定方法的具体实现,通过搜索引用面板从方法的实现跳转到调用方法的位置。使用框架后,这些功能都会失效。Flex framework相关功能会难以使用,诸如绑定。而且,Flex Builder支持拖拽式的将数据接口绑定到视图的功能,可以部分实现零代码编程,框架也会阻碍这个过程。 此外,企业应用和网站还好说,游戏还有另一种情况。游戏的结构并不同于原来的专门用于呈现数据的结构,可能也就是其中的用户界面(User Interface)部分和以前的结构比较类似,其他的诸如地图,诸如人物,无论怎么想也无法套用MVC框架,首先从效率上就说不过去。举个例子,一个项目有3个客户端人员在开发,一个在做地图,一个在做战斗,一个在做UI。前两者都和MVC没什么关系,结果只有一个人在用MVC框架开发界面……而且,开发前两者的时候,开发以及协作难度其实是比开发界面要高的,既然他们都搞定了,为什么开发界面的人还必须靠框架辅助才能解决这个问题?
这使得FLASH比起一般的情况,会更加不适合使用MVC框架。
不使用现有框架并非无法实现MVC 既然我在说框架不好用。那么不用框架,我们又该怎么做呢?
实际上,如果你只是想实现单纯的模型―视图―控制器(Model View Controller)分工职守,它只是一个架构模式而已。将模型和视图的代码分开,并提出控制器的代码,然后互相调用各自方法就算完事了。Model的全部引用放在固定的位置,View的引用使用静态属性储存或者用管理类管理,Command可以作为函数或者类直接初始化并执行,亦可以通过反射。这并不需要专门的工具类来辅助,附加成本也比较小,自然就可以适用于任何规模的项目。
当然,你可以实现一个简单的通信框架,提供必要的功能,如果你需要的话。这和使用一些专门的MVC框架需要的成本是完全不同的。
然而,我的意见则是――MVC是非常好的架构模式,不管什么样的项目都建议尝试使用,但是用框架的话,请务必谨慎。
关于最简的MVC,最近看到一个让人很
发表评论
-
《Windows 核心编程》 -- 内核对象 --札记
2012-01-20 10:13 967《Windows 核心编程》 -- 内核对象 --札记 20 ... -
SDK网络连接/多线程示例代码
2012-01-20 10:13 691SDK网络连接/多线程示例代码 2010年06月09日 ... -
多线程编程(一)――CreateThread
2012-01-20 10:13 975多线程编程(一)――Creat ... -
CWinThread类,以及和createthread API的区别
2012-01-20 10:13 976CWinThread类,以及和createthread API ... -
FCKEditor 2.6.4 Asp.net上传文件没有权限解决
2012-01-20 10:13 767FCKEditor 2.6.4 Asp.net上传文件没有权限 ... -
只学一点点:我的技术学习策略
2012-01-19 15:13 636只学一点点:我的技术学 ... -
Flash Flex 国际化问题解决方案大全
2012-01-19 15:13 1091Flash Flex 国际化问题解 ... -
flex 问题
2012-01-19 15:13 599flex 问题 2011年04月04日 ... -
一名优秀的Flex开发者需要知道的10样东西
2012-01-19 15:13 587一名优秀的Flex开发者需要知道的10样东西 2010年06 ... -
最全的文件扩展名大全(二)
2012-01-17 05:00 868最全的文件扩展名大全(二) 2010年11月13日 PD ... -
DirectUI 的初步分析
2012-01-17 05:00 871DirectUI 的初步分析 2011年05月04日 D ... -
什么软件支持什么格式
2012-01-17 05:00 808什么软件支持什么格式 ... -
eclipse工具使用技巧&关联Android源码
2012-01-17 05:00 853eclipse工具使用技巧&关联Android源码 ... -
FMS客户端ActionScript 语言的参考
2012-01-16 03:51 740FMS客户端ActionScript 语言 ... -
Learning Flash Media Server 3中文版-第4章之2/6
2012-01-16 03:51 661Learning Flash Media Server 3 ... -
fms远程共享对象
2012-01-16 03:51 718fms远程共享对象 2011年0 ... -
FMS/red5客户端信息对象
2012-01-16 03:51 1332FMS/red5客户端信息对象 2010年11月16日 ... -
FMS_api
2012-01-16 03:51 726FMS_api 2010年03月11日 //====== ...
相关推荐
flash cookie 完整例子(as源码、mvc3.0源码) 环境:window 2008操作系统、flex bulider3.0 兼容火狐、谷歌、IE、360、safari、opera
附件是关于 Flash/Flex 几个重要框架 Cairngorm、Mate、PureMVC以及Swiz 的典型例子,由 Tony Hillerson 提供 Homepage: http://insideria.com
mvc,mvc手册cakephp中文手册mvc,mvc手册cakephp中文手册mvc,mvc手册cakephp中文手册mvc,mvc手册cakephp中文手册mvc,mvc手册cakephp中文手册
asp.net mvc中实现CKEditor+CKFinder上传图片及Flash
//拍照 $("#btn_shoot").click(function () { webcam.freeze(); $("#shoot").hide(); $("#upload").show(); return false; }); //重拍 $('#btn_cancel').click(function () { webcam.reset();...
ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程
swing中的mvc实例 mvc在swing中的体现
mvc模式mvc模式mvc模式mvc模式mvc模式mvc模式mvc模式mvc模式mvc模式
mvc 代码mvc 代码mvc 代码mvc 代码mvc 代码mvc 代码
KFC(java MVC Flash报表),采用function chart完成的3D Flash报表程序!内有详细的完成源码和数据库文件,欢迎大家支持........
flash里用到的mvc模式。仔细看看还是不错的
PureMVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架,这种开源框架是免费的,它最初是执行的ActionScript 3语言使用的Adobe Flex、Flash和AIR,现在已经移植到几乎所有主要的发展平台,目前支持两...
MVC 中使用扩展方法, ASP.NET + MVC5 入门完整教程四---MVC 中使用扩展方法 源代码
asp中MVC2框架中一次性多图片flash选择上传,同时运用拦截机制。
PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助PureMVC中文帮助
在GridView中使用MVC的例子在GridView中使用MVC的例子在GridView中使用MVC的例子在GridView中使用MVC的例子在GridView中使用MVC的例子
jsp计算器 带按键界面的mvc模式web计算器
J2EE中MVC三层架构的实现 1、课堂实践内容: JSP+持久层结构存在的问题 解决方法 J2EE的MVC架构(持久层+Jsp+Servlet) 图书列表功能MVC实现 图书修改功能MVC实现
coremvc php中的mvc更好的技术支持
本案例演示了MVC如何设置跨域。