DjangoとFlashの結合!--より強力なWeb体験を提供


1.DjangoとFlashの結合
皆さんもFlashに詳しいと思いますが、shockwave Flashのブラウザプラグインはネット上でもかなり普及しています.ブラウザプラグインとしてだけでなく、プレーヤーとは独立して再生できる応用が広がっています.携帯電話からデスクトップ、ゲームアプリケーションから教育アプリケーション、仕事報告まで、それを表現することができます.また、拡張性に富んだRIAクライアントであり、adobeはMacromedia社を買収した後、FlashのRIAアプリケーションを強化し続けた.新しいActionScript 3.0は、元のFlash Remoting Componentsを統合し、大きなflashになりました.net Package.転送フォーマットもAMF 0からAMF 3フォーマットに変更される.
Flashは様々なネットワーク技術、XML-RPC、SOAP、AMF-RPCを適用できる.私たちは主にFlash AMF-RPCでDjangoのサービスをリモートで呼び出し、他の方法は後で話します.(例えば簡単なrequestやresponse機能)
pythonコミュニティである以上、Djangoに詳しいはずなので、あまり言いません.Webフレームワークの迅速な開発を提供しています.
1.1. FlashとDjangoの関係
Djangoはフロントエンドではなく、バックグラウンドサービスのみを提供しているからです.Flashも同様に、フロントエンドを処理し、バックグラウンドと通信するだけです.これらの間はAMF-RPCのミドルウェア方式で直接呼び出されます.
AMF-RPCは、AMFデータフォーマットを使用して実装されるリモートメソッド呼び出しであり、アプリケーションサーバゲートウェイであり、Flashアプリケーションとリモートサービスの間に相互に高速なネットワークチャネルを提供し、このチャネルの間にAMFフォーマットのデータが乗算される.データ型を自動的に変換したり、ActionScriptコードデータ型に変換したり、サーバプログラムデータ型に変換したりすることができます.
AMFはバイナリ形式で、Flashプログラムとバックグラウンドサービスの間の通信情報をシーケンス化し、伝送速度が非常に速い.
1.1.1. AMF環境のインストール
まずDjangoを入れて
それからdjangoamf-x.x.zipのモジュールを入れて、この日本人が書いたのです.完全にpythonによって書かれていますが、更新速度はまだ速いですが、ドキュメントはまだ少ないです.
ここはURLです.
http://djangoamf.sourceforge.jp/index.php?UserManual_en
1.1.2. DjangoのFlash RIAアプリケーションの作成
settings.pyに「amf.django.middleware.AMFMiddleware',
例:
MIDDLEWARE_CLASSES = (
   'django.middleware.common.CommonMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.middleware.doc.XViewMiddleware',
   'amf.django.middleware.AMFMiddleware',
)
には、いくつかの変数設定が追加されています.
AMF_GATEWAY_PATH = '/gateway/'

AMF_LOG_LEVEL = 'INFO'
AMF_LOG_FILE = '/path/to/log.txt' #          
AMF_LOG_FILE_ENCODING = 'utf8'
AMF_LOG_FILE_MODE = 'a'
そしてviews.pyにはsendbackが最後にFlashのActionScriptでサービスを呼び出すなど、呼び出す必要があるサービス関数が加算されます.
import remoting.*;
import flash.net.Responder;

var gatewayUrl:String = "http://127.0.0.1/gateway/";
var serviceName:String = "calculateService";
var serviceFactory:ServiceFactory =
ServiceFactory.getInstance(gatewayUrl);
var service:RemotingService = serviceFactory.getService(serviceName);

//trace(service);
send_btn.addEventListener(MouseEvent.MOUSE_UP, clickHandler);
function clickHandler(event:MouseEvent):void {
       var backValue:PendingCall = service.sendback(send_txt.text);   #    
views.py      
       backValue.responder = new Responder(handleResult, handleError);
}
function handleResult(ResultEvent:String):void {
       back_txt.text = ResultEvent;
}

function handleError(result:int):void {
       back_txt.text = "handleError is " + String(result);
}
stop();

1.2. 例
例として、Flash側でpython文を直接入力し、Flash側でサーバ側が返した結果を直接見ることができます.例えばサーバ側で入力
a = 5
b = 6
a + b
結果は
5
6
11
この例は、サーバ側のプログラムをデバッグしたり、サーバ側のグローバル変数を設定したり、別の関数、importの別のモジュールを実行したりするために使用できます.
例コード添付ファイル
この文書は次のとおりです.http://wiki.woodpecker.org.cn/moin/DjangoFlash