(17)Cairngorm+S2Flex2での実装例(as側)

AS側にCairngormを採用している場合の実装例です。

基本的には、ServiceLocatorでRemoteObjectを記述している部分をS2Flex2Serviceタグに入れ替えるだけです。

Serviceクラス

  

くどいようですが、ServiceLocatorは複数作成しても使用できません。
1サービスクラス(mxml)内に全てのサービスクラスを登録するのが正しい作法です。

Serviceクラスを実行するクラス

  ・・・
  public class AddLogic{
    private var service : AbstractService;
    private var responder : IResponder;
  ・・・
    /**
     * コンストラクタ。
     */
    public function AddLogic(callingCommand : IResponder){
      // S2Flex2Serviceインスタンス取得
      this.service = ServiceLocator.getInstance().getService("addService");
      this.responder = callingCommand;
    }
    
    /**
     * java側サービスメソッドの実行
     */
    public function doCaluclate(dto :AddDto):void{
    // サービス実行
      var call:Object = this.service.calculate2(dto);
      call.resultHandler = this.responder.result;
      call.faultHandler = this.responder.fault;
    }
  ・・・
  }

こんな感じになります。
任意のCommandクラスで、上記クラスを呼び出すと、CommandクラスのIResponderのメソッド(result,fault)に返ってきます。

Cairngormについては、以前に書いてますのでそちらを見てみてください。(33) Cairngorm 2.1 シリーズの目次 - hirossy javaとFlex2と。

次回は、サーバサイドをAMFPHPにする です。まだ実現してませんが、今から試してみます。