admin 管理员组文章数量: 1184232
2024年4月29日发(作者:html路径怎么设置)
2012年10月
重庆文理学院学报(自然科学版)
Journal of Chongqing University of Arts and Sciences(Natural Science Edition)
0ct..2012
第31卷第5期
V01.31 No.5
基于ThinkPHP与ZendAMF框架的Flex开发
刘 镭 ,林文如
(1.福建师范大学信息技术学院,福建福州350007;2.闽江学院计算机科学系,福建福州 350108)
[摘要]在简要介绍ThinkPHP、ZendAMF和Flex的基础上,提出一种将3个框架整合的开发
方法,并通过一个实例的实现阐述该方法的应用过程,最后从开发效率、请求响应时间两方面,
对比分析使用本文方法和使用传统方法得到的结果.对比分析结果表明,本文方法形成了一套
整合后的敏捷式开发框架,为企业级应用开发提供了一种技术解决方案.
[关键词]ThinkPHP;ZendAMF;Flex;MVC
[中图分类号]TP3ll [文献标志码]A[文章编号]1673—8012(2012)05—0057—05
从MVC的角度看,Flex只是一个客户端表 跨浏览器、桌面和操作系统,实现一致的部署
现层(即View),要真正地实现数据处理,就必须
与服务端程序进行交互¨ .在Flex中运用Zen—
2开发框架整合
dAMF框架进行通信的应用研究较少 .本文将 如上所述,ThinkPHP、ZendAMF、Flex三者之
研究和探讨在ThinkPHP中整合ZendAMF框架
间具有各自的优势,那么如何整合3个框架,为
的方法和实例,为基于Flex的富客户端应用提
企业级应用提供一种敏捷的开发方案,是一个急
供数据交互的能力. 需解决的技术问题.
1开发框架简介
2.1整合思路及方法
ThinkPHP是一个服务端开发框架,封装了
ThinkPHP是一个免费开源的、快速简单的、
CURD和一些常用操作,在查询语言、自动验证、
面向对象的轻量级PHP开发框架,遵循Apache2
视图模型等方面均有独特的表现,即在设计控制
开源协议发布,是为了敏捷Web应用开发和简 器(Controller)与模型(Mode1)方面具有很强的处
化企业应用开发而诞生的,并且集成了许多第三 理能力,但富客户端界面视图(View)方面的表现
方类库 .
则不尽如人意.
AMF协议是Adobe公司的Action Message
ZendAMF也是一个服务端开发框架,本身
Format协议的简称 4 J,主要用于数据交互和远程
并没有处理客户端界面视图方面的能力,但它内
过程调用,在功能上与WebService相当,但AMF
置了Flash对象,可以将服务端的Object、Array、
与WebService中的XML不同,AMF是二进制数 Date、XML等数据传回服务器端,在服务器端自
据,而XML是文本数据,AMF的传输效率比 动解析成适当的对象,这就减轻了开发人员繁复
XML高 .本文所整合的是基于AMF协议的
的工作负担,同时也节省了开发时间.
ZendAMF,该框架在执行效率、稳定性各方面均
Flex是一个富客户端开发框架,先天就缺少
有较大优势.
服务端控制器、模型方面的能力,但在界面视图
Flex是一个高效、免费的开源框架,可用于 方面却有独具一面的优势.
构建具有表现力的Web应用程序.这些应用程 整合3个框架的思路是:将3个框架各自的
序利用Adobe Flash Player和Adobe AIR,运行时 优点抽取出来,分别扮演M(模型)、V(视图)、C
[收稿日期]2012—08—11
[基金项目]计算机应用技术重点学科建设项目(闽高教【2007】4号).
[作者简介]刘镭(1981一),女,辽宁鞍山人,助教,硕士,主要从事软件开发技术方面的研究
57
(控制器)的角色,即ThinkPHP扮演控制器及模
型的角色,ZendAMF扮演控制器网关的角色,
Flex扮演视图的角色.
2.2整合后的开发框架
根据以上分析的结果,整合后的开发框架如
图1所示.
图1框架整合图
如图1所示,整合后的框架使用Flex来代替
ThinkPHP的视图(View)部分,Flex负责前端的
用户交互,ThinkPHP负责服务端的业务逻辑
(Controller)和数据处理(Mode1),ZendAMF的
AMF网关负责架起Flex与ThinkPHP之间通信
的桥梁,通信的方式为Remote Object.用Remote
Object格式来传递数据,适用于大数据量通信的
PRC服务.
框架的操作流程为:Flex客户端通过Zen—
dAMF网关向ThinkPHP控制器发送请求,Think-
PHP控制器根据接收到的请求命令向ThinkPHP
模型发送数据处理指令,ThinkPHP模型通过
ThinkPHP内置的数据库接口向数据库请求数
据,数据库返回的数据通过上述路线原路返回给
Flex客户端界面.
3 应用实例
3.1实例概述 .
为了简明扼要地介绍3种框架整合技术的
实现,又不失一般性,本实例将实现一个简单
的留言板功能模块,包括写留言、查看留言
58
2项操作.
3.2开发环境
在Windows平台下,使用如下开发环境:
Apache 2.2.17+PHP5.3.3+MySQL5.5.8+Thi—
nkPHP2.1+ZendAMF 1.1.1+ZendStudio 9.0.1
+Adobe Flash Builder 4.5.
3.3 实例实现
数据库设计:在MySQL数据库中新建一个
表guestbook,包括3个字段:id、title、content.
在ZendStudio中新建一个本地PHP项目
guestbook,系统自动在web服务器的根目录下建
立一个guestbook文件夹及index.php等文件,将
ThinkPHP框架目录复制到guestbook文件夹内,
并在项目根目录下新建一个W ̄ifrW文件夹.
将ZendAMF框架复制到ThinkPHP\Vendor
目录下(注:ThinkPHP完整版中包含的Zend.
Framework已经包含了ZendAMF).打开index.
php文件,ThinkPHP的人口文件一般写法如下:
<?php
deifne(‘APP_NAME’,’wⅥrw’);
deifne(‘APP—PATH’,’./www’);
require‘./ThinkPHP/ThinkPHP.php’:
App::run();
? >
打开浏览器,在浏览器地址栏中输入ht.
tp://localhost/guestbook,回车执行,若未提示错
误,则表示ThinkPHP框架已经配置成功.在www
\Lib\Action下新建一个控制器,名为GbAction.
class.php的文件,主要代码为:
class GbAction extends Action{
Public function add(MYMdata){
¥gb=M(“guestbook”);
¥gb一>add(¥data):
i
public function getAll(){
¥gb=M(“guestbook”);
¥data=¥gb一>selection();
Return¥data;
}
}
在www\Lib\Action下新建一个控制器,名
为GatewayAction.class.php的文件,代码如下:
class GatewayAction extends Action{
public function index(){
//启用第三方类库ZendAMF
vendor(‘Zend.Amf.Server’):
//导入GbAction控制器
import(‘www.Action.GbAction’);
//ZendAMF服务声明
¥server=new Zend—Amf_Server();
//加入GbAction类
¥servet一>setClass(“GbAction”);
//息动ZendAMF服务
echo(¥server一>handle());
}
}
打开浏览器,在浏览器中输入网址http://
localhost/guestbook/index.php/Gateway/,回车执
行,若浏览器中返回的结果显示“Zend Amf
Endpoint”或者提示下载gateway文件的话,表
明ZendAMF配置成功,并且与ThinkPHP整合
成功.
在Flash Builder中新建一个Flex项目,在窗
口中增加2个Button控件,1个DataGrid控件(id
=
dg),1个Textlnput控件,1个TextArea控件.
由于篇幅关系,本文只列出“查看全部留言”按
钮的实现代码,主要代码如下:
import flash.net.NetConnection;
import flash.net.Responder;
import mx.collections.ArrayCollection;
public vaa"myAMF:string;
myAMF=”http://localhost/guestbook/index.php/in—
dex/Gateway”;
public var conn:NetConnection;
public var rspl:Responder;
[Bindable]
public var data:ArrayCollection;
private function init():void{
rspl=new Responder(onResuhl,onFalse1);
conn=new NetConnection();
conn.connect(myAMF);
}
private function getAllGb():void{
conn.call(“GbAction.getAll”,rsp1);
f
private function onResuhl(result:Object):void{
data=new ArrayCollection();
for(var i:String in result){
data.addltem(result[i]);
}
dg.dataProvider=data;
}
private function onFalsel(theFalse:Object):void{
//如果请求失败,则返回相应的错误信息
}
运行结果如图2所示,当点击按钮时,触发
请求,通过ZendAMF的网关,我们成功地用
ThinkPHP强大的数据模型功能获得服务器数据,
最终返回给Flex显示.
压羲圈
{1
j
11111 111111111
l 2 这是标韪 测试内容0
j{3 ne蟪议 建议内窑,事-瞎很害
l
标题: ne)唾莹议
内容: 建议内容,事情很多I
匝
图2运行界面
4对比分析
在进行对比分析之前,首先给出传统方法和
本文方法的技术简明表,如表1所示.
表1 两种开发方案的技术简明表
针对留言板功能模块,分别使用上述2种方
法进行了开发,运行在相同的服务器及客户端环
境下,下面将从开发效率、请求响应时间两方面
进行对比分析.
4.1开发效率对比
从表2可以看出,模块代码行与模块开发时
间的对比上,本文的方法都明显优于传统的方
法.注:代码行的区别主要体现在服务端PHP的
代码量.
表2开发效率对比表
59
4.2请求响应时间对比
和模型的功能,通过ZendAMF的通信,可为Flex
提供远程数据调用服务,而Flex强大的富客户
端技术又弥补了ThinkPHP中视图(View)的不
从表3可以看出,在小数据量方面,两种方
法的请求响应时间基本一样,无明显差别.但对
于请求大数据的时候,本文方法的请求响应时间
足.本文的方法综合了3者的优势,为敏捷式企
业级应用开发提供了一个较好的技术解决方案.
[参考文献]
[1]吴波.Flex异步通信方式的比较[J].广播与电视技
术.2012(2):133—138.
明显优于传统的方法.注:请求响应时间包括加
载、初始化、执行和模板的响应时间.
表3请求响应时间对比表
[2]徐英钟,陈文竹,张凌霄.基于Flex与PHP的MVC
框架整合应用研究[J].计算机光盘软件与应用,
2010(4):108—109.
[3]Thinkphp团队.ThinkPHP简介[Z/OL].(2010—03
—
09)[2012—05—07].http://www.thinkphp.cn/a・
bout.htm1.2oo8.
[4]易学武.Net平台下的AMF开发[J].电脑知识与技
术,2010,6(23):6615—6617,6520.
5 结语
综上所述,使用ThinkPHP强大的数据操作
[5]陈显军,魏祖宽.基于Flex的XML数据通信与应用
研究[J].计算机与现代化,2008(3):l12一l14.
Flex application development based on ThinkPHP and ZendAMF
LIU Lei .LIN Wen一131
(1.College ofInformation Technology,Fujian Normal University,Fuzhou Fujian 350007,China;
2.Department of Computer S ̄ence,Minj ̄ng University,Fuzhou Fujian 350108,China)
Abstract:In this paper,three frameworks,ThinkPHP,ZendAMF and Flex are introduced briefly,and a de—
velopment method based on the three framework integration is proposed by a sample implement.The devel—
opment eficiency and response tifme are contrasted by using this method and generic method respectively.
he aim of this research is to propose a set of agile development frameworks which provide a technicalT solu’
tion for the enterprise application development.
Key words:ThinkPHP;ZendAMF;Flex;MVC
(责任编辑吴朝平)
版权声明:本文标题:基于ThinkPHP与ZendAMF框架的Flex开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1714393726a678307.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论