プレゼン
今日は、某大手旅行会社のダウンサイジング案件のプレゼン。
Flex + S2のリッチクライアントソリューションです。
出てくる人たちは、技術にあまり精通していない偉い人たちなので、
アピールのポイントを間違えないようにしなければなりません。
10:30開始なので、早目に会社いって資料を作らなければ。
ってこれから作るんですか。(^^;
Flex自体のアピール。Biz/Browserを考えているってことだったので、
相手の顔色を見ながら差別化する。
Flexの提案をできる企業は、今の時点では日本でほとんどいないから、
Flexを気に入ってもらえるなら、高いポイントを獲得できるでしょう。
S2のアピール。Dependency Injection, AOPなんて使っちゃだめだ。
- 業務ロジックは、特定のAPIやフレームワークに依存しない、普通のJavaのクラスで開発できる。
- データアクセスのロジックは、インターフェースさえ決めれば、実装は書く必要がない。
- 業務ロジックを実装するコンポーネントは、インターフェースを通じてのみ相手と会話する、ステートレスであるという強い制約を持っているので、開発者のスキルによってコードがまちまちになってしまうということがない。
- Stateless BusinessLogicパターンの説明
- コンポーネント同士の組み合わせは、ハードコーディングされるのではなく、設定ファイルに記述するので、後から実装クラスを変えることも簡単である。仕様変更に強い。
- 実装クラスをモックオブジェクトに変えて簡単にテストできるので、品質が向上する。モックオブジェクトは、クラスを作る必要もなく、設定ファイルだけで簡単に作れる。
おっと、時間がない。シャワーを浴びて会社にいこう。
S2AMF
FlexでJavaBeansとデータをやり取りする場合は、つぎのように_remoteClassプロパティでJavaのクラス名を指定します。このとき、Flexの完全限定クラス名とJava側の完全限定クラス名をあわせる必要があります。
この方式がOpenAMFとはあいません。OpenAMFを使う場合とFlex純正を使う場合で、Java側のコードもFlex側のコードも変えたくないので、これは問題です。
class examples.flex.Employee {var _remoteClass;
var empno:Number;
var ename:String;
var hireDate:Date;
function Employee() {
_remoteClass ="examples.flex.Employee";
}
}
おそらく、_remoteClassを指定するとAMFGatewayにはカスタムクラスとして渡されると思うので、S1のNazuna Remotingだとそのまま対応できます。
移植しようかなぁ。S2AMFとして。S2OpenAMFのライバル!!!
追記:_remoteObjectは、Object.registerClass()で登録したカスタムクラスとは違うみたい。AMFGatewayには単にオブジェクトとしてやってきて、_remoteClassプロパティがあるだけとみた。
_remoteClassではなく、Object.registerClass("examples.flex.Employee", Employee);なら、S1でもFlex純正でも動きました。
どうする、id:hoso-kawaさん。