基于Flex与PHP的MVC框架整合应用研究

(整期优先)网络出版时间:2010-04-14
/ 3

基于Flex与PHP的MVC框架整合应用研究

徐英钟,陈文竹,张凌霄

徐英钟,陈文竹,张凌霄

(华中师范大学,武汉430079)

摘要:MVC(模型-视图-控制器)是一种得到了广泛应用的经典复合程序设计模式,使用MVC设计模式能够为软件开发带来低耦合性、高重用性和可适用性、良好的维护性、有利于软件工程化管理等诸多好处,本文探讨了基于PHP的Thinkphp框架和基于Flex的PureMVC框架及其整合应用,对Amfphp和HttpService方式下客户端与服务端的通信效率进行了实验和测试,当通信量较大或者是网络通信环境比较差的时候AMF对通信质量的改善是很有帮助的。

关键词:MVC;PHP;FLEX;框架

中图分类号:TP314文献标识码:A文章编号:1007-9599(2010)04-0000-02

MVCFrameworkApplication&StudyBasedonFlex&PHP

XuYingzhong,ChenWenzhu,ZhangLingxiao

(CentralChinaNormalUniversity,Wuhan430079,China)

Abstract:MVC(Model-View-Controller)isaclassic,sophisticatedandwidelyusedprogrammingdesignpattern.Comparedwithtraditionalsoftwaredevelopmentmodel,ithasabetterperformanceofdecoupling,reusablitiy,maintainability,extendibilityandsoon.ThispaperproposesahybridMVCframeworkwhichcombinestwoMVCframeworks-ThinkphpbasedonPHPandPureMVCbasedonFlex,anddiscussestheefficiencyofcommunicationbetweenserverandclientimplementedbyAmfphpandHttpServicerespectively.TheempiricalanalysisandexperimentalresultsshowthatAmfphpoutperformsthelatter.Theconclusionishelpfulespeciallyundertherelativelypoornetworkenvironment.

Keywords:MVC;PHP;Flex;Framework

MVC框架是在开发分工越来越明确的情况下产生的,MVC结构提供了一种按功能对各种对象进行层次分割的方法(这些对象是用来维护和表现数据的),其目的是为了将各对象间的耦合程度减至最小,MVC是程序设计发展的一种趋势。

一、MVC设计模式

MVC模式是1970年由TrygveReenskaug在施乐公司的研究中心提出的。最早的参考例程代码是用smalltalk80编写的。它最初是用来解决应用软件中的用户图形界面的交互问题的。MVC设计模式的基本原理是把应用程序的数据和业务逻辑、数据的外观呈现以及对数据的操作划分到不同的实体中去,这些实体称为模型、视图和控制器。

MVC模式的核心思想是分离责任,使得数据、视图和逻辑部分分开,模型层关心的只是应用的状态以及业务逻辑而不用考虑数据如何展现给用户;视图层关心的是的只是如何根据模型的变化为用户提供用户界面;控制层则负责接收用户的输入然后将其交给对应的模型,它并不关心用户如何输入以及这些输入数据是如何作用于模型的。

模型(Model):业务逻辑和数据。

视图(View):用户界面。

控制器(Controller):接收、识别请求并在模型和视图间建立映射关系。

图1.MVC模型原理

如图展示的是MVC模型的基本流程,首先,用户通过视图输入发送请求,控制器接收到请求之后会调用对应的模型来执行一定的业务逻辑,执行完后模型返回数据,此时控制器再调用对应的视图,视图会负责对模型数据进行格式化最终展现给用户。MVC是程序设计的一种思想或模式,对于各种不同编程语言的不同的MVC框架,由于这些平台自身具有的一些特性,它们在实现方式上可能会有一些不同,比如在Flex中,更推荐直接使用数据绑定的方式来对视图进行更新。

二、基于MVC设计模式的ThinkPHP框架

(一)Thinkphp简介

目前主流的基于PHP的MVC框架有ZendFramework、CakePHP、QeePHP等等,ThinkPHP也是其中之一,它借鉴了许多国外的优秀框架和模式,融合了Structs的Action思想、JSP的TagLib、RoR的ORM映射与ActiveRecord模式,封装了CURD和一些常用数据库操作,在项目配置、类库导入、模版引擎、查询语言、数据验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有不错的表现。

(二)Thinkphp工作流程

图3.Thinkphp工作流程

如图,当用户向服务器发出了一个HTTP请求之后,前端控制器会对URL进行分析,调用Dispatcher将任务派发给对应的模块(动作控制器,Controller),接着该模块会根据业务流程的需要选择性地调用业务模型(Model),并将用户提交的数据传递给它,接着调用视图(View)对业务模型中返回的数据进行格式化输出,最终把输出结果返回至客户端。

三、PureMVC框架

(一)Flex技术

Flex是一种基于标准编程模型的高效RIA开发产品集,最初由Macromedia公司在2004年发布。一个完整的Flex程序由MXML代码和ActionScript代码组成。MXML与HTML类似,是基于XML的标记语言,MXML用来在FLEX中设计用户界面,FlexFramework中提供了非常丰富的UI组件。和Flash一样,Flex项目最终会被编译成*.swf文件,由FlashPlayer解释运行。

(二)PureMVC简介

PureMVC是一款通用型MVC框架,最初基于ActionScript,现在已经移植到几乎所有的主流平台。在PureMVC中,同样是通过MVC三层设计来降低模块间的耦合性,Model、View和Controller分别对应3个类,即Proxy、Mediator、Command,另外,Façade层将这三者统一起来,使用过程中只需要通过一个Façade类来对它们进行操作,这样能够简化应用程序的开发。

(三)pureMVC工作流程

图4.PureMVC工作流程

如图4,程序初始化时,ApplicationFacade会负责初始化整个MVC,包括生成Proxy、注册各个Command和Mediator。当UIComponent与用户交互时,UI组件会将Event派发出去,对应的Mediator接收到Event后,可以生成Notification并通过该Notification的Body携带参数,然后通过PureMVC的Notification系统广播该消息,注册了这个Notification(或称对该Notification感兴趣)的Command或者Mediator将会作出响应,Mediator可以更新UI,Command可以操作Proxy去更新数据,与服务端的交互是在Proxy内部完成的,当数据更新后,Proxy可以再发出一个Notification,对其感兴趣的Command或者Mediator会作出响应,如此,PureMVC不断运行下去。

四、整合应用

(一)Flex与PHP的通信方式

Flex使用RPC(RemoteProcedureCall)方式与外部程序交互数据,RPC通信是一个异步过程,客户端把数据请求发送给服务端然后等待返回结果。Flex与服务端的通信方式有三种:

通信方式

数据格式

通信协议

XML

SOAP

XML或Json

HTTP

任意

AMF

表1.Flex与PHP的通信方式

WebService是网络应用程序的标准,它向外部暴露能够通过Web进行调用的API集合,我们可以通过调用其API来获取需要的数据。HttpService是最常用的一种方式,通过向服务端提交POST或GET形式的请求来获取数据。RemoteObject是Flex中一种特殊的通信方式,使用Adobe自定义的二进制数据通信协议AMF(ActionMessageFormat)与服务端交互,可以交换任意类型的数据,包括对象、图片等等。

(二)框架整合

图5.PureMVC与Thinkphp整合框架

如图5,整合后的PureMVC与Thinkphp,使用PureMVC来替代Thinkphp的视图(View)部分,在工作时两个框架各司其职,pureMVC负责前端的用户交互,Thinkphp负责服务端的业务逻辑和数据,gateway.php相当于服务端的入口,客户端的proxy负责与其通信,通信方式可以是HttpService、WebService以及RemoteObject。

五、结束语

随着富互联网技术的迅速发展,出现了客户端MVC框架,本文分别探讨了基于PHP的Thinkphp框架和基于Flex的PureMVC框架,提出了整合应用服务端与客户端MVC框架的方案,并对AMFPHP和HttpService方式下客户端与服务端的通信效率进行了实验和测试,当通信量较大或者是网络通信环境比较差的时候AMF对通信质量的改善是很有帮助的。

参考文献:

[1]叶建芳.应用FLEX技术构建RIA系统[D].浙江大学,2006

[2]JasonE.Sweat.php|architect’sGuidetoPHPDesignPatterns[M].Toronto:MacroTabini&Associates,2005

[3]袁梅冷,黄烟波,黄家林.J2EE应用模型中MVC软件体系结构的研究与应用[J].计算机应用研究,2003,20,3:147-149

作者简介:

徐英钟(1989-),男,湖北十堰人,本科,华中师范大学信息技术系,Web信息系统与智能计算,