そもそもWebサービスでは、インターネット上(もちろんイントラネットでもいいが)に散在する「サービス」を相互に繋ぎ合わせ、任意に呼び出して利用できるようにインタフェースとデータフォーマットを共通化した。インターネット上で提供される多数のサービスを好きなように組み合わせることで新しいサービスを実現し、インターネットそのものを「サービスのネットワーク」にしていく、という壮大なビジョンが語られていたのは、ほんの数年前の話である。
このアイデアはある意味分かりやすいし、だれの耳にも魅力的に聞こえることから一気に大ブームとなったが、実現するのは困難だった。理由はさまざま挙げられるが、ここでは、外部に用意された「サービス」を利用すると簡単にいっても、その「サービス」がどのような処理をどのような形式で行うのか、使いたい処理と合致しているのかどうかが問題になる、という点をまず指摘しておきたい。
SOAが「サービス」というとき、それはある一連のまとまった処理で、ある程度完結していることを想定する。こうした粒度の大きなコンポーネントは、その内部にさまざまな処理を含むため、それぞれの処理の実現の仕方の違いが最終的なサービスの仕様に影響してしまう。
コーディングサンプルに取り上げられるような、「2つの数を渡すと合計値を返してくれる足し算サービス」みたいなレベルの話ならともかく、「受注処理をサービス化する」という話だと、取引相手は個人か企業か、価格は固定か値引きがあるのか、最小ロット数はどのくらいか、などといった違いが生じてくるのである。
Webサービスでは、コンポーネントをサービスと見なして相互接続する共通インタフェースを確立したが、「そのサービスはそもそも希望通りの内容なのか」という点はカバーできない。それが、Webサービスによるサービス連携の困難さでもある。
Copyright © ITmedia, Inc. All Rights Reserved.