Sun では、「開放型プロトコル」を推奨しています。プロトコルは一般に開放的なものであり、「相手を特定しないメッセージ」(つまり、誰がそれを受け取るかを知らずに送信するメッセージ) をサポートしています。この節では、この開放型メッセージプロトコルをサポートするものであれば、どのようなアプリケーションともうまくやり取できるアプリケーションを独自に開発する際の指針を示します。ここで示す指針と原則に従えば、独自に開発した別々のアプリケーションでもさまざまな基準を考案して運用でき、互いにやり取りできます。また、アプリケーションのユーザーはその環境をより細かく制御でき、カスタム化できます。
ToolTalk のアプリケーションを作成する際は、次の原則に従ってください。
要求相手を特定しない
ツールは必要なときだけ起動する
要求した操作が完了してから要求に応答する
できるだけ内部状態を持たないようにする
ツールの役割ごとに ptype を 1 つ宣言する
アプリケーションを完全に開放的な設計にするには、要求の受け取り者を指定しないでください。つまり、要求側のプロセスでは、要求した操作を処理するツールのインスタンスやツールの型も指定しないでください。要求を特定のプロセスに送信すると、ユーザーのリソースや、メッセージを受け取る可能性のあるプロセスのリソースの利用を不要に制限することになります。また、要求を特定の型のツールに送信すると、やり取りできるツールを必要ないのに制限することになります。
メッセージには、要求する操作か通知するイベントを指定してください。メッセージを受け取るプロセスを、メッセージに記述してはいけません。やり取りする相手を各ツールで限定しないほど、ユーザーにとって柔軟なシステムになります。
開放型プロトコルの詳細は、『Designing and Writing a ToolTalk Procedural Protocol』 (Sun Part No. 801-3592-01) を参照してください。
プロトコルを完全に開放型の設計にするには、必要なときだけツールを起動してください。ツールのインスタンスを必要なときだけ起動すると、ユーザーは CPU、画面領域、スワップ空間などをより柔軟に効率よく使用できます。ToolTalk サービスには、ツールのインスタンスの起動時期を決定するための機能として、次のようなものがあります。
メッセージと型シグニチャで、確実な「起動」を指定できます。これを指定すると、メッセージの適切な受け取り者が動作していない (または、要求を受け取る適切な者がいない) 場合、メッセージの処理または監視を行うよう静的に型に登録してあるツールインスタンスを ToolTalk サービスが起動します。
各プロセス型 (ptype) は、1 つのセッションで起動できるインスタンスの最大数を指定できます。
ToolTalk サービスでは、ツールのインスタンスを新しく起動する前に、動作中の適切なハンドラすべてに各要求を配布します。これを受け取ったハンドラは、自分自身の判断基準 (タスクを新しく引き受けることができるか、保存していない変更があるか、アイドル時間、アイコン状態、または新しい仕事を自由に受け入れるようユーザーが指定してあるかなど) に従って、要求を受け取るか拒否できます。
アプリケーションを完全に開放的な設計にするには、送信側プロセスの要求した操作を完了したら、送信側プロセスにその旨を通知してください。ただし、要求メッセージの送信が非常に短時間で終わるのに比べ、その操作の完了には長時間かかることがあります。送信側プロセスへは、次のどちらかの方法で応答できます。
要求を受け取ったことは即座に応答するが、実際に操作を完了した結果は後で別のメッセージで送信する
操作が完了するまで応答を保留する
ToolTalk メッセージはまったく非同期であるため、後者の方法を推奨します。ツールやツールのセッションは、未処理の要求を少なくとも 1 つかかえることになるため、ブロックしてはいけません。
アプリケーションを開放的な設計にするには、各メッセージをできるだけそれ自身で完結させてください。プロトコルの状態の数を少なくすると、メッセージは、以前のメッセージや指定した受信側の状態に頼らなくても済みます。
ToolTalk プロトコルは、各ツールが果たす「役割」(つまり、各ツールが実行するタスクの種類) で表現されます。ToolTalk の ptype は、ツールが動作していないときに処理対象のメッセージを受け取ったらどう処理するかを ToolTalk サービスに指示します。プロトコルを開放的にするには、プロトコルの中の役割ごとに ptype を 1 つ宣言してください。こうすると、ユーザーはそのニーズに応じて、ツールを自由に交換できます。たとえば、録音用には洗練されたサウンドオーサリングツールを使用したいが、再生用には簡単なオーディオツールでかまわないというユーザーもいます。
ptype ごとにメッセージシグニチャを 1 つだけ指定する必要もあります。同一の ptype にメッセージシグニチャを 2 つ以上指定すると、片方のメッセージを処理できるプログラムならすべて、もう一方のメッセージも処理できなければならないと要求することになります。たとえば、「UWriteIt」という ptype には「Display」と「Edit」という 2 つのメッセージシグニチャを指定できます。これは UWriteIt のドキュメントフォーマットを理解するものであれば、どのようなツールでも両方の操作を実行できると思われるからです。