amsiとは、非同期写像システムインターフェース(asynchronous mapping system interface)の事。
amsの仕様書のようなもの。
この仕様に沿うように作れば、誰でもamsが作れる(というページを目指す)。
概要
まだ草稿段階。
- message-passingモデルで通信を行う為、並行動作できる必要がある。
- 完全な並行動作をする必要はないが、最低でもコルーチン的に複数の処理を同時にこなせる必要がある
- ams自体は生きたプロセスでなくてもよい。単なる関数呼び出しでも構わない。が、名前の通りリクエストとレスポンスは非同期になる必要がある為、これ仕様が求められる。
- 一つの特権入出力(親IO)と、多数の制限入出力(子IO)と、問い合わせ用入出力(???)を持つ(仮)
- 親IOは外世界(及び外世界に接続されている五感)に相当する。ここからの入力は特権的に後述のデータストレージに反映される。
- 子IOはクライアント(客存在)からの指示に相当する。それぞれのクライアントの権利に応じて、後述のデータストレージへの読み書きが許可され、実行できる。
- あるamsの親IOは、接続先のamsにとっては子IO扱いとなる。但し逆は成り立たないかも(子IO同士の接続がありうる?)
- ここでの実際の通信内容については、amspを参照。
- 外からは、KVS(key-value store)のようなデータストレージに見えるインターフェースを持つ
- 内部実装は任意。勝手に変更したりGCしたり変更しなかったり適当な値を返したりするような、データストアとは呼べないような実装でもよい
- 内部
続きはあとで
一時メモ
- 用語集を作り、用語を統一する
- 親IOと子IOは双方向通信を前提に考えていたが、実は、一方向だけでok?応答が必要な時だけ問い合わせIO経由で送らせる?
- 通信パラダイムを考え直す?ErlangやTermiteの仕様を見直した方がいいかも
最終更新 : 2010/05/17 20:47:32 JST