アプリケーションは、ToolTalk メッセージを作成、送信、および受信することによって、他のアプリケーションと通信します。送信側は、メッセージを作成、書き込み、および送信します。ToolTalk サービスは受信側を判別し、そのメッセージを受信側に配信します。受信側はメッセージを検出してメッセージ内の情報をチェックし、メッセージを破棄するか、オペレーションを実行してその結果を応答します。
ToolTalk メッセージの構造は簡単で、アドレス、サブジェクト、および配信情報のフィールドを含みます。ToolTalk メッセージを送信するため、アプリケーションは空のメッセージを取得し、メッセージ属性を書き込んだ後、メッセージを送信します。送信を行うアプリケーションは、次の情報を提供する必要があります。
通知用メッセージか要求用メッセージか (つまり、受信側がメッセージに応答する必要があるかどうか)
受信側と送信側は、どのような処理対象を共有しているか (たとえば、受信側は特定のユーザ・セッションで実行されているものか、または特定のファイルを処理対象としているものか)
メッセージ配信の範囲を限定するために、送信側アプリケーションはメッセージ内にさらに情報を指定できます。
ToolTalk の重要な特徴は、送信側が受信側について何も認識していなくてもかまわないことです。これは、メッセージを受信したいアプリケーション側が、受け取りたいメッセージの種類を明示的に示すからです。この情報は、メッセージ・パターンとして ToolTalk サービスに登録されます。
アプリケーションは、そのインストール時または実行時にメッセージ・パターンを ToolTalk サービスに指定できます。メッセージ・パターンは、メッセージと同じ方法で作成します。つまり、どちらの場合も同じ型の情報を使用します。アプリケーションは受信したいそれぞれの型のメッセージについて、空のメッセージ・パターンを取得し、属性を書き込み、そのパターンを ToolTalk サービスに登録します。これらのメッセージ・パターンは通常、アプリケーションが相互に使用することにしたメッセージ・プロトコルと一致します。アプリケーションは、個々の使用に応じてさらにパターンを追加できます。
ToolTalk サービスは、送信側アプリケーションからメッセージを受信すると、メッセージ内の情報と登録されているパターンとを比較します。一致するものが見つかると、ToolTalk サービスは、受信側アプリケーションすべてにメッセージのコピーを配信します。
アプリケーションは受信を希望するメッセージを記述したパターンごとに、メッセージを処理または監視できるかどうかを宣言しています。多数のアプリケーションがメッセージを監視できますが、メッセージを処理できるアプリケーションは 1 つだけです。これは、要求されたオペレーションが確実に 1 回だけ実行されるようにするためです。ToolTalk サービスが要求に対するハンドラを見つけだせなかった場合は、そのメッセージを送信側アプリケーションに返し、配信が失敗したことを示します。
ToolTalk サービスは、メッセージを特定のプロセスに配信する必要があると判断すると、メッセージのコピーを作成し、受信待ちメッセージがあることをそのプロセスに通知します。受信側アプリケーションが実行中でない場合、ToolTalk サービスは、アプリケーションの起動方法に関する指示 (インストール時にアプリケーションが指定したもの) を検索します。
プロセスは、メッセージを検索し、その内容をチェックします。
オペレーションが実行されたという情報がメッセージに含まれている場合、プロセスはその情報を読み取ってから、メッセージを破棄します。
オペレーションの実行要求がメッセージに含まれている場合、プロセスはそのオペレーションを実行し、元のメッセージへの応答という形でオペレーションの結果を返します。応答が送信されると、プロセスは元のメッセージを破棄します。