(57)【要約】【課題】サーバーに新たなサービスを追加することを容易にする。【解決手段】クライアント装置に接続されるサーバー装置は、送受信部と、複数種類のサービス部と、登録部と、要求中継部とを備える。送受信部は、クライアント装置からの要求を受信し、クライアント装置に対する応答を送信する。複数種類のサービス部は、クライアント装置からの要求に応じて、サービスを提供するための処理を実行する。登録部は、複数種類のサービス部ごとに所定の条件が登録されている。要求中継部は、送受信部により受信されたクライアント装置からの要求と、登録部に登録された条件とを比較して、複数種類のサービス部の中からサービス部を選択する。要求中継部は、さらに、選択されたサービス部に対して、送受信部により受信されたクライアント装置からの要求を与える。【選択図】図３
2007213156.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置に接続されるサーバー装置であって、
前記クライアント装置からの要求を受信し、前記クライアント装置に対する応答を送信するための送受信部と、
前記クライアント装置からの要求に応じて、サービスを提供するための処理を実行する複数種類のサービス部と、
前記複数種類のサービス部ごとに所定の条件が登録された登録部と、
前記送受信部により受信された前記クライアント装置からの要求と、前記登録部に登録された条件とを比較して、前記複数種類のサービス部の中からサービス部を選択すると共に、前記選択されたサービス部に対して、前記送受信部により受信された前記クライアント装置からの要求を与える、要求中継部と、
を備える、サーバー装置。
【請求項２】
請求項１に記載のサーバー装置において、
前記登録部に対する前記所定の条件の登録は、各サービス部により実行される、サーバー装置。
【請求項３】
請求項１または請求項２に記載のサーバー装置において、
前記登録部には、さらに、前記送受信部または前記中継処理部の処理に関する設定情報が、前記複数種類のサービス部ごとに登録され、
前記送受信部または前記中継処理部は、前記設定情報に従って、前記選択されたサービス部のための処理を実行する、サーバー装置。
【請求項４】
請求項３に記載のサーバー装置において、
前記登録部に対する前記設定情報の登録は、各サービス部により実行される、サーバー装置。
【請求項５】
クライアント装置からの要求に応じてサービスを提供する複数種類のサービス部を備える装置において、前記クライアント装置と前記サービス部とのデータのやり取りを中継するコンピュータプログラムであって、
前記クライアントからの要求を受信する機能と、
前記複数種類のサービス部のそれぞれについて登録された所定の条件を取得する機能と、
前記受信された要求と、前記取得された条件とを比較して、前記複数種類のサービス部の中からサービス部を選択すると共に、前記選択されたサービス部に対して前記受信された要求を与える機能と、
をコンピュータに実現させるコンピュータプログラム。
【請求項６】
クライアント装置からの要求に応じてサービスを提供する複数種類のサービス部を備える装置において、前記クライアント装置と前記サービス部とのデータのやり取りを中継する方法であって、
前記複数種類のサービス部のそれぞれから、所定の条件を受け付け、
前記クライアントからの要求を受信し、
前記受信された要求と、前記受け付けられた条件とを比較して、前記複数種類のサービス部の中からサービス部を選択し、
前記選択されたサービス部に前記受信された要求を与える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数種類のサービスを提供するサーバーに関する。
【背景技術】
【０００２】
ＨＴＴＰサーバーは、ＨＴＴＰ（HyperText Transfer Protocol）を用いて、クライアント装置にサービスを提供するサーバーである。ＨＴＴＰサーバーとして、ＨＴＭＬ（HyperText Markup Language）などで記述されたＷＥＢページをクライアント装置に提供するサーバーが知られている。近年、ＨＴＴＰサーバーは、ＷＥＢページの提供に留まらず、様々なサービスの提供に用いられている。例えば、ＩＰＰ（Internet Printing Protocol）対応のネットワークプリンタは、印刷データの受信をＨＴＴＰを用いて行い、印刷サービスを提供するＨＴＴＰサーバーである。
【０００３】
【特許文献１】特開２０００−１２２９４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＨＴＴＰサーバーに新たなサービスを追加することは比較的困難であった。それは、ＨＴＴＰサーバーに、新たなサービスを実行するためのアプリケーションプログラムを追加することに加えて、アプリケーションプログラムの下位プロトコル（ＨＴＴＰや、ＴＣＰ／ＩＰ）を実現するプログラムを、新たに追加されたアプリケーションプログラムに対応するように改造する必要が生じるからである。
【０００５】
このような課題は、ＨＴＴＰサーバーに限らず、例えば、ＨＴＴＰに代えて、ＦＴＰ（File Transfer Protocol）やＳＭＴＰ（Simple Mail Transfer Protocol）などのプロトコルを用いるサーバーにも共通する課題であった。
【０００６】
本発明は、上記課題を解決するためになされたものであり、サーバーに新たなサービスを追加することを容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題の少なくとも一部を解決するため、本発明の第１の態様は、クライアント装置に接続されるサーバー装置を提供する。第１の態様に係るサーバー装置は、前記クライアント装置からの要求を受信し、前記クライアント装置に対する応答を送信するための送受信部と、前記クライアント装置からの要求に応じて、サービスを提供するための処理を実行する複数種類のサービス部と、前記複数種類のサービス部ごとに所定の条件が登録された登録部と、前記送受信部により受信された前記クライアント装置からの要求と、前記登録部に登録された条件とを比較して、前記複数種類のサービス部の中からサービス部を選択すると共に、前記選択されたサービス部に対して、前記送受信部により受信された前記クライアント装置からの要求を与える、要求中継部と、を備える。
【０００８】
第１の態様に係るサーバー装置によれば、サービス部ごとに登録部に登録された条件と、要求とを比較することにより、複数種類のサービス部の中から要求を処理すべきサービス部を選択する。この結果、所定の条件を登録するだけで、サーバー装置は、要求を処理すべきサービスを容易に選択することができる。この結果、新たなサービス部を容易に、サーバー装置に追加することができる。
【０００９】
第１の態様に係るサーバー装置において、前記登録部に対する前記所定の条件の登録は、前記サービス部により実行されても良い。こうすれば、サービス部自らが、所定の条件の登録を実行するので、より新たなサービス部を容易に、サーバー装置に追加することができる。
【００１０】
第１の態様に係るサーバー装置において、前記登録部には、さらに、前記送受信部または前記中継処理部の処理に関する設定情報が、前記複数種類のサービス部ごとに登録され、前記送受信部または前記中継処理部は、前記設定情報に従って、前記選択されたサービス部のための処理を実行しても良い。こうすれば、前記サーバー装置は、サービス部ごとに登録された設定情報に従って、サービス部のための処理を行う。この結果、サービス部に応じてサーバー装置の他の要素を改造することなく、新たなサービス部を容易に追加することができる。
【００１１】
第１の態様に係るサーバー装置において、前記登録部に対する前記設定情報の登録は、各サービス部により実行されても良い。こうすれば、サービス部自らが、設定情報の登録を実行するので、より新たなサービス部を容易に、サーバー装置に追加することができる。
【００１２】
なお、本発明は、種々の態様で実現することが可能であり、例えば、クライアント装置からの要求に応じてサービスを提供する複数種類のサービス部を備える装置において、前記クライアント装置と前記サービス部とのデータのやり取りを中継する方法のような方法発明として実現することができる。あるいは、かかる装置または方法を構築するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の態様で実現することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明について、図面を参照しつつ、実施例に基づいて説明する。
【００１４】
Ａ．実施例：
・ネットワークシステムの構成：
図１は、本発明の実施例におけるネットワークシステムの概略構成図である。ネットワークシステム１０００は、図１に示すように、クライアントコンピュータ（以下、単にクライアントという。）ＣＬ１、ＣＬ２と、サーバー装置１００と、プリンタＰＲＴ１、ＰＲＴ２を含む。クライアントＣＬ１、ＣＬ２と、サーバー装置１００とは、ローカルエリアネットワーク（ＬＡＮ）に、それぞれ接続されている。プリンタＰＲＴ１、ＰＲＴ２は、それぞれ、ＵＳＢ（Universal Serial Bus）ケーブルＣＶを用いてサーバー装置１００に接続されている。サーバー装置１００は、クライアントＣＬ１、ＣＬ２から印刷要求を受け付け、プリンタＰＲＴ１、ＰＲＴ２を用いて印刷を実行するプリントサーバーとして機能する。すなわち、プリンタＰＲＴ１、ＰＲＴ２は、その印刷機能を、サーバー装置１００を介して、クライアントＣＬ１、ＣＬ２に提供する。
【００１５】
図２〜図４を参照してネットワークシステム１０００に含まれる各機器の構成について説明する。図２は、クライアントの内部構成を示す説明図である。図３は、プリントサーバー装置の内部構成を示す説明図である。図４は、プリンタの内部構成を示す説明図である。
【００１６】
クライアントＣＬ１、ＣＬ２は、周知の計算機であり、図２に示すように、中央演算装置（ＣＰＵ）２１０と、メモリ２２０と、ネットワークインターフェースカード（ＮＩＣ）２３０と、表示装置２４０を備えている。ＣＰＵ２１０は、メモリ２２０に格納された各種プログラムを実行することによりクライアントとしての機能を実現する。ＮＩＣ２３０は、ネットワークに接続するための通信インターフェースであり、具体的には、イーサネット（登録商標）の仕様に対応したケーブルを介して、ＬＡＮと接続される。
【００１７】
メモリ２２０には、種々のプログラムやデータが格納されており、図２においては、本実施例における処理に必要な構成を選択的に図示し、本明細書においては、図示された構成について説明する。メモリ２２０には、ＨＴＴＰクライアントプログラム２２１が格納されている。ＨＴＴＰクライアントプログラム２２１は、サーバー装置１００からサービスの提供を受けるために用いられるプログラムであり、例えば、ＷＥＢサービスの提供を受けるためのブラウザ機能、プリントサービスの提供を受けるためのプリンタドライバ機能を実現する。ＨＴＴＰクライアントプログラム２２１は、要求送信部２２１１と、応答受信部２２１２とを含んでいる。要求送信部２２１１は、ＬＡＮ上に接続されたサーバー装置１００に対してサービスの提供を要求するＨＴＴＰリクエストを送信する。ＨＴＴＰリクエストは、ＨＴＴＰ（HyperText Transfer Protocol）に従って、作成される。応答受信部２２１２は、ＬＡＮ上に接続されたサーバー装置１００から上述したＨＴＴＰリクエストに対する応答であるＨＴＴＰレスポンスを受信する。ＨＴＴＰリクエストの送信やＨＴＴＰレスポンスの受信は、ＨＴＴＰ、および、ＨＴＴＰの下位プロトコルであるＴＣＰ／ＩＰを用いて実行される。
【００１８】
サーバー装置１００は、図３に示すように、ＣＰＵ１１０と、メモリ１２０と、ＮＩＣ１３０と、ＵＳＢホストＩ／Ｆ部１４０を備えている。ＣＰＵ１１０は、メモリ１２０に格納されている各種プログラムを実行することにより、サーバー装置１００の機能を実現する。ＮＩＣ１３０は、ＬＡＮを介して、クライアントＣＬ１、ＣＬ２をはじめとするネットワーク上の機器と通信するためのインターフェースであり、具体的には、イーサネットの仕様に対応したケーブルを介して、ＬＡＮと接続される。ＵＳＢホストＩ／Ｆ部１４０は、ＵＳＢケーブルＣＶを接続するためのＵＳＢホストコネクタ１４１〜１４３を備え、ＵＳＢケーブルＣＶを介して、ＵＳＢデバイス（図１に示す例では、プリンタＰＲＴ１〜ＰＲＴ３）と接続される。ＵＳＢホストＩ／Ｆ部１４０は、ＵＳＢデバイスと通信するためのインターフェースであり、ＵＳＢ規格に従ったデータ通信を、接続されたＵＳＢデバイスとの間で実行する。
【００１９】
メモリ１２０には、種々のプログラムやデータが格納されており、図３においては、本実施例における処理に必要な構成を選択的に図示し、本明細書においては、図示された構成について説明する。メモリ１２０には、複数種類のサービスプログラム、すなわち、ＷＥＢサービスプログラム１２１およびプリントサービスプログラム１２２と、ＨＴＴＰサーバープログラム１２３と、登録テーブル１２５とが、格納されている。
【００２０】
ＷＥＢサービスプログラム１２１は、クライアントからのＨＴＴＰリクエストに応じて、クライアントに対してＷＥＢサービスを提供するプログラムである。ＷＥＢサービスは、例えば、ＷＥＢページを介して、プリンタＰＲＴ１〜３あるいはサーバー装置１００に関する情報の提供、プリンタＰＲＴ１〜３あるいはサーバー装置１００に関する設定（例えば、サーバー装置１００のＩＰアドレスの設定）を行うために用いられる。
【００２１】
プリントサービスプログラム１２２は、クライアントからのＨＴＴＰリクエストに応じて、プリントサービスを提供する、すなわち、プリンタＰＲＴ１〜ＰＲＴ３を用いて印刷を実行するプログラムである。このようなＨＴＴＰを使用した印刷は、例えば、ＩＰＰ（Internet Printing Protocol）として標準化されている。
【００２２】
ＷＥＢサービスプログラム１２１およびプリントサービスプログラム１２２は、それぞれ、情報登録実行部１２１１、１２２１を備えている。情報登録実行部１２１１、１２２１は、後述する登録情報を登録テーブル１２５に登録する。登録情報の登録は、例えば、各サービスプログラム１２１、１２２が起動された時に、サービスプログラムごとに実行される。
【００２３】
ＨＴＴＰサーバープログラム１２３は、主として、クライアントＣＬ１、ＣＬ２と、サービスプログラムとのデータのやり取り（リクエストやレスポンスのやり取り）を中継する。ＨＴＴＰサーバープログラム１２３は、登録情報取得部１２３１と、要求中継部１２３２と、送受信部１２３３とを含んでいる。登録情報取得部１２３１は、登録テーブル１２５に登録されている登録情報を取得する。登録情報には、後述する選択条件および設定情報が含まれる。登録テーブル１２５の具体的な内容については後述する。送受信部１２３３は、クライアントからＨＴＴＰリクエストを受信すると共に、クライアントに対してＨＴＴＰレスポンスを送信する。送受信部１２３３は、ＨＴＴＰリクエストの受信やＨＴＴＰレスポンスの送信を、ＨＴＴＰ、および、ＨＴＴＰの下位プロトコルであるＴＣＰ／ＩＰを用いて実行するが、これらのプロトコルの設定は、登録情報取得部１２３１により取得された登録情報に含まれる設定情報に従って実行される。要求中継部１２３２は、受信されたＨＴＴＰリクエストを与えるサービスプログラムを上述した複数種類のサービスプログラムの中から選択すると共に、選択されたサービスプログラムを呼び出す（コールする）。要求中継部１２３２は、選択されたサービスプログラムに、受信されたＨＴＴＰリクエストを与える。サービスプログラムの選択は、ＨＴＴＰリクエストに含まれる情報と、登録情報取得部１２３１により取得された登録情報に含まれる選択条件とを比較することにより実行される。
【００２４】
サーバー装置１００と接続されるＵＳＢデバイスであるプリンタＰＲＴ１〜ＰＲＴ３について説明する。以下の説明において、各プリンタＰＲＴ１〜ＰＲＴ３を区別する必要がない場合には、符号の末尾の数字を省略し、プリンタＰＲＴと表記する。プリンタＰＲＴは、図４に示すように、コントローラ３１０と、プリントエンジン３２０と、ＵＳＢデバイスＩ／Ｆ部３４０とを備えている。コントローラ３１０は、プリンタ全体を制御する計算機であり、ＣＰＵ３１１と、メモリ３１２を備えている。メモリ３１２には、プリンタＰＲＴの制御プログラム３１３が格納されており、ＣＰＵ３１１は、制御プログラム３１３を実行することによりプリンタＰＲＴを制御する。プリントエンジン３２０は、実際に印刷を行う機構部分であり、本実施例では、静電気によってトナー粉が付着する現象を利用して印刷用紙上に画像を形成するいわゆるレーザー式のプリントエンジンである。ＵＳＢデバイスＩ／Ｆ部３４０は、サーバー装置１００と接続するためのＵＳＢデバイスコネクタ３４５を備え、ＵＳＢケーブルＣＶを介して、サーバー装置１００と接続される。ＵＳＢデバイスＩ／Ｆ部３４０は、サーバー装置１００と通信するためのインターフェースであり、ＵＳＢ（Universal Serial Bus）規格に従ったデータ通信を、サーバー装置１００との間で実行する。
【００２５】
図５を参照して、サーバー装置１００のメモリ１２０に格納されている登録テーブル１２５について、説明する。図５は、登録テーブル１２５の具体例を概念的に示す説明図である。登録テーブル１２５は、各サービスプログラム１２１、１２２と、ＨＴＴＰサーバープログラム１２３が、それぞれアクセス可能に構成されている。登録テーブル１２５には、登録情報が、上述したサービスプログラム１２１、１２２の各情報登録実行部１２１１、１２２１により、サービスプログラムごとに登録されている。図５において登録情報１の列に記述されている登録情報は、ＷＥＢサービスプログラム１２１について登録された情報であり、登録情報２の列に記述されている登録情報は、プリントサービスプログラム１２２について登録された情報である。登録情報は、呼び出すサービスプログラムを特定する情報（図５：１行目）と共に、上述した選択条件（図５：２〜６行目）と、上述した設定情報（図５：７〜１２行目）とを含む。本実施例において、図５に示すように、選択条件の項目は、ＨＴＴＰメソッド、リクエストＵＲＩ、受信ポート番号、受信プロトコル、ＵＲＩ判定条件を含んでおり、設定情報の項目は、使用スタックサイズ、受信タイムアウト、送信タイムアウト、コネクション保持時間、マルチキャストアドレス、ループバックを含んでいる。各項目については、ＨＴＴＰサーバープログラム１２３の処理について説明する際に、後述する。
【００２６】
・サーバー装置の処理：
図６を参照して、サーバー装置１００が、起動時に実行する処理（起動処理）について説明する。図６は、サーバー装置の起動処理の処理ルーチンを示すフローチャートである。サーバー装置１００が起動されると、メモリ１２０に格納された各プログラム、すなわち、ＷＥＢサービスプログラム１２１、プリントサービスプログラム１２２、ＨＴＴＰサーバープログラム１２３が起動される（ステップＳ１０２）。
【００２７】
続いて、起動された各サービスプログラム１２１、１２２の情報登録実行部１２１１、１２２１は、登録テーブル１２５に、上述した登録情報を登録する（ステップＳ１０４）。例えば、ＷＥＢサービスプログラム１２１の情報登録実行部１２１１は、図５に示す登録情報１の列に記述された情報を登録し、プリントサービスプログラム１２２の情報登録実行部１２２１は、図５に示す登録情報２の列に記述された情報を登録する。
【００２８】
ＨＴＴＰサーバープログラム１２３の送受信部１２３３は、登録テーブル１２５に登録されたポート番号で、ＨＴＴＰリクエストの着信を待つ（ステップＳ１０６）。例えば、図５に示す登録テーブル１２５の場合には、受信ポート番号として「８０」と「６３１」が登録されているので（図５：４行目）、送受信部１２３３は、当該ポート番号で、ＨＴＴＰリクエストの着信を待つ。
【００２９】
ＨＴＴＰリクエストが着信すると（ステップＳ１０８：ＹＥＳ）、送受信部１２３３は、着信したＨＴＴＰリクエストに対する処理を呼び出し（ステップＳ１１０）、再びＨＴＴＰリクエストの着信を待つ。送受信部１２３３は、ＨＴＴＰが着信しない場合には（ステップＳ１１０：ＮＯ）、ＨＴＴＰリクエストの着信を待ち続ける。
【００３０】
図７および図８を参照して、上述した起動処理におけるステップＳ１１０において呼び出されるＨＴＴＰリクエストに対する処理について説明する。図７は、ＨＴＴＰリクエストに対する処理の処理ルーチンを示すフローチャートである。図８は、ＨＴＴＰリクエストの一例を概念的に示す説明図である。
【００３１】
着信したＨＴＴＰリクエストに対する処理は、ＨＴＴＰサーバープログラム１２３によって実行される。本処理が開始されると、送受信部１２３３は、ＨＴＴＰリクエストの先頭部分を受信する（ステップＳ２０２）。図８に示すように、ＨＴＴＰリクエスト５００は、先頭から順に、リクエストライン、ヘッダ、ボディを備えている。本ステップでは、少なくともリクエストラインを含むＨＴＴＰリクエスト５００の先頭部分を受信する。
【００３２】
続いて、ＨＴＴＰサーバープログラム１２３の要求中継部１２３２は、登録テーブル１２５に登録された選択条件と、ＨＴＴＰリクエスト５００の備える属性と比較する（ステップＳ２０４）。ここで、選択条件と比較されるＨＴＴＰリクエスト５００の属性（比較属性）は、ＨＴＴＰメソッドと、リクエストＵＲＩと、受信ポート番号と、受信プロトコルである。ＨＴＴＰメソッドと、リクエストＵＲＩは、ステップＳ２０２において受信されたＨＴＴＰリクエスト５００の先頭部分に含まれるリクエストラインに記述されている（図８）。
【００３３】
ＨＴＴＰメソッドは、ＨＴＴＰリクエスト５００がサーバー装置１００に実行を要求する処理を示すコマンドであり、例えば、「ＧＥＴ」「ＰＯＳＴ」などである。リクエストＵＲＩは、ＨＴＴＰリクエスト５００が処理の対象を指定する識別子であり、例えば、ＨＴＴＰリクエストが送信を要求するデータを特定するために用いられる。リクエストＵＲＩは、スキーム名（例えば、http）、ホスト名（例えば、xxx.co.jp）、パス名（例えば、/aaa/bbb）を含む絶対パスと、パス名のみからなる相対パスとが使用されるが、本実施例において、選択条件との比較属性として使用されるのは、パス名の部分のみである。受信ポート番号は、ＨＴＴＰリクエスト５００の宛先とされたポート番号である。受信プロトコルは、ＨＴＴＰリクエスト５００の送信に用いられた通信プロトコルであり、本実施例ではトランスポート層の通信プロトコル（ＴＣＰあるいはＵＤＰ）が選択条件として用いられる。
【００３４】
具体的には、要求中継部１２３２は、登録テーブル１２５に登録された選択条件（図５：２〜５行目）と、処理対象のＨＴＴＰリクエスト５００の比較属性を１つずつ比較して、一致する場合には、その選択条件は満足していると判断する。例えば、ＨＴＴＰリクエスト５００のリクエストラインに記述されたメソッドが、「ＰＯＳＴ」であれば、登録情報２（図５）について、ＨＴＴＰメソッドに関する選択条件は満たされていると判断される。
【００３５】
さらに、登録情報２のリクエストＵＲＩに関する選択条件は、「/IPP_printer」であり（図５：３行目）であり、ＵＲＩ判定条件は、「前方一致」となっている（図５：６行目）。かかる場合には、ＨＴＴＰリクエスト５００のリクエストラインに記述されたＵＲＩのパス名が、「/IPP_printer」と前方一致する場合に、登録情報２について、リクエストＵＲＩに関する選択条件は満たされていると判断される。さらに具体例を挙げて説明すると、ＨＴＴＰリクエスト５００のリクエストラインに記述されたリクエストＵＲＩが、「/IPP_printer/aaa」あるいは「/IPP_printer/bbb/ccc」である場合には、いずれも、登録情報２（図５）について、ＨＴＴＰメソッドに関する選択条件は満たされていると判断される。一方、もし、ＵＲＩ判定条件が「完全一致」とされている場合には、ＨＴＴＰリクエスト５００のリクエストラインに記述されたＵＲＩのパス名が、「/IPP_printer」と完全一致する場合に限って、リクエストＵＲＩに関する選択条件は満たされていると判断される。例えば、ＨＴＴＰリクエスト５００のリクエストラインに記述されたリクエストＵＲＩが、「/IPP_printer」である場合に限って、登録情報２（図５）について、ＨＴＴＰメソッドに関する選択条件は満たされていると判断され、リクエストＵＲＩが、「/IPP_printer」「/IPP_printer/aaa」あるいは「/IPP_printer/bbb/ccc」である場合には、いずれも、登録情報２について、ＨＴＴＰメソッドに関する選択条件は満たされていないと判断される。
【００３６】
ここで、図５において、登録情報１の列におけるＨＴＴＰメソッドおよびリクエストＵＲＩに関する選択条件は、「特別の条件」と記述されている。かかる場合は、ＨＴＴＰリクエスト５００の各比較属性が、他の登録情報についての選択条件を満足しない場合には、登録情報１について、ＨＴＴＰメソッドおよびリクエストＵＲＩに関する選択条件は、満たされていると判断される。例えば、図５の例では、ＨＴＴＰリクエスト５００の比較属性のいずれかが、登録情報２について登録されている選択条件を満たさない場合に、登録情報１について、ＨＴＴＰメソッドおよびリクエストＵＲＩに関する選択条件は満たされていると判断される。
【００３７】
続いて、要求中継部１２３２は、登録テーブル１２５に登録された選択条件（図５：２〜５行目）と、ＨＴＴＰリクエスト５００の属性との比較結果に基づいて、選択条件と合致するサービスプログラムを選択する（ステップＳ２０６）。具体的には、先のステップＳ２０４において、処理対象のＨＴＴＰリクエスト５００の属性が、図５の２〜５行目までの選択条件を全て満たしていると判断される登録情報がある場合には、その登録情報の１行目に記述されているサービスプログラムが選択される。具体例を挙げて説明すると、例えば、処理対象のＨＴＴＰリクエスト５００のＨＴＴＰメソッド、リクエストＵＲＩ、受信ポート番号、受信プロトコルが、それぞれ、「ＰＯＳＴ」、「/IPP_printer/aaa」、「６３１」、「ＴＣＰ」である場合には、要求中継部１２３２は、プリントサービスプログラム１２２を選択する。一方、処理対象のＨＴＴＰリクエスト５００のＨＴＴＰメソッド、リクエストＵＲＩ、受信ポート番号、受信プロトコルが、それぞれ、「ＧＥＴ」、「/config/ccc」、「８０」、「ＴＣＰ」である場合には、要求中継部１２３２は、ＷＥＢサービスプログラム１２１を選択する。もし、選択条件と合致するサービスプログラムが登録テーブル１２５に登録されていない場合には、ＨＴＴＰサーバープログラム１２３は、クライアントに対して、エラーを通知するＨＴＴＰレスポンスを送信することとしても良い。
【００３８】
サービスプログラムが選択されると、登録情報取得部１２３１は、選択されたサービスプログラムに応じた設定情報（図５：７〜１２行目）を、登録テーブル１２５から取得する（ステップＳ２０８）。本ステップで取得された設定情報は、以降の処理におけるサーバー装置１００の動作設定に用いられる。
【００３９】
設定情報が取得されると、要求中継部１２３２は、ステップＳ２０６において選択されたサービスプログラムを呼び出す（ステップＳ２１０）。ここで、要求中継部１２３２は、サービスプログラムを呼び出す際に、呼び出されたサービスプログラムが使用するスタック領域を、メモリ１２０上に割り当てる。割り当てられるスタック領域のサイズは、ステップＳ２０８において取得された設定情報に含まれる使用スタックサイズの値（図５：７行目）に設定される。スタック領域は、自動変数、関数の引数、戻り値、リターンアドレス等、サービスプログラムにより処理中に一時的に使用されるデータが格納されるメモリ領域である。要求中継部１２３２は、サービスプログラムを呼び出す際に、呼び出されたサービスプログラムに対して、処理中のＨＴＴＰリクエスト５００のうち、ステップＳ２０２において受信済みの先頭部分を与える。この結果、サービスプログラムは、ＨＴＴＰリクエスト５００に応じてサービスを提供する処理、例えば、ＷＥＢサービスプログラム１２１であればＷＥＢデータをクライアントに提供する処理、プリントサービスプログラム１２２であれば印刷を実行する処理を実行するこができる。
【００４０】
ＨＴＴＰサーバープログラム１２３の送受信部１２３３は、ステップＳ２１０において呼び出されたサービスプログラムの処理に応じて、データの送受信を実行する（ステップＳ２１２）。例えば、呼び出されたサービスプログラムは、与えられたＨＴＴＰリクエスト５００の先頭部分に続くデータ、例えば、図８におけるＨＴＴＰボディのデータを受信する必要があるため、送受信部１２３３はサービスプログラムの要求に応じて、これらのデータをクライアントから受信する。また、呼び出されたサービスプログラムは、与えられたＨＴＴＰリクエスト５００に対するＨＴＴＰレスポンスを作成すると、送受信部１２３３は、ＨＴＴＰレスポンスを、クライアントに対して送信する。本ステップにおける送受信部１２３３によるデータの送受信に関する動作設定は、ステップＳ２０８において取得された設定情報に含まれる受信タイムアウト、送信タイムアウト、ｋｅｅｐ−ａｌｉｖｅタイムアウト、マルチキャストアドレス、ループバックの有効または無効の各値（図５：８〜１２行目）に設定される。
【００４１】
なお、設定情報は、全てが登録される必要はなく、必要な情報だけ登録されれば良い。例えば、ＷＥＢサービスプログラム１２１とプリントサービスプログラム１２２についての設定情報は、図５に示すように、マルチキャストアドレスと、ループバックの有効または無効に関して、登録されていない。
【００４２】
以上、説明した本実施例におけるサーバー装置１００によれば、サービスプログラムごとに登録テーブル１２５に登録された選択条件と、ＨＴＴＰリクエスト５００の属性とを比較することにより、複数種類のサービスプログラムの中からＨＴＴＰリクエスト５００について処理すべきサービスプログラムを呼び出す。この結果、登録テーブル１２５に選択条件を登録するだけで、ＨＴＴＰサーバープログラム１２３は、ＨＴＴＰリクエスト５００を処理すべきサービスプログラムを容易に選択することができる。
【００４３】
さらに、サービスプログラムごとに登録テーブル１２５に登録された設定情報を用いて、サービスプログラムごとに、ＨＴＴＰサーバープログラム１２３の動作が設定される。この結果、ＨＴＴＰサーバープログラム１２３の動作設定が容易になる。
【００４４】
以上の説明から解るように、本実施例におけるサーバー装置１００は、新たにサービスプログラムを追加する場合、新たなサービスプログラムをインストールして、登録テーブル１２５に必要な情報を登録するだけで良い。このため、新たなサービスプログラムの追加に伴い、ＨＴＴＰサーバープログラム１２３に改造を加える必要がない。この結果、新たにサービスプログラムを追加することが容易になると共に、新たなサービスプログラムの開発が容易になる。
【００４５】
さらに、各サービスプログラムは、起動時に自身に関する選択条件および設定情報を登録テーブル１２５に登録する情報登録実行部を備える。この結果、新たなサービスプログラムを追加した場合には、サービスプログラム自身が登録テーブル１２５に、自身の動作に必要な情報を登録するので、ユーザの設定負担が軽減される。従って、新たにサービスプログラムを追加することが、さらに、容易になる。また、ＨＴＴＰサーバープログラム１２３は、新たなサービス部が追加された場合、登録テーブル１２５を参照することにより、新たなサービス部の存在を認識して、新たなサービス部に関する送受信処理をサポートするので、新たなサービス部の追加に伴うＨＴＴＰサーバープログラム１２３の改造や、再設定を、ユーザ等が行う必要もない。
【００４６】
図９〜図１０を参照して、本実施例におけるサーバー装置１００に、新たにＵＰｎＰサービスプログラムを追加する場合を説明する。図９は、ＵＰｎＰサービスプログラム追加後のサーバー装置のメモリの内部構成を概念的に示す説明図である。図１０は、ＵＰｎＰサービスプログラムの登録情報が追加された登録テーブルを概念的に示す説明図である。
【００４７】
サーバー装置１００に、新たにＵＰｎＰサービスプログラムを追加すると、図９に示すように、サーバー装置１００のメモリ１２０にＵＰｎＰサービスプログラム１２４が格納される。ＵＰｎＰサービスプログラム１２４は、上述したサービスプログラム１２１、１２２と同様に、情報登録実行部１２４７を備える。また、ＵＰｎＰサービスプログラム１２４は、複数のサブサービスプログラムとして、デバイスディスクリプションプログラム１２４１、サービスディスクリプションプログラム１２４２、イベントプログラム１２４３、コントロールプログラム１２４４、プレゼンテーションプログラム１２４５、サーチプログラム１２４６を含んでいる。ＵＰｎＰサービスプログラム１２４は、種々の機能を実現するプログラムを含んでいるが、図９には、本実施例の説明に関連するプログラム、すなわち、受信されたＨＴＴＰリクエスト５００に応じて実行される処理を実現するプログラムを選択的に図示している。デバイスディスクリプションプログラム１２４１は、クライアントからのＨＴＴＰリクエスト５００に応じて、デバイス（本実施例では、サーバー装置１００）の各種プロパティを記述したデバイスディスクリプションをＨＴＴＰレスポンスとして送信する。サービスディスクリプションプログラム１２４２は、クライアントからのＨＴＴＰリクエスト５００に応じて、サービスに関連する情報（例えば、サービスのステート情報）を記述したサービスディスクリプションをＨＴＴＰレスポンスとして送信する。イベントプログラム１２４３は、クライアントからイベント通知の購読を要求するＨＴＴＰリクエスト５００や、イベント通知の購読の終了を要求するＨＴＴＰリクエスト５００を受け付ける。コントロールプログラム１２４４は、クライアントからのＨＴＴＰリクエスト５００に応じて、指示されたアクションを実行すると共に、アクション結果をＨＴＴＰレスポンスとして送信する。プレゼンテーションプログラム１２４５は、クライアントからのＨＴＴＰリクエスト５００に応じて、デバイスの設定・操作のためのユーザインターフェースを送信する。なお、これらの各サブサービスプログラムのサービス内容は周知であるため、詳しい説明は省略する。
【００４８】
ＵＰｎＰサービスプログラム１２４が追加されると、ＵＰｎＰサービスプログラム１２４の起動時に、他のサービスプログラム１２１、１２２の起動時と同様に、情報登録実行部１２４７により設定情報および選択条件を含む登録情報が登録テーブル１２５に登録される（図６：ステップＳ１０４）。
【００４９】
ＵＰｎＰサービスプログラム１２４の情報登録実行部１２４７は、１つの登録情報だけでなく、図１０に示す登録情報３〜９までの７つの登録情報をそれぞれ登録する。このように、サービスプログラムごとに登録される登録情報の数は、１つに限られない。７つの登録情報は、イベントプログラム１２４３についての２つの登録情報（登録情報５、６）と、それ以外のサブサービスプログラムについて１つずつの登録情報（登録情報３、４、７〜９）である。
【００５０】
図１０に示すように、登録情報が新たに追加されることにより、上述した着信したＨＴＴＰリクエストに対する処理（図７）において、ＨＴＴＰサーバープログラム１２３は、改造を加えられることなく、ＨＴＴＰリクエスト５００に応じて、新たに追加されたＵＰｎＰサービスプログラム１２４の各サブサービスプログラムを含む適切なサービスプログラムを呼び出し、ＨＴＴＰリクエスト５００を与えることができる。さらに、ＨＴＴＰサーバープログラム１２３は、改造を加えられることなく、登録テーブル１２５を参照して、呼び出されたサービスプログラムに応じた適切な動作を実現することができる。
【００５１】
さらに、図１０に示すように、ＷＥＢサービスプログラム１２１と、ＵＰｎＰサービスプログラム１２４は、受信ポート番号が同一（８０）である。係る場合であっても、ＨＴＴＰサーバープログラム１２３は、他の選択条件（図１０：２、３行目）を参照することによって、呼び出すサービスプログラムを適切に判断することができる。この結果、同一の受信ポート番号を複数のサービスプログラムで使用することにより、待ち受けるボート番号の数を減らすことができ、ＨＴＴＰリクエスト５００の待ち受けタスクの負荷を軽減することができる。
【００５２】
・変形例：
・第１変形例：
上記実施例では、サーバー装置１００は、ＵＳＢケーブルを介して接続されたプリンタＰＲＴを管理するプリントサーバーであるが、プリントサーバーに限らず、他のサーバー装置であっても良く、複数種類のサービスを提供する、あるいは、提供可能なサーバー装置であれば、本実施例と同様の作用効果を得ることができる。
【００５３】
・第２変形例：
上記実施例では、サーバー装置１００は、ＨＴＴＰプロトコルを用いて、リクエストやレスポンスの通信を行う、いわゆるＨＴＴＰサーバーであるが、他の通信プロトコルを用いるサーバー装置であっても、本実施例と同様の作用効果を得ることができる。例えば、ＦＴＰ（File Transfer Protocol）やＳＭＴＰ（Simple Mail Transfer Protocol）などの通信プロトコルを用いるサーバー装置であっても良い。
【００５４】
・第３変形例：
上記実施例においては、ＬＡＮに接続されるサーバー装置１００と、プリンタＰＲＴは、別体で構成され、サーバー装置１００とプリンタＰＲＴはＵＳＢケーブルを介して接続されているが、このような構成に限られない。例えば、実施例におけるサーバー装置１００の機能を備えるプリントサーバーボードが、プリンタＰＲＴに内蔵されている構成としても良い。かかる場合には、プリントサーバーボートと、デバイスとの間は、ＵＳＢ接続に代えて、例えば、内部シリアルバスにより接続され得る。
【００５５】
・第４変形例：
上記実施例においては、サーバー装置１００が管理するＵＳＢデバイスは、プリンタＰＲＴであるが、他のＵＳＢデバイスを管理する構成としても良い。例えば、プリンタＰＲＴに代わる他のＵＳＢデバイスとして、スキャナ、プリント機能やスキャナ機能を備える複合機、コピー機、ファクシミリが用いられても良い。
【００５６】
・第５変形例：
上記実施例において、ハードウエアによって実現されていた構成の一部をソフトウエアに置き換えても良く、逆にソフトウエアによって実現されていた構成の一部をハードウエアに置き換えても良い。
【００５７】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施例におけるネットワークシステムの概略構成図。
【図２】クライアントの内部構成を示す説明図。
【図３】プリントサーバー装置の内部構成を示す説明図。
【図４】プリンタの内部構成を示す説明図。
【図５】登録テーブル１２５の具体例を概念的に示す説明図。
【図６】サーバー装置の起動処理の処理ルーチンを示すフローチャート。
【図７】ＨＴＴＰリクエストに対する処理の処理ルーチンを示すフローチャート。
【図８】ＨＴＴＰリクエストの一例を概念的に示す説明図。
【図９】ＵＰｎＰサービスプログラム追加後のサーバー装置のメモリの内部構成を示す説明図。
【図１０】ＵＰｎＰサービスプログラムの登録情報が追加された登録テーブルを概念的に示す説明図。
【符号の説明】
【００５９】
１００…サーバー装置
１１０…ＣＰＵ
１２０…メモリ
１２１…ＷＥＢサービスプログラム
１２１…サービスプログラム
１２２…プリントサービスプログラム
１２３…ＨＴＴＰサーバープログラム
１２４…ＵＰｎＰサービスプログラム１２４
１２５…登録テーブル
２１０…ＣＰＵ
２２０…メモリ
２４０…表示装置
３１０…コントローラ
３１１…ＣＰＵ
３１２…メモリ
３１３…制御プログラム
３２０…プリントエンジン
３４０…ＵＳＢデバイスＩ／Ｆ部
３４５…ＵＳＢデバイスコネクタ
５００…ＨＴＴＰリクエスト
１０００…ネットワークシステム
１２１１、１２２１、１２４７…情報登録実行部
１２３１…登録情報取得部
１２３２…要求中継部
１２３３…送受信部
１２４１…デバイスディスクリプションプログラム
１２４２…サービスディスクリプションプログラム
１２４３…イベントプログラム
１２４４…コントロールプログラム
１２４５…プレゼンテーションプログラム
１２４６…サーチプログラム
２２１１…要求送信部
２２１２…応答受信部
ＰＲＴ１〜３…プリンタ
ＣＬ１、ＣＬ２…クライアント
【図１】
2007213156.tif 000003
【図２】
2007213156.tif 000004
【図３】
2007213156.tif 000005
【図４】
2007213156.tif 000006
【図５】
2007213156.tif 000007
【図６】
2007213156.tif 000008
【図７】
2007213156.tif 000009
【図８】
2007213156.tif 000010
【図９】
2007213156.tif 000011
【図１０】
2007213156.tif 000012