2008年4月15日火曜日

ROA

ROAとはリソース指向アーキテクチャのことだ。
ROAとは何かという問いは非常に重要だ。自分ではまだ完全に答えることはできない。それでもいくばくかの理解が得られたように思えるので、ここで述べておこう。これが最終的な答えではないという前提で読んでほしい。中途半端な理解でも他の人の役に立つならうれしい。逆にかえって混乱させてしまったら申し訳ない。
ROAと逆語があるとすればMOA(Method Oriented Architecture)ではないかと思う。念のためMOAという言葉はこの説明のための造語であり、一般的な用語ではないことを申し添えておく。WSではSOAPとRESTの対比で語られるが、RESTはROAであり、SOAPはMOAである。MOAはRPCともいえる。つまりサービスの切り口が関数・手続き・メソッドなどである。それに対してROAではリソースで区切る。
MOAは伝統的なRPCスタイル、すなわちクライアントサーバになじむ。しかし、APIが複雑になり、互いの関連が理解しにくくなる。そこで複雑な問題を分解するときの常とう手段として全体を部分に分割する。このとき隠蔽されていた内部構造を明らかにしてしまう。ROAでは隠蔽されていたリソースを明示的に扱う。これは危険に思えるかもしれないが、もともとパラメータとしては明示されていたものなので抽象度が下がるわけではない。
これだけなら特に問題ないが、ROAではさらに強い制約を課している。それはメソッドを大胆にHTTPメソッドレベルまで簡易化することである。
つまり、MOAでは多様なメソッドと唯一ともいえるリソースで設計するが、ROAでは多数のリソースとごく少数のメソッドで設計する。両者を比較するとROAの方が構造化されていると考えられる。
今のところ私の理解しているROAとはこのような姿だ。

0 件のコメント: