(57)【要約】      （修正有）【課題】クライアントプログラムを、対応するサービスプログラムが提供するサービスとコンパチブルであるようにメンテナンスする際の手間と潜在的な間違いを削減する。【解決手段】クライアントプログラム１０４は、受信したサービス機能情報１５０に基づきサービス要求１５２を生成する。サービス機能情報はサーバプログラム１１４から読み出され、サーバプログラムにより動的に維持されるので、サーバプログラムから得られるサービスが変更されても、クライアントプログラムを更新する必要はない。プリントクライアントプログラムは、現在のプリンタデバイス機能（サービス機能情報）を読み出し、読み出した、動的に維持されたプリンタデバイス機能情報に基づき、プリントジョブチケット（サービス要求）を生成する。ジョブチケットはサーバプログラムに送信され、ジョブチケットにより規定された文書を印刷させる。【選択図】図１
2012053877.tif 000002
【特許請求の範囲】
【請求項１】
クライアントプログラムとサーバプログラムとの間で利用可能なサービスを通信する方法であって、
前記クライアントプログラムが、前記サーバプログラムから得られるサービスに関する情報を含むサービス機能情報を、前記サーバプログラムから受信する段階と、
前記クライアントプログラムが、前記サービス機能情報に基づいて、サービス要求を生成する段階と、
前記クライアントプログラムから前記サーバプログラムに、前記サービス要求を送信して、前記サーバプログラムに所望のサービスを要求する段階とを有する方法。
【請求項２】
前記サービス機能情報は、前記サーバプログラムから得られる印刷サービスに関する印刷機能情報を含み、
前記サービス要求は、前記サーバープログラムから得られる印刷サービスを利用して印刷ジョブを印刷するサービスを要求するジョブチケットを含む、請求項１に記載の方法。
【請求項３】
前記生成する段階は、さらに
前記クライアントプログラムが、前記サーバプログラムから得られる印刷サービスから印刷ジョブ設定を選択する段階と、
前記選択した印刷ジョブ設定に基づき前記ジョブチケットを生成する段階とを有する、請求項２に記載の方法。
【請求項４】
前記受信する段階はさらに
前記クライアントプログラムが、事前に受信したサービス機能情報が有効か判断する段階と、
前記クライアントプログラムが、前記事前に受信したサービス機能情報が有効でないとの判断に応じて、前記サーバプログラムからサービス機能情報を受信する段階とを有する、請求項１に記載の方法。
【請求項５】
前記判断する段階はさらに
前記クライアントプログラムが、前記サーバプログラムに問い合わせて、前記サービス機能情報の現在のバージョン識別子を判断する段階と、
前記現在のバージョン識別子を、前記事前に受信したサービス機能情報に関連する事前のバージョン識別子とを比較する段階と、
前記現在のバージョン識別子が前記事前のバージョン識別子と一致したら、前記事前に受信したサービス機能情報が有効であると判断する段階と、
前記現在のバージョン識別子が前記事前のバージョン識別子と一致しなかったら、前記事前に受信したサービス機能情報が有効でないと判断する段階と、を有する、請求項４に記載の方法。
【請求項６】
前記クライアントプログラムが、前記クライアントプログラムのユーザからユーザ認証情報を受け取る段階と、
前記ユーザ認証情報を前記サーバプログラムに送信する段階と、を有し、
前記サーバプログラムから受信するサービス機能情報は前記送信するユーザ認証情報に基づく、請求項１に記載の方法。
【請求項７】
前記クライアントプログラムから前記サーバプログラムに、前記サーバプログラムから前記クライアントプログラムへサービス機能情報を返すことを要求する機能要求を送信する段階を有する、請求項１に記載の方法。
【請求項８】
クライアントプログラムとサーバプログラムとの間で利用可能なサービスを通信する方法であって、
前記サーバプログラムから前記クライアントプログラムに、前記サーバプログラムから得られるサービスに関する情報を含むサービス機能情報を送信する段階と、
前記サーバプログラムが、前記クライアントプログラムから、前記サーバプログラムから得られるサービスの実行を要求する、前記サービス機能情報に基づくサービス要求を受信する段階と、
前記サーバプログラムが、前記サービス要求の受信に応じて、前記要求されたサービスを実行する段階とを有する、方法。
【請求項９】
前記サービス機能情報は、前記サーバプログラムから得られる印刷サービスに関する印刷機能情報を含み、
前記サービス要求は、前記サーバープログラムから得られる印刷サービスを利用して印刷ジョブを印刷するサービスを要求するジョブチケットを含む、請求項８に記載の方法。
【請求項１０】
前記サーバプログラムが、前記クライアントプログラムから、サービス機能情報を要求する機能要求を受信する段階を有し、
前記送信する段階は、前記機能要求の受信に応じて行われる、請求項８に記載の方法。
【請求項１１】
静的サービス機能情報と動的サービス機能情報とをマージして、前記クライアントプログラムに送信するサービス機能情報を生成する段階をさらに有する、請求項８に記載の方法。
【請求項１２】
前記サーバプログラムが、前記クライアントプログラムから、前記サービス機能情報に関連する現在のバージョン識別子を返すことを要求する機能バージョン要求を受信する段階をさらに有する、請求項８に記載の方法。
【請求項１３】
前記サーバプログラムが、前記クライアントプログラムから、前記クライアントプログラムのユーザを識別するユーザ認証情報を受信する段階を有し、
前記サービス機能情報を送信する段階は、前記受信したユーザ認証情報に基づいてサービス機能情報を送信する段階を有する、請求項８に記載の方法。
【請求項１４】
クライアント計算デバイスで動作するクライアントプログラムと、
サーバ計算デバイスで動作する、前記クライアントプログラムと通信可能に結合したサーバプログラムと、
前記サーバプログラムと結合し、前記サーバプログラムから得られるサービスに関する情報を含むサービス機能情報を記憶するメモリとを有し、
前記サーバプログラムは前記サービス機能情報を前記クライアントプログラムに送信するように構成され、前記クライアントプログラムは前記サーバプログラムから前記サービス機能情報を受信するように構成され、
前記クライアントプログラムは、前記サービス機能情報に基づき、サービス要求を生成するように構成され、前記サービス要求を前記サーバプログラムに送信するようにさらに構成され、前記サービス要求は、所望のサービスを前記クライアントプログラムの替わりに前記サーバプログラムにより実行することを要求し、
前記サーバプログラムはさらに、前記サービス要求を受信するように構成され、前記所望のサービスを実行するようにさらに構成された、システム。
【請求項１５】
前記サーバプログラムはプリントサーバプログラムを有し、
前記クライアントプログラムはプリントアプリケーションプログラムを有する、
請求項１４に記載のシステム。
【請求項１６】
前記サービス要求はジョブチケットを含み、前記ジョブチケットは前記プリントサーバに、特定した文書を印刷するように要求する情報を含む、請求項１５に記載のシステム。
【請求項１７】
前記ジョブチケットは、前記サービス機能情報に基づく印刷設定を含む、
請求項１６に記載のシステム。
【請求項１８】
前記クライアント計算デバイスと結合したユーザ入力デバイスをさらに有し、
前記クライアントプログラムは、前記ユーザ入力デバイスによりユーザ入力を受け取り、前記サービス機能情報に示された利用可能なサービスから前記印刷設定を選択する、請求項１７に記載のシステム。
【請求項１９】
前記メモリに記憶されるサービス機能情報は、
前記サーバプログラムから得られるサービスに関する静的サービス機能情報と、
前記得られるサービスを修正する動的サービス機能情報とを含み、
前記サーバプログラムは、前記動的サービス機能情報を、前記静的機能情報とマージして、前記クライアントプログラムに送信するサービス機能情報を生成するようにさらに構成された、請求項１４に記載のシステム。
【請求項２０】
前記動的サービス機能情報は、
前記静的サービス機能情報中の利用可能なサービスの修正を示す情報と、
前記静的サービス機能情報中の利用可能なサービスが削除されることを示す情報と、
前記静的サービス機能情報中の利用可能なサービスに追加される新しいサービスを示す情報とを含む、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント／サーバのパラダイムを用いるコンピュータプログラム通信に関し、特にクライアントプログラムにおいて、動的に取得したサーバのサービス機能を利用する方法と装置に関する。
【背景技術】
【０００２】
印刷環境では、印刷アプリケーションがプリントサーバのサービスを利用して印刷ジョブの印刷出力をするのが一般的である。かかる環境では、印刷アプリケーションは、サーバプログラムにサービスを要求するクライアントプログラムの役割を演じることもある。クライアントプログラムとサーバプログラムは、ネットワークを介して結合された異なる計算デバイスにあって動作するものであってもよいし、同じ計算デバイス内にあって動作するものであってもよい。クライアント／サーバコンピューティングパラダイムでは、クライアントプログラムがサーバプログラムにサービスを要求し、２つのプログラムが情報を交換して、要求されたサービスを実現する。
【０００３】
例えば、印刷環境では、クライアントアプリケーションプログラムは印刷する文書を生成し、その文書をプリントサーバプログラムに送り、そのプリントサーバにその文書のフォーマット、レイアウト、及びレンダリングをするよう要求する。クライアントアプリケーションプログラムは、いわゆる「ジョブチケット」を生成する。このジョブチケットは、プリントサーバが処理する印刷ジョブに対する様々なオプションや嗜好（preferences）を示すものである。ジョブチケットは、一般的には、サーバプログラムが提供する一組の利用可能なオプションや設定（すなわち、サーバプログラムが提供する「利用可能サービス」）から所望のものを選択する、ユーザとインターラクトするクライアントプログラム、またはアプリケーションプログラムインタフェースにより生成される。例えば、ジョブチケットは、クライアントアプリケーションプログラムにより画定され、どの印刷データファイル（印刷する文書等）を印刷するか、その文書を例えば両面印刷、レターサイズの用紙に印刷、（白黒印刷ではなく）フルカラー画像で印刷するかなどの希望を示すものである。これらのオプション例は、ユーザまたはクライアントアプリケーションプログラムが、利用可能オプション／サービスのリストから選択するようにしてもよい。利用可能オプションのリストは、一般的には、「デバイス機能」ファイル（または「DevCapファイル」と略称することもある）と呼ばれることが多いテーブルまたはファイルにエンコードされる。クライアント／サーバインターラクションが、あるサーバ計算デバイスが提供する任意のオプショナルサービスを指す場合、デバイス機能ファイルは、より一般的に、「サービス機能」ファイルと呼ばれることもある。
【０００４】
現在のクライアント／サーバコンピューテーションモデルでは、クライアントプログラムとサーバプログラムは、協働して、クライアントがサーバプログラムから利用できるすべてのサービス機能を知ることができるように、設計しなければならない。サーバプログラムが修正され、あるサービスが変更、追加、または削除されると、協働するクライアントプログラムは、同様に修正され、クライアントプログラムのユーザに変更されたサービスの利用のしかたを変更し、新しく追加されたサービスを利用し、または削除されたサービスの利用を中止させねばならない。クライアントプログラムとサーバプログラムが両方とも同じソフトウェアベンダーから提供されたものであれば、そのベンダーがそのクライアントプログラムを更新して潜在的に多数のユーザに配布する義務を負う。クライアントプログラムがカスタマイズされたアプリケーションである場合、そのカスタマイズされたアプリケーションの設計者／ユーザが、クライアントプログラムを修正し、サーバプログラムにおける変更に対応する（account for）義務を負う場合がある。クライアントプログラムをメンテナンスする義務が誰にあろうと、現在のクライアント／サーバコンピューテーションモデルでは、サーバプログラムが提供するサービスに合わせて、対応するクライアントプログラムの再設計や修正が必要である。このようにクライアントプログラムを定期的に再設計や修正をする必要があると、修正したクライアントプログラムの再テストや再配布などの多くの問題が発生する。
【０００５】
このように、クライアントプログラムを、対応するサービスプログラムが提供するサービスとコンパチブルであるようにメンテナンスする際の手間と潜在的な間違いを削減することは、依然として問題である。
［関連特許出願］
この出願は、２００７年８月２９日に出願した共有かつ同時係属中の米国特許出願第１１／８４６，８８４号（発明の名称「CAPABILITY-BASED CONTROL OF A COMPUTER PERIPHERAL DEVICE」）と関連し、また共有かつ同時継続中の米国特許出願第１１／８４６，９２６号（発明の名称「AUTOMATICALLY GENERATING CAPABILITY-BASED COMPUTER PERIPHERAL DEVICE
DRIVERS」）と関連する。両文献はその全体をここに参照援用する。
【発明の概要】
【０００６】
本発明は、サーバプログラムからクライアントプログラムに、動的に維持されたサービス機能情報を送信することにより改良した、クライアント／サーバプログラム通信のための方法とそれに関連する装置を提供することにより、上記その他の問題を解決し、有用な技術の水準を高くする。クライアントプログラムは、受信したサービス機能情報に基づきサービス要求を生成できる。サービス機能情報はサーバプログラムから読み出され、サーバプログラムにより動的に維持されるので、サーバプログラムから得られるサービスが変更されても、クライアントプログラムを更新する必要はない。一実施形態では、クライアントプログラムはプリントアプリケーションクライアントプログラムであってもよく、サーバプログラムはプリントサーバプログラムであってもよい。プリントクライアントプログラムは、プリントサーバプログラムから現在のプリンタデバイス機能（サービス機能情報）を読み出す。プリントクライアントプログラムは、次に、読み出した、動的に維持されたプリンタデバイス機能情報に基づいて、プリントジョブチケット（サービス要求）を生成する。このように生成されたジョブチケットは、サーバプログラムに送信され、プリントジョブチケットに示されたプリンタオプション／設定を用いて、ジョブチケットにより規定された文書の印刷をさせる。
【０００７】
本発明の一態様では、クライアントプログラムとサーバプログラムとの間で利用可能サービスを通信する方法を提供する。該方法は、クライアントプログラムが、サーバプログラムからサービス機能情報を受信する段階を含む。サービス機能情報は、サーバプログラムから得られるサービスに関する情報を含む。また、本方法は、
前記クライアントプログラムが、前記サービス機能情報に基づいて、サービス要求を生成する段階と、 
前記クライアントプログラムから前記サーバプログラムに、前記サービス要求を送信して、前記サーバプログラムに所望のサービスを要求する段階とを有する。
【０００８】
本発明の他の一態様では、クライアントプログラムとサーバプログラムとの間で利用可能サービスを通信する方法を提供する。該方法は、サーバプログラムからクライアントプログラムに、サービス機能情報を送信する段階を含む。サービス機能情報は、サーバプログラムから得られるサービスに関する情報を含む。また該方法は、サーバプログラムが、クライアントプログラムからサービス要求を受信する段階を含む。サービス要求は、サーバプログラムにサービスの実行を要求するものであり、サービス機能情報に基づく。また該方法は、前記サーバプログラムが、前記サービス要求の受信に応じて、前記要求されたサービスを実行する段階を有する。
本発明のさらに他の態様では、クライアント計算デバイスで動作するクライアントプログラムと、サーバ計算デバイスで動作するサーバプログラムとを揺するシステムを提供する。サーバプログラムは、クライアントプログラムと通信可能に結合している。該システムはさらに、サービス機能情報を記憶する、サーバプログラムと結合したメモリを有する。サービス機能情報は、サーバプログラムから得られるサービスに関する情報を含む。サーバプログラムはサービス機能情報をクライアントプログラムに送信するように構成され、クライアントプログラムはサーバプログラムからサービス機能情報を受信するように構成されている。クライアントプログラムはさらに、サービス機能情報に基づきサービス要求を生成するように構成され、サービスプログラムにサービス要求を送信するように構成されている。サービス要求は、所望サービスを、クライアントプログラムに替わりサービスプログラムが実行することを要求するものである。サーバプログラムはさらに、サービス要求を受信するように構成され、所望のサービスを実行するようにさらに構成されている。
【図面の簡単な説明】
【０００９】
図面上、同じ参照番号は同じ要素または同じ種類の要素を表す。
【図１】本発明の一実施形態による強化クライアント／サーバ通信のシステム例を示すブロック図である。
【図２】本発明の一実施形態による強化クライアント／サーバ通信のシステム例を示すブロック図である。
【図３】本発明の一実施形態による強化クライアント／サーバプログラム通信を提供する、図１と図２に示したクライアントプログラムとサーバプログラムについてさらに詳細を示すブロック図である。
【図４】本発明の一実施形態による強化クライアント／サーバプログラム通信を提供する、図１と図２に示したクライアントプログラムとサーバプログラムについてさらに詳細を示すブロック図である。
【図５】本発明の一実施形態による強化クライアント／サーバ通信の方法例を示すフローチャートである。
【図６】本発明の一実施形態による強化クライアント／サーバ通信の方法例を示すフローチャート図である。
【図７】本発明の一実施形態による強化クライアント／サーバ通信の方法例を示すフローチャート図である。
【図８】本発明の一実施形態によるサービス機能情報の一例で規定できるカスタマイズしたサービス機能の一例を示す図である。
【発明を実施するための形態】
【００１０】
図１乃至８と以下の説明により、当業者に本発明をいかに実施するか教示する、本発明の具体的な実施形態の例を示す。本教示のためには、本発明のうち従来技術に属する部分については簡単に説明するか、説明を省略した。当業者には、これらの実施形態の、本発明の範囲内に入る変形が分かるであろう。当業者には言うまでもなく、下記の特徴をいろいろと組み合わせて、本発明の複数のバリエーションを構成できる。結果として、本発明は以下に説明する具体的な実施形態に限定はされず、特許請求の範囲及びその均等の範囲にのみ限定される。
【００１１】
図１は、クライアントプログラム１０４とサーバプログラム１１４間で動的サービス機能情報を通信する、本発明の一実施形態により強化されたシステム１００を示すブロック図である。クライアントプログラム１０４は、クライアントコンピュータ１０２上で動作する任意の適切なアプリケーションプログラムまたはシステムプログラムである。サーバプログラム１１４は、サーバコンピュータ１１２上で動作可能な、指定されたサービスを提供する任意の適切なソフトウェアである。一実施形態では、クライアントコンピュータ１０２とサーバコンピュータ１１２は、別の計算デバイスである。他の一実施形態では、クライアントコンピュータ１０２とサーバコンピュータ１１２は、クライアントプログラム１０４とサーバプログラム１１４が両方とも実行できるひとつの計算デバイスとして実施される。クライアントコンピュータ１０２とサーバコンピュータ１１２は、それぞれ任意の適切な計算デバイスであり、例えばパーソナルコンピュータ、ワークステーションなどを含む。
【００１２】
メモリ１１６がサーバコンピュータ１１２に付随し、より具体的には、サーバプログラム１１４と通信可能に結合している。メモリ１１６は、サーバコンピュータ１１２上で動作可能なサーバプログラム１１４から利用できるサービスに関するサービス機能情報を記憶するように構成されている。サーバプログラム１１４によりメモリ１１６から読み出されたサービス機能情報は、メッセージ１５０で示したように、クライアントプログラム１０４に送信される。メッセージ１５０その他の情報を送信する目的で、任意の適切な通信メカニズムを利用して、クライアントプログラム１０４をサーバプログラム１１４と結合することができる。クライアントプログラム１０４とサーバプログラム１１４が別のコンピュータ（例えば、１０２と１１２）上で動作可能な場合、クライアントプログラム１０４とサーバプログラム１４の間の通信にはイーサネット(登録商標)やＴＣＰ／ＩＰなどのネットワーク通信メディアが利用される。他の実施形態では、リモートプロシージャコールやその他のプロセス間通信メディアやプロトコルを、クライアントプログラム１０４とサーバプログラム１１４の間のメッセージ交換に利用できる。
クライアントプログラム１０４は、メッセージ１５０としてサービス機能情報を受け取ると、サービス要求を生成し、メッセージ１５２で示したようにそれをサーバプログラム１１４に送信する。サーバプログラム１１４は、サービス要求メッセージ１５２の受け取りに応じて、クライアントプログラム１０４の替わりに、要求されたサービスを実行する。
【００１３】
一実施形態では、クライアントコンピュータ１０２は、クライアントプログラム１０４と通信可能に結合したユーザ入力デバイス１０６も含む。ユーザ入力デバイス１０６は、キーボード、マウス（またはその他のポインタデバイス）、タッチスクリーン、音声認識などを含むユーザ入力を受け取るのに好適な任意のデバイスである。クライアントプログラム１０４は、メッセージ１５０としてサービス機能情報を受け取ると、ユーザ入力デバイス１０６によりユーザとインターラクトして、ユーザに、メッセージ１５０として受け取ったサービス機能情報で規定された利用可能なサービスのうちから所望のオプションや設定を選択させる。
【００１４】
一実施形態では、本発明の特徴と態様を、印刷システム会社のクライアント／サーバ通信で利用できる。図２は、印刷クライアントプログラム２０４が印刷アプリケーションクライアントコンピュータ２０２内で動作できるシステム例２００を示す。クライアントプログラム２０２は、プリントサーバコンピュータ２１２で動作可能なプリントサーバプログラム２１４と通信可能に結合している。メモリ２１６は、プリントサーバプログラム２１４と通信可能に結合し、プリントサーバプログラム２１４が提供する利用可能なサービスに関する情報を記憶するように構成されている。プリンタデバイス機能情報は、メモリ２１６から読み出して、メッセージ２５０としてプリントサーバプログラム２１４からプリントクライアントプログラム２０４に送信できる。プリントクライアントプログラム２０４は、プリンタデバイス機能情報の受け取りに応じて、プリントサーバプログラム２１４内の特定されたサービスを用いて処理するプリントジョブを規定したプリントジョブチケット（例えば、サービス要求）を生成する。プリントサーバプログラム２１４は、次に、メッセージ２５２として受け取ったプリントジョブチケット中に規定された指示（設定及びオプション）にしたがって、要求されたサービスを実行する。プリントクライアントプログラム２０４は、ユーザ入力デバイス２０６を利用して、受け取ったプリンタデバイス機能情報に示された利用可能なサービスに基づいて、ユーザに所望の印刷オプション／設定をユーザに選択させる。
【００１５】
図１を参照して説明したように、プリントアプリケーションクライアントコンピュータ２０２とプリントサーバコンピュータ２１２とは、別個の異なる計算デバイスであってもよい。あるいは、コンピュータ２０２とコンピュータ２１２は、プリントクライアントプログラム２０４とプリントサーバプログラム２１４が両方とも実行可能な１つの計算デバイスでもよい。
【００１６】
当業者は、完全に機能的なコンピュータと図１と図２に示したシステムとにおいてて、多数の付加的要素や等価な要素を容易に考えつくことができるであろう。かかる付加的要素や等価要素は説明を簡明かつ簡潔にするため、ここでは省略する。さらに、当業者には、サービス機能情報（デバイス機能等）とサービス要求（ジョブチケット等）は、（ＣＩＰ４により規定された）ＪＤＦ、（マイクロソフトコーポレーションにより規定された）ＰｒｉｎｔＳｃｈｅｍａ、ＸＭＬ、ＰＷＧ  Ｓｅｍａｎｔｉｃｓなどを含む周知の標準に従うものであることが分かるであろう。
【００１７】
図３は、本発明の一実施形態による、通信中のクライアントプログラムとサーバプログラムの動作を示すシステム３００のブロック図である。具体的に、図３のクライアントプログラム３０２は、動的サービス機能情報を利用するため、改良型サーバプログラム３２２とインターラクトし、静的サービス機能情報のみを用いる従来のレガシーサーバプログラム３３２ともインターラクトできる。レガシーサーバプログラム３３２とインターラクトする際、サーバプログラム３３２とクライアントプログラム３０２は両方とも、同一の静的サービス機能情報３０８を利用しなければならない。従来技術で行われているように、システム３００のインストレーションプロセスにより、サーバプログラム３３２とクライアントプログラム３０２が両方とも、同一の静的サービス機能情報にアクセスする。動作中、本技術分野で現在行われているように、クライアントプログラム３０２は、静的サービス機能情報３０８を用いて、サービス要求３１０（例えば、静的機能３０８から生成したジョブチケット）を生成する。このように生成されたサービス要求３１０は、要求したサービスを実行するサーバプログラム３３２に送信される。
【００１８】
本発明の一実施形態では、クライアントプログラム３０２は、改良したサービスプログラム３２２ともインターラクトして、動的サービス機能情報を利用するように構成されている。より具体的に、改良したサーバプログラム３３２は、動的に維持されたサービス機能情報３２４を記憶するメモリを含む。動的に維持されたサービス機能情報３２４は、動的に取得したサービス機能情報３０４として、クライアントプログラム３０２に送信される。クライアントプログラム３０２は、情報３０４を用いて、改良したサーバプログラム３２２にサービスを要求するサービス要求３０６（例えば、ジョブチケット）を生成する。サービス要求３０６は、動的に取得したサービス機能情報３０４の利用可能なサービスに基づき生成される。このように、サービス要求３０６は、メモリ３２４で動的に更新されサーバプログラム３２２から現在利用可能なサービスを、規定することができる。サービス要求３０６を生成する際、新しいサービスを利用できる。削除したサービスは情報３０４中では規定されておらず、クライアントプログラム３０２の動作によるサービス要求３０６には規定できない。動的情報３０４中のサービスに関連する設定やパラメータの変更はカレント（current）であり、サービス要求３０６の生成においてクライアントプログラム３０２により利用できる。このように改良した通信により、サーバプログラム３２２は更新されサービス機能が修正されているので、クライアントプログラム３０２を修正する必要はなく、動的に取得したサービス機能情報３０４を利用してサービス機能の変更を知らされていればよい。一実施形態では、サービス要求３０６は、クライアントプログラム３０２がすでに知っている動的機能（３０４）と静的機能（３０８）のいずれか、または両方の機能に基づき、クライアントプログラム３０２により生成される。このような実装により、クライアント３０２は、知っている静的サービス機能と動的サービス機能の両方を合わせたサービスを規定できる。
【００１９】
図４は、本発明の一実施形態による、改良システム１００の動作のさらに詳細を示すブロック図である。図４のクライアント４０２は、サーバプログラム４２２からの動的に取得したサービス機能情報４０４を読み出す。さらに、クライアントプログラム４０２は、動的に取得したサービス機能情報４０４に規定された利用可能なサービスに基づき、サービス要求４０６（例えば、ジョブチケット）を生成する。サーバプログラム４２２は、静的サービス機能情報４２６と動的サービス機能情報４２８を両方とも含み得る。サーバプログラム４２２は、静的情報４２６と動的情報４２８を合わせて、結合サービス機能情報（merged service capabilities information）４２４を生成する。結合サービス機能情報４２４は、クライアントプログラム４０２に送信され、動的に取得したサービス機能情報４０４として利用される。
【００２０】
当業者は、図３と図４にそれぞれ示した完全に機能的なシステム３００、４００において、多数の付加的要素や等価な要素を容易に考えつくことができるであろう。かかる付加的要素や等価要素は説明を簡明かつ簡潔にするため、ここでは省略する。
【００２１】
図５は、本発明の一実施形態による、クライアント／サーバ通信システムにおけるクライアントプログラムの動作を改良する方法例を示すフローチャートである。図５の方法は、図１ないし４にそれぞれ示したクライアントプログラム１０２、２０２、３０２、４０２などのクライアントプログラムを実行するクライアントコンピュータで実行できる。ステップ５００において、クライアントプログラムは、サーバプログラムからサービス機能情報を受信する。サービス機能情報は、クライアントプログラムが利用できる、サーバプログラムのサービスを記述する。ステップ５０２において、クライアントプログラムは、受信したサービス機能情報に基づきサービス要求を生成する。サービス機能情報中に特定されたサービスは、そのサービスに対して規定できる（サービス機能情報にも示されている）適切なパラメータや設定を特定したサービス要求において要求することができる。ステップ５０４において、生成したサービス要求をサーバプログラムに送信して、その生成されたサービス要求において特定されたサービスの実行を要求する。
【００２２】
図６は、本発明の一実施形態による、クライアント／サーバ通信システムにおけるサーバプログラムの動作を改良する方法例を示すフローチャートである。図６の方法は、図１ないし４にそれぞれ示したサーバプログラム１１２、２１２、３２２、４２２などのサーバプログラムを実行するサーバコンピュータで実行できる。ステップ６００において、サーバプログラムは、要求元のクライアントプログラムにサービス機能情報を送信する。サービス機能情報は、クライアントプログラムが利用できる、サーバプログラムから得られるサービスを記述する。ステップ６０２において、サーバプログラムは、クライアントプログラムからサービス機能情報を受信する。サービス要求は、事前にサーバプログラムからクライアントプログラムに送信された、動的に取得したサービス機能情報に基づき、クライアントプログラムにより生成される。ステップ６０４において、要求元のクライアントプログラムのために、要求されたサービスがサーバプログラムにより実行される。
【００２３】
一実施形態では、上記の通り、クライアントプログラムは印刷アプリケーションクライアントプログラムであってもよく、サーバプログラムはプリントサーバプログラムであってもよい。印刷クライアントプログラムは、サービス機能情報を、プリントサーバプログラムにより管理されたプリンタのプリンタデバイス機能を示すものとして受信してもよい。そのため、サービス機能情報に記載された機能は、プリントサーバプログラムから得られるサービスの設定とオプションを提供する。このように、サービス要求は、プリントクライアントの要求において、プリントサーバプログラムにより印刷される文書の、選択された設定とオプションを指定するプリントジョブチケットを含む。サービス要求（例えば、ジョブチケット）の受信に応じて、プリントサーバプログラムは、ジョブチケットで指定された設定とオプションに従って、特定された文書をフォーマット、レイアウト、及びレンダー（render）する。このようにフォーマットされレンダー（render）された印刷ジョブは、要求元のプリントアプリケーションクライアントプログラムの替わりに、プリントサーバプログラムの制御下で印刷される。
【００２４】
図７は、本発明の一実施形態による、クライアントプログラムがサーバプログラムから動的に維持されたサービス機能情報を受信するクライアント／サーバ通信を提供する方法例を示すフローチャートである。図７の方法は、図１ないし４を参照して説明したクライアントプログラムとサーバプログラムとを含むシステムにおいて動作し得る。特に、ステップ７００ないし７１０はクライアントプログラムにおいて動作可能であり、一方ステップ７２０ないし７２８はサーバプログラムで協力的に動作可能である。
【００２５】
一実施形態では、クライアントプログラムは、ステップ７００において、クライアントプログラムのユーザを識別するユーザ認証情報を取得する。ユーザ認証情報は、ユーザＩＤおよび／またはパスワード、個人識別番号（ＰＩＮ）、バイオメトリック情報、その他のクライアントプログラムのユーザを識別する好適な情報を含む。他の一実施形態では、サービス要求を生成するためには、ユーザを識別する必要はない。サーバプログラムの初期化の際のある時点において、またはサービスプログラム内のサービス機能が修正された時に、ステップ７２０において、事前に画定した静的サーブ情報を現在画定されている動的サービス情報により修正したものをマージして、現在のサービス機能情報を生成する。このようにマージすることにより生成されたサービス機能情報は、要求元のクライアントプログラムに送信され、そのクライアントプログラムに、サーバプログラムから現在得られるサービスを提供する。ステップ７２２において、サーバプログラムは、ステップ７２０において生成されたサービス機能情報を読み出す、クライアントプログラムからの要求を待つ。クライアントプログラムの動作に戻り、ステップ７０２において、クライアントプログラムは、サーバプログラムからのサービスが必要になると、サーバプログラムから現在のサービス機能情報の読み出し要求を生成する。上記の通り、ある実施形態では、（ステップ７００において）クライアントプログラムのユーザを識別するユーザ認証情報が得られる。かかる実施形態では、サーバプログラムからのサービス機能情報の要求は、識別されたユーザの情報（供給されたユーザ認証情報や、クライアントプログラムのユーザを識別するその他の情報等）を含む。ステップ７０４において、クライアントプログラムは、サーバプログラムから、要求されたサービス機能情報の受信を待つ。
サーバの動作に戻り、（任意的に、識別されたユーザを規定する）サービス機能情報を求める要求の受信に応じて、ステップ７２４において、要求元のクライアントプログラムに、（識別されたユーザの）要求されたサービス機能情報を送信する。ステップ７２６において、サーバプログラムは、クライアントプログラムからサービス機能情報の受信を待つ。
【００２６】
クライアントプログラムの動作に戻り、サービスプログラムからの、要求したサービス機能情報の受信に応じて、ステップ７０６において、受信したサービス機能情報中の利用可能なサービスから特定の設定やオプションを選択するユーザ入力を取得する。ユーザ入力は、本技術分野で周知のテキストまたはグラフィカルなユーザインタフェースを利用して取得できる。識別したユーザに提示するユーザインタフェースは、読み出した、動的に維持されたサービス機能情報に示された、サーバプログラムから得られる利用可能サービスのみを示すものである。ユーザによる設定やオプションの選択に続いて、ステップ７０８において、選択された設定やオプションに基づいてサービス要求を生成する。サービス要求は、クライアントプログラムの、ユーザにより要求された特定のサービスと、そのサービスに関連する任意の適切な設定またはオプションを示す。ステップ７１０において、クライアントプログラムは、サーバプログラムに、生成したサービス要求を送信する。
サーバの動作に戻り、クライアントプログラムからのサービス要求の受信に応じて、サーバプログラムは、ステップ７２８において、要求されたサービスを実行する。
【００２７】
上記の通り、一実施形態では、クライアントプログラムは印刷アプリケーションクライアントプログラムであってもよく、サーバプログラムはプリントサーバプログラムであってもよい。このように、印刷アプリケーションクライアントプログラムは、プリントサーバプログラムにプリンタデバイス機能（例えば、サービス機能情報）を要求できる。動的に維持されたサービス機能情報の受信に応じて、プリントアプリケーションクライアントプログラムは、プリントサーバプログラムから現在得られるサービスに基づき、ジョブチケット（サービス要求）を生成できる。例えば、プリントアプリケーションクライアントプログラムは、プリントサーバプログラムから現在得られるサービスに基づいた所望の設定とオプションでプリントサーバプログラムが文書を印刷することを要求できる。設定とオプションは、特定された文書に対して実行するフォーマットとレイアウトを規定し、規定された設定とオプションによりプリントサーバが文書をレンダーすることを要求するものであってもよい。
【００２８】
本技術分野の当業者は、図５乃至図７に示した完全に機能的な方法について、多数の付加的なステップや等価なステップを容易に考えつくことができるであろう。かかる付加的ステップや等価なステップは説明を容易かつ簡明にするためにここでは省略する。
【００２９】
図８は、サービス機能情報の一例で規定できるカスタマイズしたサービス機能の一例を示す図である。サービス例８００（すなわち、サービス機能）は、ＣＩＰ４標準に従って図示したように規定できる。このサービス機能の受信に応じて、クライアントプログラムは、グラフィカル（またはテキスト）ユーザインタフェースを提示して、このように規定したサービスをユーザに選択（有効化）または選択解除（非有効化）させる。（例えば、「スキューモード」サービスを有効化する）ユーザの選択８０２に基づいて、この新しく追加されたサービスのユーザによる選択を規定するジョブチケット８０４を生成する。
【００３０】
具体的な実施形態を説明したが、本発明の範囲はこれらの具体的実施形態に限定されるものではない。本発明の範囲は、特許請求の範囲とその等価範囲により決まる。
【図１】
2012053877.tif 000003
【図２】
2012053877.tif 000004
【図３】
2012053877.tif 000005
【図４】
2012053877.tif 000006
【図５】
2012053877.tif 000007
【図６】
2012053877.tif 000008
【図７】
2012053877.tif 000009
【図８】
2012053877.tif 000010