今度はRemoteObjectまわりについて考えてみます。
どうするservices-config.xml
amfphpプラグインでは、S2BaseでいうところのServiceのActionScript側を自動生成することを考えています。
で、悩ましいのがservices-config.xml周りです。
これってFlexアプリケーションをコンパイルする時にコンパイラ引数に明示的に宣言してあげないとだめなんですよね。
FlexBuilderでFlexプロジェクトをFlexデータサービスで作成する場合には、サーバサイドのルートフォルダを指定する時に、この人をFlexコンパイラの-serviceオプションに設定しているようです。
amfphpプラグインでServiceを自動生成する場合は、この人をコンパイラオプションとして設定するのは手作業でやっていただくしかないんわけです・・・。
これをなんとかできないかなぁ。できることならこんなこともなくしたいです。
で、ちょっと調べてみました。
services-config.xmlなしで、RemoteObjectを使うことができるかどうかです。
Flex2のリファレンスガイドのMXMLの方のRemoteObjectを見てみると・・・。
なんだかChannelSetをプログラム的に作ってごにょごにょとかできそうです。
それじゃなくってもendpointっていうプロパティで、ChannelSet生成なし、かつでエントリポイント直で接続することもできるようです。
ん、なんかやってみないとですけど、なんかいけそうじゃないですか。
考えてみるとユーザから指定された宛先に接続してもがもがとかそういうアプリケーションの要件ってあるはずですから、動的に接続する仕組みがあるのは当然の事です。
あー、でもちょっと待て。
もし仮にこの方法で実装してActionScriptの中でChannelSetを作ったりとかしたら・・・メンテナンスするのに要求されるスキルがちょっと高くなっちゃいますね・・・。
やっぱりRemoteObjectを使う時は、(多分)一般的にRemoteObjectに対してdestinationを指定する方法をと・・・りますよね?
サーバサイドだけ入れ替えようかな、と思った時に「うをっ、なんでActionScriptでわざわざ書いてんだっ!」とか・・・めんどくさいことこの上ないですね。
少なくともDelfinoはめんどくさいです。
よって、この方法却下。
RemoteObjectの自動生成時には、おとなしくクライアントサイド用ディレクトにservices-config.xmlを出力しましょう。
そして、こんなコンパイラオプションの追加が必要ですよというNoticeを出して、コンパイラオプションをコピペできるように致しましょう。
微妙な親切にして・・・なんかいまいちな感じ。