ハイパーhogehoge、関連する概念・用語、ものすごく雑多 (2)
JSONスキーマのRFC候補にハイパースキーマって言葉が出てくる。なんかカッコツケスギ、ハイパーリンク・スキーマのほうがいいと思う。
RESTの本のなかで、接続性って言葉が出てくるが、これはハイパーリンク接続性がいいと思う。そのほうが分かりやすい。
情報担体(information bearing object)って言葉が気に入っている。例えば、http://d.hatena.ne.jp/m-hiyama/20050820/1124512522 。「体」がobjectの訳語だが、これは情報担体オブジェクトと言った方がいいだろ。データ転送オブジェクトとかデータアクセスオブジェクトと大差ない概念だが、「担っている」のだ。アクセスにも転送にも使える。
サービスリクエスタ、サービスリクエスタオブジェクトってのもいいと思う。サービス機能自体を運ぶのではなくて、サービスのインターフェースを運ぶのがサービスリクエスタオブジェクト。情報担体オブジェクト(データ転送オブジェクト)+サービスリクエスタオブジェクトが分散アプリケーションの肝だ。
肝といえば、アプリケーション状態がクラアントにより保持されるっても肝だ。それで、アプリケーション状態の変更はサーバーが行う、ってのも変な話だが、そうなっている。そうなっているんだからしょうがない。
結局、転送されるオブジェクトの一般形は:
- データプロパティ群(情報担体として)
- ハイパーリンク群(関係記述として)
- 問い合わせ群(副作用のないサービス要求)
- アクション群(副作用のあるサービス要求)
と、これだけの構成要素。ハイパーリンクと問い合わせの違いは微妙で恣意的だが、それでも区別したほうがいいと思う。ハイパーリンク、問い合わせ、アクションは戻り値(応答)を持つが、それがまた転送オブジェクト(transfer object?)となる。転送オブジェクトを受信・受理すると、クライアント状態が変更されう。
リクエスト処理中にサーバー状態は変更され、レスポンス受理処理中にクライアント状態が変更される。よって、リクエスト+レスポンスをトランザクションと考えると、トランザクション処理が双方の状態(直積空間)を変更する。
トランザクションとはいえ、サーバ側状態遷移の後でクライアント側状態遷移が起きるので、この時間順制約は外せない。