オープンサービスインターフェース定義(OSID)とは、サービスを記述するプログラムによるインターフェース仕様です。これらのインターフェースは、オープンナレッジイニシアティブ(OKI)によって規定され、サービス指向アーキテクチャ(SOA)を実装することで、多様な基盤技術や変化する技術環境におけるアプリケーション間の相互運用性を実現します。
ソフトウェアエンジニアリングへの投資を保護するため、プログラムロジックはソフトウェアインターフェースを用いて基盤となるテクノロジーから分離されます。各ソフトウェアインターフェースは、サービスコンシューマーとサービスプロバイダ間の契約を定義します。この分離は、有効なSOAの基盤となります。プロトコルレベルまたはサーバレベルでサービスインターフェースの境界を定義する手法もありますが、OSIDはアプリケーションレベルで境界を設定することで、コンシューマーをプロトコル、サーバID、およびサービスプロバイダのドメインにあるユーティリティライブラリから効果的に隔離します。その結果、開発が容易で、長寿命で、幅広いコンピューティング環境で使用可能なソフトウェアが実現します。
OSIDは、サービスインターフェースの境界を越えて問題領域を分割することで、ソフトウェアの設計と開発を支援します。ネットワーク通信の問題はサービスプロバイダ内部、つまりインターフェースの下位レベルで処理されるため、すべてのサービスプロバイダがリモート通信プロトコルを実装しているとは限りません(ただし、多くのサービスプロバイダが実装しています)。OSIDは、複雑なソフトウェアのさまざまなコンポーネント間の通信と調整にも使用され、設計と開発活動を整理してプロジェクト管理を簡素化する手段を提供します。
OSIDプロバイダ(実装)は、さまざまなアプリケーション間で再利用されることがよくあります。ソフトウェアがサービスのインターフェース契約を理解するように設計されれば、他の準拠実装を代わりに使用できます。これにより、高レベル(サービスレベル)での再利用性が実現され、より小規模で専用用途向けに作成されたソフトウェアの拡張も容易になります。
OSIDプロバイダの実装は、任意の数の他のOSIDプロバイダで構成できます。この階層化手法は、抽象化の明白な手段です。すべてのOSIDプロバイダが同じサービスを実装する場合、これはアダプタパターンと呼ばれます。アダプタパターンは、アプリケーションを変更することなく、同じインターフェースから契約するさまざまなサービスを統合、多重化、またはブリッジするための強力な手法です。