NoelPortal -手戻り予定のクライアント-

先日から作り始めているFlex2のアプリケーションなのですが、サーバとの通信でログインするところまでは実装できました。
で、Flex2にはCairngorm FrameworkなるMVCフレームワークが存在しているんですけれども、ひとまず独自実装で実装しています。
Flex2の開発がどんな感じなのかをみてみたかったのと、やっぱりいくらチュートリアルとかやってみても、自分でソースコード書いてみないと分らないことってありますからね。
ということで、手戻り予定の実装済みクライアントの巻です。

はい、さっそくクラス図です。

全体クラス図

ちょっとしか書いてないのに意外とあるように見えますね。
まぁ、でも中身はすごく単純でMXMLで実装されているのが、ビューにかかわる「NoelPortal」と「LogInForm」と「UserInfoPanel」です。
コントローラが「NoelPortalController」とユーザ周りの操作の委譲先となる「LoginFacade」、
(今見直してみるとユーザ周りの操作を委譲するのにLoginFacadeっていうのもないよなぁという気分にさせてくれますね^^;後で直すことに致しましょう。)
で、モデルが「User」です。

Flex2はイベントドリブンなので、ビューに起こったイベントをコントローラのリスナでキャッチするように意識すれば、MVCの分離はきれいにできるようになっています。
なんかほんとにJavaのSwingを使ってるような気分になりますね。
で「LoginFacade」にはサーバとの通信を実装するわけなんですが、RemoteObjectを使った通信は非同期通信なので、リスナを設定しておいて、通信結果をリスナメソッドで受け取る形になります。
ちょっと説明だけだと分りにくいので、シーケンス図を交えつつ。

まずNoelPortalControllerのコンストラクタが呼ばれた時のシーケンスです。

初期化シーケンス

LoginFacadeのコンストラクタを呼んで、ログイン時のリスナとして自身のloginCallBackメソッドを、通信異常時のリスナとして自身のfaultCallBackを登録しています。
これはサーバとの非同期通信完了時に呼ばれるリスナです。

続いて、NoelPortalがinitialize時に呼ばれるNoelPortal.initメソッド。

initシーケンス

こちらはNoelPortalControllerのinitメソッドをコールして、
noelPortal.loginForm.btnLoginにイベントリスナとして自身のloginListenerを、
noelPortal.userInfoPanel.btnLogOutにイベントリスナとして自身のlogoutListenerを設定しています。
こちらは、ユーザがビューの操作を行った際に呼ばれるリスナです。

じゃあ、さっそくログインボタンが押された時にどうなるか。
Flex Frameworkさんの動作箇所ははしょってまいりましょう。

ログインボタンクリック時シーケンス

  1. NoelPortalControllerのloginListenerメソッドが呼ばれます。
  2. ログイン処理の委譲先であるLoginFacadeのloginメソッドが呼ばれます。
  3. RemoveObjectでサーバサイドの処理を行います。
  4. この先はFlex Frameworkさんがごにょごにょです。
  5. で、しかるべき処理が正常終了したなら、NoelPortalControllerのloginCallBackが呼ばれる。

こんな感じで実装していけば、既存のフレームワークを使わなくてもMVCを分離したまま、実装していくことができそうです。
ただしコントローラは、ビューにごっすりと依存しているので、ちゃんと切り分けるならビューにパブリックなメソッドを実装する形にしないとですね。
さてさて、明日以降に今度はサーバサイドのこととかなんとか。
がんばりまっしょい。

Category: Flex | Posted on: 2007/05/14 18:51 | Viewed: 1015

Comments

No comments yet

Add Comment

:

:
:

TrackBacks

このエントリにトラックバックはありません

TrackBack URL

http://www.azul.systems-noel.jp/trackback/item_9.html