そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

以前、読まないといけないと思っていた、

SOAの実現: サービス設計の原則を読んだ

  • Webサービスのサービスやメソッドの名前について

Javaでは一般的にクラス名に名詞、メソッド名に動詞を付けるのが
ルールですね。

例えば
CustomerDataクラスのinsertCustomerRecordメソッド

データベースに顧客情報の追加処理が実装されているんだな、
というのが想像できます。

SOAではサービス名、オペレーション名に動詞を付けます。
つまり、
CustomerServiceサービスのCreateNewCustomerという感じです。

"顧客データのレコードを追加する"ではなく、
"新規顧客の作成"となるわけです。
ビジネス上に意味の持つ名前を付ける、というわけです。


  • WSDLのメリットについて

WSDLの最大のメリットは機械(つまりコンピュータ上で動くプログラム、
ツール)で読み取り可能なインターフェイスが定義されている、
ということです。
さらにオープンスタンダードであるということ。
SOAPがなくなってもWSDLは生き残るかもしれません。

  • ステートレスかステートフルか、また同期は非同期か

ステートレスの方が良い、セッションレプリケートすると
パフォーマンスが悪くなるとかは
通常のWebアプリケーションを設計するときと同様。

非同期か同期かも結局、作るものによって変わる。
この辺はその都度考えないといけない。

  • オペレーション粒度について

またSOAに限ったことではありませんが、リモートの場合は
オペレーションの粒度は大きくなります。

例えば、本の情報を得るのに
著者名取得メソッド
タイトル取得メソッド
値段メソッド
と粒度の細かい分け方では、呼び出し回数が増え、その分
通信によるオーバヘッドが大きくなります

getBookInfoというオペレーションを作成し、一回の呼び出しで
一気に情報が取れます。

確かに、AmazonのWebサービスもそうなってます。