实现FLEX 通过AMF跟PHP通信

uuq 2010-10-03 12:37:44
AMF flex一种远调用协议

目标:目前基本使用AMF3

queryphp amf插件从symfony 的sfAmfPlugin移植过来

amf调用跟 远程过程调用(RPC)差不多。

服务文件放在框架项目 lib/services
或框架目录lib framework/lib/services 没有建一个

如果flex生成的swf和amf调用地址不在同域名,请放一个
crossdomain.xml 文件在URL根目录

crossdomain.xml内容如下
我在本地虚拟了一个域名guofang.com
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*.guofang.com" />
</cross-domain-policy>
我们在framework/lib/services 建一个HelloWorldService.class.php文件
没有services目录自己建一个就可以了插件会搜索这里的

HelloWorldService.class.php内容如下
class HelloWorldService extends sfAmfService { 
public function sayHello($who) {
return "Hello ".$who; //直接返回名字
}
}
我们只要几行代码就可以调用服务文件了。我们在某个项目中调用比如project/router目录下面

路由文件调用内容如下amfRouter.class.php
<?php 
class amfRouter extends controller{
public function index()
{
//加载amf插件
import('@plugin.amf.sfAmfGateway');
//调用amf插件
$gateway = new sfAmfGateway();
//输出内容 $gateway->service();为返回内容
//handleRequest 中自动调用 header(SabreAMF_Const::MIMETYPE);
//因为我没有别的内容输出了所以直接输出内容
$gateway->handleRequest();
Return 'ajax';
}
}
?>
访问地址记下来,我的是 http://www.guofang.com/project/amf/index


现在我们做前端部分flex 程序

flex 前端文件程序

目标:学会编写flex 程序



其实感觉flex比js好多了,不会有浏览器兼容问题
而且还自带虚拟机,UI很漂亮
缺点是不能到处画UI,不像js那么方便,特别是jQuery很方便做动画效果

我们可以在网上下载flex builder4 安装好,和输入注册码

我们创建一个amftest项目



创建好mxml文件注意命名input的ID名字,如下面样子

amftest.mxml内容如下

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.controls.Alert;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private function sayHello():void {
var remote:RemoteObject = new RemoteObject("helloworld");
remote.source = "HelloWorldService";
remote.addEventListener("result", function (event:ResultEvent):void {
result.text = event.result.toString();
});
remote.addEventListener("fault", function(event:FaultEvent):void {
Alert.show(event.fault.toString(), "Error");
});
remote.sayHello(username.text);
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<s:TextInput x="246" y="88" id="username"/>
<s:TextInput x="245" y="140" id="result"/>
<s:TextInput x="246" y="191" id="fault"/>
<s:Button x="423" y="85" click="sayHello();" label="按钮"/>
<s:Label x="171" y="88" text="输入名字" width="63" height="24"/>
<s:Label x="179" y="140" text="结果" width="58" height="22"/>
<s:Label x="182" y="195" text="失败" width="58" height="22"/>

</s:Application>
services-config.xml是Remoting设置文件,本测试我们只操作这两个文件就可以了,注意services-config.xml可以导进来
在编译时候我们要把services-config.xml编译上去 加上:-services services-config.xml参数




//多个service 服务文件URL可以如下这样添加
//红色表示amf文件地址,注意换成你自己的域名
//上面var remote:RemoteObject = new RemoteObject("helloworld"); 中的helloworld就是下面id="helloworld"名


services-config.xml内容如下
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="helloworld-service"
class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="helloworld">
<channels>
<channel ref="helloworld-channel"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
<service id="flextest-service"
class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="flextest">
<channels>
<channel ref="flextest-channel"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="flextest-channel"
class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://www.guofang.com/project/amf/index" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
<channel-definition id="helloworld-channel"
class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://www.guofang.com/project/amf/index" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>

我们编译调试之前还要设置下服务器,当然可以编译出来再拷过去就可以的



我们开始编译了。如果修改了最好是清除项目已生成的文件
项目->clean选择你的项目就可以了
将会生成如下图样子。浏览器访问
http://www.guofang.com/flex/amftest.html
就可以看到生成好的flex了,可以测试有没有问题



可以到http://code.google.com/p/queryphp/downloads/list
下载queryphp1.0 beta2

...全文
393 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
船员 2010-12-22
  • 打赏
  • 举报
回复
需求中。
一、5G技术的发展简介2018年6月,5G NR独立组网标准冻结,标志着5G时代的来临。5G仅仅是比4G的网速更快吗?绝非如此。5G不仅提供了极高的网速,而且将网络时延、可靠性、容量等性能大幅提升,使得5G成为一个万物互联的平台,从而可以极大地推动大量相关产业的发展。中国信息通信研究院在其研究报告中称:“第五代移动通信技术(5G)正在阔步前行,它将以全新的网络架构,提供至少十倍于4G 的峰值速率、毫秒级的传输时延和千亿级的连接能力,开启万物广泛互联、人机深度交互的新时代。”中国电信在其《5G技术白皮书》中也写道:“5G将是引领科技创新、实现产业升级、发展新经济的基础性平台”。  由此可以看到,5G技术的应用,将不再局限于用户间的通信联系以及个人用户的信息获取,而是渗透到了诸多行业,满足各种行业应用的通信需求,从而推动整个社会的智能化进程,这将是一场广泛而深刻的通信变革。二、本课程的特色这门课程,是我花费了大量的时间,在阅读了大量的资料的基础上,精心编写、录制而成的。这门课程的目标人群是那些已经有了一定的移动通信知识,但对5g网络尚未有系统了解和掌握的朋友们。在编写课件的过程中,我力争做到深入浅出,既能把技术问题探讨到一定的深度,不流于肤浅,又能易于理解,避免晦涩难懂。从内容的选择上,我力争做到全面而系统,对于5G的组网策略、核心网、接入网、承载网、网络切片技术、大规模MIMO和移动边缘计算等内容都纳入了课程内容。如果各位认真地学完这门课程,我想您会对5G移动通信技术有一个相当程度的了解和掌握,您会感到“课有所值”。三、本课程主要内容本课程包括八个方面的内容:1、从1G到5G在这一部分主要讲述了蜂窝移动通信系统的基本概念,1G、2G、3G、4G和5G移动通信系统的特点、发展演变的过程,以及5G的三大应用场景—eMBB(增强移动宽带)、mMTC(海量大连接)、URLLC(低时延高可靠),并以VR/AR(虚拟现实/增强现实)、智能家居、农业传感、智能制造、自动驾驶等具体应用来说明5G在垂直行业的应用场景。2、5G的独立组网和非独立组网模式主要讲述5G的组网方案,包括独立组网的2种模式和非独立组网的3个系列8种模式。课程中对各种组网方式的网络结构、优缺点、对业务的支持情况等进行了详细的分析,讲解了双连接、用户面、控制面、锚点等概念,并且对目前5G网络运营商如何选择各种组网模式进行了介绍。3、5G核心网解析主要讲述5G核心网SBA(基于服务的架构)、网络功能虚拟化、微服务、NF的调用、CUPS(控制面和用户面分离)、网络切片等内容,课程中对5G核心网的总体结构和各个NF(NSSF、NEF、NRF、PCF、UDM、AUSF、AMF、SMF、UPF)的作用都进行了讲解。4、5G接入网架构在这一部分,首先为大家回顾了从2G到4G接入网的发展过程,简述了它们各自的结构和特点。接下来,重点讲解了5G接入网的总体架构,CU、DU、AAU的作用,以及它们之间的功能划分。最后介绍了5G标准支持的多种接入网设备部署方案,包括CU/DU合设的两种方案和CU/DU分设的两种方案,以及它们各自的特点和适用场景。5、5G承载网作为移动通信网的三大子网之一,5G时代的承载网同样需要向前演进。这部分课程首先讲解了5G网络对承载网在带宽、时延、时间同步和网络切片等方面的性能需求。在参考大量文献资料的基础上,我尽量将这些性能需求量化,以期达到能够对实际工作起到指导和参考的作用。在带宽需求方面,针对前传、中传和回传网,分别给出了带宽需求的范围。接下来,课程讲解了5G承载网的技术实现方案,包括前传网的三种技术方案:光纤直连、无源WDM和有源OTN,以及中传和回传网络的通用分层结构、PAM4技术、FLEX-E技术、SR技术等,并介绍了中国移动、中国电信和中国联通的5G中、回传网技术方案:SPN(切片分组网络)、M-OTN(面向移动承载优化的OTN)和IP RAN增强,讲解了这三种技术的发展由来和技术特点。6、MIMO及大规模MIMO技术这一章包括四个部分的内容。第一部分是MIMO技术的原理,主要讲述了MIMO技术的基本概念、历史发展、对网络性能的改善(提高系统容量、对抗多经衰落、降低系统内干扰)等。第二部分讲MIMO技术的应用,主要包括MIMO技术的三种应用方式—空间复用、传输分集和波束成形的技术特点和优势,以及MIMO技术在WLAN、3G、B3G和4G系统的应用。第三部分讲解大规模MIMO技术的原理,包括它的技术特点、对系统性能的改善(信道容量大幅增加、波束更窄、系统内干扰更低、可实现3D波束赋形)以及它的缺点(算法复杂度高等)。第四部分是大规模MIMO技术的应用,主要介绍了它在4G和5G网络的应用,分析了大规模MIMO技术对4G网络容量提升的实测结果。7、5G网络切片技术这一章首先介绍了在5G网络中引入网络切片技术的必要性,以及网络切片技术的定义等内容,然后讲解了实现网络切片的技术基础。网络切片的实现,需要两个主要的技术来支撑,一个是NFV(网络功能虚拟化),另外一个是SDN(软件定义网络),课程中对这两项技术进行了比较详细的介绍。最后讲述了5G网络切片的实现,内容包括核心网切片、接入网切片以及承载网切片的实现,涉及到网络切片的选择、GROUP A、B、C三种切片构成方式、子载波间隔的选择等内容。8、5G与移动边缘计算这一章首先介绍了MEC(移动边缘计算)的起源和发展,追溯了IBM与诺基亚西门子开发的最早的MEC,ETSI在MEC方面的工作,以及3GPP在4G和5G标准中关于MEC的相关内容。接下来,讲解了MEC在5G网络的部署,包括边缘级、区域级和地区级MEC三种部署方式以及它们的适用场景。最后列举了一些具体的应用场景来说明MEC的应用情况,包括视频优化加速、车联网、VR直播和视频优化分析。四、讲师简介老铁于1991年毕业于南开大学电子系。从1994年开始,进入移动通信行业,先后在摩托罗拉公司、中国联通和中国电信的省级公司工作。2011年进入高校,从事移动通信相关课程的教学工作。       在联通和电信工作期间,老铁从事过移动通信网络的建设、规划、优化等工作,可以说在移动通信网络技术方面积累了比较丰富的知识和经验。在联通工作期间,参加过许多技术项目,也获得了一些奖项,包括中国通信标准化协会颁发的科学技术奖一等奖、信息产业部颁发的“CDMA网络创新贡献”奖,以及中国联通的“科技进步奖”三等奖。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧