flat7th

memo/20110508

created 2011-05-08 modified 2011-05-08 

ベルトコンベア方式

トランザクション=入力と出力データを保持できるコンテナ。
各機能がベルトコンベア上の部品を処理するようにトランザクションを少しずつ加工し、最終的に出力データが出来上がる。
何かが入ると何かが出て行くような、パイプみたいな処理、ルーターみたいな処理に向く。非同期処理に強い。単純なオブジェクトモデルに向く。


オブジェクトモデルAPIパターン

処理対象である実物が、多層的な1:M関係や、N:M関係を持っている。
ある実物をあらわすオブジェクトを定義する。
階層構造の上位オブジェクトが、その下位オブジェクトを保持しており、ちょうだいっていうと、ほれ、ってくれる。
複雑なオブジェクト構造を持つものとか、同期通信とか、すべてのオブジェクトがメモリ上にあって高速に応答できるような場合に向く。MS-Officeのプログラミングとか。


で、非同期でかつ複雑なオブジェクトモデルを扱おうとしたら、どうしたらよかろうね、って話。


ふむ。
通信部分を、今作ってるモノの1コンポーネントと位置づけるか、1個基礎よりのレイヤと位置づけるかで変わってくる。

ベルトコンベア方式だとこうかな

        ----------------
        |プロセスメイン
   ----------------------------
   |通信処理| 業務ロジック処理| データ管理
--------------------------------
|基盤(IPレイヤ、OSストレージ等)
--------------------------------

オブジェクトモデルAPIパターンだとこうかな。
        ----------------
        |プロセスメイン
   ----------------------------
   | 業務ロジック処理(メモリデータを含む)
--------------------------------
|通信処理     永続データ
--------------------------------
|基盤(IPレイヤ、OSストレージ等)
--------------------------------

んで、メモリデータの操作は、オブジェクトAPIにする。しかも非同期な通信だと、戻りがすぐに返ってこなくて、コールバック方式のやつになる。


何を言ってるんだか、ワケ分からんでしょうけど、自分の中ではなんとなく整理できそう。