blog.Ring.idv.tw

Remoting

LoadVars vs. Flash Remoting

從標題「LoadVars vs. Flash Remoting」來看,我想這絕對夠直覺本文想要表達的是什麼~沒錯~ Flash可以藉由著許多種方式和後端程式溝通,尤其是採用loadVariables、LoadVars這種純文字(Plain Text)方式的傳輸最便利使用,然而它真的是純文字嗎?而Flash Remoting真的就是用binary format來傳輸嗎?

本文將藉由著Ethereal封包捕捉工具來協助我們探討底層的傳輸格式~

LoadVars - Plain Text

我們寫一個簡單的小範例來做測試~

Flash ActionScript

var data_lv:LoadVars = new LoadVars();
data_lv.name = "Flash";
data_lv.sendAndLoad("http://localhost/LoadVars.php",data_lv,"POST");
data_lv.onLoad = function(success)
{
	if(success)
	{
		trace("Loaded!");
		trace(this.value);
	}else{
		trace("Failed!");
	}
}

PHP (LoadVars.php)

<?php
	echo "&value=Hello! " . $_POST['name'];
?>

Ethereal捕捉請求封包(Plain Text)

Ethereal捕捉回應封包(Plain Text)

從上述所捕捉的封包很明確的,在請求時送出「name=Flash」,而在接收時則為「&value=Hello! Flash」,兩者的確都是採用純文字的方式來傳輸~

Flash Remoting - AMF3

Flash ActionScript

var myService = new NetConnection()
myService.connect("http://localhost/amfphp/gateway.php");
var responder = new Responder(onResult, onFault);
myService.call("Hello.sayHello", responder,"Java");
function onResult(result)
{
	trace(result);
}
function onFault(f:Event )
{
	trace("There was a problem: " + f.description);
}
stop();

PHP (Hello.php)

<?php
class Hello
{
	function sayHello($name)
	{
		return "Hello! $name";
	}
}
?>

Ethereal捕捉請求封包(AMF)

Ethereal捕捉回應封包(AMF)

(反白區就是請求與回應的位元組)

所以從上述所捕捉的封包來看~ Flash Remoting的確是採用binary format來傳輸,然而這只是一個簡單的小範例,所以尚無法將Remoting的優點發揮出來~

而筆者比較感興趣的地方就在於請求封包中的前二個位元組分別為「0x00、0x03」,其實這就是代表著此傳輸的AMF版本為AMF3,而緊接著一連串的位元組尚需要時間去做更深入的剖析,筆者有時間再為大家來分享~

2007-12-11 18:06:40 | Comments (1)

Hello AMF3 - 初次見面

還在用純文字(Plain Text)的方式傳送大量資料嗎?或許可以嘗試看看Flash Remoting~

(截圖來源:Using Flash Remoting for Flash MX 2004 ActionScript 2.0)

它採用了AMF(Action Message Format) binary format來當做溝通的橋樑,所以它可以支援以壓縮的方式來傳輸,而且在可供傳輸的資料型態還包含了ByteArray等多種型態(參考AMF3 Specification),另外AMF也隨著ActionScript 3.0的問世從AMF0直接跳到AMF3,然而最重要的是AMFPHP也一併支援AMF3了,這裡提供一個小範例供測試使用~

範例下載

基本上將你的AMF安裝好後,將範例中的Hello.php貼到你的「services/」目錄夾即可,最後開啟remoting.fla發佈後即可看到「Hello! AMF

參考資源:

Flash Remoting with AS3

Using Flash Remoting for Flash MX 2004 ActionScript 2.0

2007-12-11 17:19:06 | Add Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment