サービスのさまざまな側面

各サービスには、サービス実装、基本アクセス詳細、およびコントラクトが含まれています。

サービス実装

サービス実装 は中心となるビジネス・ロジックであり、任意のプログラミング言語で作成できます。「サービス」および「サービス実装」という用語は、相互に言い換えられることがよくあります。「サービス実装」という用語は、ビジネス・ロジックの詳細に重点を置く場合に使用されます。

基本アクセス詳細

基本アクセス詳細 には、サービス実装のアドレスとバインディングが含まれます。バインディングは、送信開始時にメッセージをフォーマットし、送信終了時にメッセージをフォーマット解除するプロトコルです。Web サービスの場合、プロトコルは Hypertext Transfer Protocol (HTTP) です。リクエスターから呼び出しメッセージが送信されるときに、フォーマットが行われます。メッセージがサービス・ロケーションに到達すると、フォーマットが解除されます。フォーマットは、サービスから応答が出される場合にも行われます。この場合、フォーマット解除は応答がリクエスターに到達した時点で行われます。

サービスのロケーションは、サービスのデプロイ時に設定されます。 次のようにして、リクエスターがロケーションを検出します。
  • サービス・ロケーションに関する詳細をリクエスターのビジネス・ロジックに埋め込むことができますが、この方法は柔軟ではありません。サービス・ロケーションが変更された場合、リクエスターを再コンパイルおよび再デプロイする必要があります。
  • ほとんどの場合、サービス・ロケーションの詳細は、リクエスターがデプロイされているサイトの構成ファイルに記述されています。この場合、リクエスターの使用中に構成ファイルを変更でき、サービスが新しいロケーションにデプロイされる場合でもリクエスターはサービスにアクセスできるため、この方法には柔軟性があります。
  • 場合によっては、ロケーションの詳細が実行時にリクエスターに受け渡されるか、またはメッセージが SOA ランタイム・ソフトウェアによってリダイレクトされます。 この方法には柔軟性がありますが、処理が複雑化します。ほとんどの場合は、この複雑化は必要ありません。

コントラクト

コントラクト は意図されているサービスの振る舞いを記述するものであり、実装の詳細からは独立しています。コントラクトは、サービス・インターフェースと Quality of Service の 2 つの要素からなります。

サービス・インターフェース には、リクエスターとサービスの間で受け渡しできるデータの記述と、サービスが提供する各操作の詳細が含まれています。インターフェースにはメッセージに関する情報が含まれており、質問 (「メッセージのフォーマットは?」、「コンテンツに対する制限は?」) に対する回答を提供します。インターフェースには、リクエスターとサービスの相互作用を示すメッセージ交換パターンに関する詳細も含まれています。 インターフェースは、サービスが常にリクエスターに応答するかどうかを示します。

サービス・インターフェースの一部の側面は、サービス・インターフェースで暗黙的に実装されます。例えば、サービスが株価情報を提供するが、送信された銘柄記号が無効な場合にはエラー・メッセージを返すことがあります。

インターフェースは、サービスの側面である上に、サービスの全体的な設計の側面でもあります。一般に、インターフェースは実装よりも前の段階であり、インターフェースを実装するといわれています。

コントラクトの 2 つ目の要素は Quality of Service (QoS) です。 QoS は、基本アクセス詳細またはサービス・インターフェースにより暗黙に指定されるルールを超えた、相互作用ルールのセットです。 QoS には次のような問題があります。
  • 信頼性 (例: サービスが使用可能な時間の割合は?)
  • セキュリティー (例: 指定されたリクエスターに対して指定されたサービスへのアクセスが必ず許可されるようにするにはどうしたらよいか?)
  • 調整 (例: リクエスターによって行われたがコミットされていないデータベース変更、またはリクエスターによって行われる永続的なデータベース変更をサービスが修正できるか?)
  • 実行時のメッセージの内容または宛先の更新 (例: 異なるプロトコルを使用するコンピューターへの送信を可能にするために、実行時にメッセージを再フォーマットできるか?)

上記の情報には、「Enterprise Web 2.0 with EGL」(MC Press, 2009; http://www.mc-store.com/5107.html) からの抜粋が含まれます。


フィードバック