AMF

Eddie Kao
Eddie KaoManager at Kaos' Digital Network, Ltd.
用AMF來搭起美麗的橋樑
高見龍
高見龍
http://blog.eddie.com.tw
aquarianboy@ptt
eddie@adcube.com.tw
aquarianboy@plurk
eddiekao@facebook
AMF
AMF = Action Message Format
neither “A”dobe nor “A”ctionscript(雖然它是由Adobe制定的)
wiki上的解釋
Action Message Format (AMF) is a binary format used to
serialize ActionScript objects. It is used primarily to
exchange data between an Adobe Flash application and a remote
service, usually over the internet.
支援各種程式語言
.NET - FluorineFx (LGPL)
PHP - AMFPHP, Zend_Amf, CakeAMFPHP
Python - PyAMF, DjangoAMF
Perl - AMF::Perl
Ruby - RubyAMF
...
其它內容可參閱 http://en.wikipedia.org/wiki/Action_Message_Format
PHP
1. 下載AMFPHP(目前是1.9版)
http://amfphp.sourceforge.net/
2. 把下載下來的壓縮檔解開,放在自己找得到的路徑就行了
例如: http://127.0.0.1/test/amfphp/
3. 順利的話應該可以看到一個Service Browser(flex寫的)
連結: http://127.0.0.1/test/amfphp/browser
4. 在AMF gateway上新增一個服務(放到services資料夾裡)
<?php
class callme
{
function callmeplease($text)
{
return $text;
}
}
5. 重新整理service browser,應該可看到寫寫新增的內容
中文支援問題:
開啟AMFPHP資料夾的gateway.php,應該可以找到一段跟字碼有關的:
$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");
修改成:
$gateway->setCharsetHandler("utf8_decode", "UTF-8", "UTF-8");
或是如果你的PHP模組裡有iconv的話也可以這樣改:
$gateway->setCharsetHandler("iconv","UTF-8","UTF-8");
參考資料:
http://blog.eddie.com.tw/2008/10/12/amfphp-tutorial
使用方法
Django
1. 下載PyAMF(Stable版本 0.51)
http://pyamf.org/community/download.html
2. 解壓縮後,進到資料夾裡執行setup.py或是ez_install進行安裝
3. 為展示目的,建立一個新的django project
參考資料 http://www.eddie.com.tw/course/index.php/Django_index
4. 為展示目的,建立一個新的django app,準備新增AMF service
from pyamf.remoting.gateway.django import DjangoGateway
def amfdemo(req, text):
	 return 'hello from pyamf : ' + text
	
services = {
'callme.callmeplease': amfdemo,
}
AMFGateway = DjangoGateway(services, debug=True)
5. 修改urls.conf
url(r'^gateway/$', 'demoamf.dddd.views.AMFGateway')
使用方法
Ruby on Rails
1. 使用RubyAmf plugin
http://github.com/victorcoder/rubyamf_plugin
2. 為展示目的,建立一個新的RoR project,並進到project中安裝plugin(以rails 2.3.8為例)
script/plugin install git://github.com/victorcoder/rubyamf_plugin.git
3. 安裝成功的話,可看見rubyamf的logo
http://127.0.0.1:3000/rubyamf/gateway/
4. 為展示目的,建立一個controller,並準備新增AMF service
class DemoamfController < ApplicationController
def callmeplease
render :amf => "hello from rubyamf : " + params[0]
end
end
5. 預設的呼叫方法為ControllerName.ActionName
例如: DemoamfController.callmeplease
參考資料:
http://blog.eddie.com.tw/2010/03/18/rubyamf
使用方法
Thank You!
2010/10/27
ADcube Network, Inc.
TEL +886-2-2370-0085 ext.501
FAX +886-2-2370-0125
9F., No.43, Sec. 1, Chongqing S. Rd., Zhongzheng District,
Taipei City 100, Taiwan (R.O.C.)
Welcome to visit http://www.adcube.com.tw for more information!
1 of 13

Recommended

Misunderstanding about flash by
Misunderstanding about flashMisunderstanding about flash
Misunderstanding about flashEddie Kao
1K views35 slides
Phalcon the fastest php framework 阿土伯 by
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯Hash Lin
4.5K views81 slides
Phalcon phpconftw2012 by
Phalcon phpconftw2012Phalcon phpconftw2012
Phalcon phpconftw2012Rack Lin
2.5K views81 slides
Fieldbus intro by
Fieldbus introFieldbus intro
Fieldbus introcri fan
1K views22 slides
Island arch by
Island archIsland arch
Island archfaryang
1.2K views11 slides
PHP & AppServ by
PHP & AppServPHP & AppServ
PHP & AppServHt Wang
1.9K views59 slides

More Related Content

Similar to AMF

从无阻塞并行脚本加载(Lab.js)到浏览器消息模型 by
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
1.2K views66 slides
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp by
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCampimShining @DevCamp
5.8K views41 slides
Regular expression by
Regular expressionRegular expression
Regular expressioncri fan
1K views43 slides
JSFL share by
JSFL shareJSFL share
JSFL shareangelliya00
654 views44 slides
常用开发工具介绍 by
常用开发工具介绍常用开发工具介绍
常用开发工具介绍haozes
751 views11 slides
Avm2虚拟机浅析与as3性能优化 by
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Harvey Zhang
1.3K views61 slides

Similar to AMF(20)

从无阻塞并行脚本加载(Lab.js)到浏览器消息模型 by Jackson Tian
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian1.2K views
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp by imShining @DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
imShining @DevCamp5.8K views
Regular expression by cri fan
Regular expressionRegular expression
Regular expression
cri fan1K views
常用开发工具介绍 by haozes
常用开发工具介绍常用开发工具介绍
常用开发工具介绍
haozes751 views
Avm2虚拟机浅析与as3性能优化 by Harvey Zhang
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang1.3K views
Windows Mobile 多媒體應用程式開發 by 建興 王
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
建興 王1.6K views
廖雪峰 Saa s ovp by drewz lin
廖雪峰 Saa s ovp廖雪峰 Saa s ovp
廖雪峰 Saa s ovp
drewz lin1.3K views
Flex 使用經驗談 by Ticore Shih
Flex 使用經驗談Flex 使用經驗談
Flex 使用經驗談
Ticore Shih2.1K views
Windows Mobile 多媒體應用程式開發 by Chui-Wen Chiu
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu1.1K views
基于Symfony框架下的快速企业级应用开发 by mysqlops
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
mysqlops 1K views
Metro Style Apps from C++ Developers' View by Eric ShangKuan
Metro Style Apps from C++ Developers' ViewMetro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' View
Eric ShangKuan1.1K views
Openshift by mtchang by Chang Mt
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
Chang Mt949 views
啟動 Laravel 與環境設定 by Shengyou Fan
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan52.5K views
makefile20141121 by Kevin Wu
makefile20141121makefile20141121
makefile20141121
Kevin Wu197 views
腾讯大讲堂58 拍拍app platform中间件解决方案简介 by areyouok
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介
areyouok634 views
Introduction To Direct Show by guestce3937
Introduction To  Direct ShowIntroduction To  Direct Show
Introduction To Direct Show
guestce3937421 views

More from Eddie Kao

Rails girls in Taipei by
Rails girls in TaipeiRails girls in Taipei
Rails girls in TaipeiEddie Kao
897 views13 slides
Rails Girls in Taipei by
Rails Girls in TaipeiRails Girls in Taipei
Rails Girls in TaipeiEddie Kao
2.6K views54 slides
Let's Learn Ruby - Basic by
Let's Learn Ruby - BasicLet's Learn Ruby - Basic
Let's Learn Ruby - BasicEddie Kao
3.2K views165 slides
iOS app development and Open Source by
iOS app development and Open SourceiOS app development and Open Source
iOS app development and Open SourceEddie Kao
1.2K views38 slides
Vim by
VimVim
VimEddie Kao
1.7K views99 slides
from Ruby to Objective-C by
from Ruby to Objective-Cfrom Ruby to Objective-C
from Ruby to Objective-CEddie Kao
1.4K views95 slides

More from Eddie Kao(20)

Rails girls in Taipei by Eddie Kao
Rails girls in TaipeiRails girls in Taipei
Rails girls in Taipei
Eddie Kao897 views
Rails Girls in Taipei by Eddie Kao
Rails Girls in TaipeiRails Girls in Taipei
Rails Girls in Taipei
Eddie Kao2.6K views
Let's Learn Ruby - Basic by Eddie Kao
Let's Learn Ruby - BasicLet's Learn Ruby - Basic
Let's Learn Ruby - Basic
Eddie Kao3.2K views
iOS app development and Open Source by Eddie Kao
iOS app development and Open SourceiOS app development and Open Source
iOS app development and Open Source
Eddie Kao1.2K views
from Ruby to Objective-C by Eddie Kao
from Ruby to Objective-Cfrom Ruby to Objective-C
from Ruby to Objective-C
Eddie Kao1.4K views
Code Reading by Eddie Kao
Code ReadingCode Reading
Code Reading
Eddie Kao637 views
CreateJS - from Flash to Javascript by Eddie Kao
CreateJS - from Flash to JavascriptCreateJS - from Flash to Javascript
CreateJS - from Flash to Javascript
Eddie Kao2.3K views
May the source_be_with_you by Eddie Kao
May the source_be_with_youMay the source_be_with_you
May the source_be_with_you
Eddie Kao614 views
Why I use Vim by Eddie Kao
Why I use VimWhy I use Vim
Why I use Vim
Eddie Kao680 views
There is something about Event by Eddie Kao
There is something about EventThere is something about Event
There is something about Event
Eddie Kao573 views
Flash Ecosystem and Open Source by Eddie Kao
Flash Ecosystem and Open SourceFlash Ecosystem and Open Source
Flash Ecosystem and Open Source
Eddie Kao444 views
Happy Programming with CoffeeScript by Eddie Kao
Happy Programming with CoffeeScriptHappy Programming with CoffeeScript
Happy Programming with CoffeeScript
Eddie Kao11K views
Ruby without rails by Eddie Kao
Ruby without railsRuby without rails
Ruby without rails
Eddie Kao1.2K views
CoffeeScript-Ruby-Tuesday by Eddie Kao
CoffeeScript-Ruby-TuesdayCoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-Tuesday
Eddie Kao1.6K views
CoffeeScript by Eddie Kao
CoffeeScriptCoffeeScript
CoffeeScript
Eddie Kao1.2K views
API Design by Eddie Kao
API DesignAPI Design
API Design
Eddie Kao2.8K views
3rd AS Study Group by Eddie Kao
3rd AS Study Group3rd AS Study Group
3rd AS Study Group
Eddie Kao393 views
iOS Game Development with Cocos2d by Eddie Kao
iOS Game Development with Cocos2diOS Game Development with Cocos2d
iOS Game Development with Cocos2d
Eddie Kao1.8K views

AMF

  • 4. AMF = Action Message Format neither “A”dobe nor “A”ctionscript(雖然它是由Adobe制定的)
  • 5. wiki上的解釋 Action Message Format (AMF) is a binary format used to serialize ActionScript objects. It is used primarily to exchange data between an Adobe Flash application and a remote service, usually over the internet.
  • 6. 支援各種程式語言 .NET - FluorineFx (LGPL) PHP - AMFPHP, Zend_Amf, CakeAMFPHP Python - PyAMF, DjangoAMF Perl - AMF::Perl Ruby - RubyAMF ... 其它內容可參閱 http://en.wikipedia.org/wiki/Action_Message_Format
  • 7. PHP
  • 8. 1. 下載AMFPHP(目前是1.9版) http://amfphp.sourceforge.net/ 2. 把下載下來的壓縮檔解開,放在自己找得到的路徑就行了 例如: http://127.0.0.1/test/amfphp/ 3. 順利的話應該可以看到一個Service Browser(flex寫的) 連結: http://127.0.0.1/test/amfphp/browser 4. 在AMF gateway上新增一個服務(放到services資料夾裡) <?php class callme { function callmeplease($text) { return $text; } } 5. 重新整理service browser,應該可看到寫寫新增的內容 中文支援問題: 開啟AMFPHP資料夾的gateway.php,應該可以找到一段跟字碼有關的: $gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1"); 修改成: $gateway->setCharsetHandler("utf8_decode", "UTF-8", "UTF-8"); 或是如果你的PHP模組裡有iconv的話也可以這樣改: $gateway->setCharsetHandler("iconv","UTF-8","UTF-8"); 參考資料: http://blog.eddie.com.tw/2008/10/12/amfphp-tutorial 使用方法
  • 10. 1. 下載PyAMF(Stable版本 0.51) http://pyamf.org/community/download.html 2. 解壓縮後,進到資料夾裡執行setup.py或是ez_install進行安裝 3. 為展示目的,建立一個新的django project 參考資料 http://www.eddie.com.tw/course/index.php/Django_index 4. 為展示目的,建立一個新的django app,準備新增AMF service from pyamf.remoting.gateway.django import DjangoGateway def amfdemo(req, text): return 'hello from pyamf : ' + text services = { 'callme.callmeplease': amfdemo, } AMFGateway = DjangoGateway(services, debug=True) 5. 修改urls.conf url(r'^gateway/$', 'demoamf.dddd.views.AMFGateway') 使用方法
  • 12. 1. 使用RubyAmf plugin http://github.com/victorcoder/rubyamf_plugin 2. 為展示目的,建立一個新的RoR project,並進到project中安裝plugin(以rails 2.3.8為例) script/plugin install git://github.com/victorcoder/rubyamf_plugin.git 3. 安裝成功的話,可看見rubyamf的logo http://127.0.0.1:3000/rubyamf/gateway/ 4. 為展示目的,建立一個controller,並準備新增AMF service class DemoamfController < ApplicationController def callmeplease render :amf => "hello from rubyamf : " + params[0] end end 5. 預設的呼叫方法為ControllerName.ActionName 例如: DemoamfController.callmeplease 參考資料: http://blog.eddie.com.tw/2010/03/18/rubyamf 使用方法
  • 13. Thank You! 2010/10/27 ADcube Network, Inc. TEL +886-2-2370-0085 ext.501 FAX +886-2-2370-0125 9F., No.43, Sec. 1, Chongqing S. Rd., Zhongzheng District, Taipei City 100, Taiwan (R.O.C.) Welcome to visit http://www.adcube.com.tw for more information!