(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-16
(45)【発行日】2022-05-24
(54)【発明の名称】ゲートウェイ装置、クライアントサーバシステムおよびプログラム
(51)【国際特許分類】
H04L 67/06 20220101AFI20220517BHJP
【FI】
H04L67/06
(21)【出願番号】P 2017237690
(22)【出願日】2017-12-12
【審査請求日】2020-11-19
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】特許業務法人太陽国際特許事務所
(74)【代理人】
【識別番号】110000039
【氏名又は名称】特許業務法人アイ・ピー・ウィン
(72)【発明者】
【氏名】益永 翔平
【審査官】大石 博見
(56)【参考文献】
【文献】特開2014-182712(JP,A)
【文献】高橋 健一 KENICHI TAKAHASHI,2層構造によるWebアプリケーションのWebサービス変換 Converting Web Application to Web Service by Two Layers,情報処理学会論文誌 第49巻 第1号 IPSJ Journal,日本,社団法人情報処理学会 Information Processing Society of Japan,第49巻
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/06
(57)【特許請求の範囲】
【請求項1】
クライアント装置からの処理要求を受信する受信手段と、
前記受信手段により受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行手段と、
同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換手段と、
前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信手段と、
前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析手段と、を備え
前記処理要求実行手段は、前記解析手段による解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行する
ゲートウェイ装置。
【請求項2】
前記サーバ装置が、API処理を実行するためのAPIサーバ装置であり、
前記処理要求実行手段は、前記受信手段により受信された1つの処理要求に対して、複数回のAPI呼び出し処理を前記APIサーバ装置に対して行う請求項
1記載のゲートウェイ装置。
【請求項3】
前記処理要求実行手段は、前記受信手段により指定フォルダの全ての下層フォルダのフォルダ情報及び前記指定フォルダと前記指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報の取得を要求する処理要求が受信された場合、前記サーバ装置に対して前記指定フォルダの直接下層のフォルダ情報及びファイル情報を取得する処理要求の実行を
、指定フォルダの全ての下層フォルダとファイルの情報が取得されるまで複数回繰り返すことにより、前記指定フォルダの全ての下層フォルダのフォルダ情報及び前記指定フォルダと前記指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報を取得する請求項1記載のゲートウェイ装置。
【請求項4】
前記返信手段は、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得されたフォルダ情報及びファイル情報を順次前記クライアント装置に返信する請求項
3記載のゲートウェイ装置。
【請求項5】
前記処理要求実行手段は、複数のパラメータを指定した処理要求が受信された場合、前記サーバ装置に対して複数のパラメータのうちの1つのパラメータを指定した処理要求の実行を
、前記処理要求において指定された全てのパラメータについての処理結果が取得されるまで複数回繰り返すことにより、複数のパラメータのそれぞれを指定した場合の処理結果を取得する請求項1記載のゲートウェイ装置。
【請求項6】
前記返信手段は、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得された複数のパラメータのそれぞれを指定した場合の処理結果を順次前記クライアント装置に返信する請求項
5記載のゲートウェイ装置。
【請求項7】
前記処理要求実行手段は、順番に行われるべき複数の処理内容を指定した処理要求が受信された場合、前記サーバ装置に対して最初の処理内容を指定した処理要求を実行し
、得られた処理結果
に対して次の処理内容を実行する処理要求を前記サーバ装置に対して
順次実行することにより、複数の処理内容が実行された後の処理結果を取得する請求項1記載のゲートウェイ装置。
【請求項8】
前記返信手段は、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得された全ての処理内容が実行される前の処理結果および全ての処理内容が実行された後の処理結果を順次前記クライアント装置に返信する請求項
7記載のゲートウェイ装置。
【請求項9】
前記処理要求実行手段は、複数のサーバ装置にファイルデータを格納すべき処理要求が受信された場合、前記複数のサーバ装置に対してそれぞれファイルデータを格納する処理を順次実行して、ファイルデータの格納結果を取得する請求項1記載のゲートウェイ装置。
【請求項10】
前記返信手段は、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記複数のサーバ装置から取得されたファイルデータの格納結果を順次前記クライアント装置に返信する請求項
9記載のゲートウェイ装置。
【請求項11】
処理要求を行うクライアント装置と、
受信した処理要求に基づいた処理を実行して、その処理結果を返信するサーバ装置と、
クライアント装置からの処理要求を受信する受信手段と、前記受信手段により受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行手段と、同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換手段と、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信手段と、
前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析手段と、を備え、前記処理要求実行手段は、前記解析手段による解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行するゲートウェイ装置と、
を有するクライアントサーバシステム。
【請求項12】
クライアント装置からの処理要求を受信する受信ステップと、
前記受信ステップにおいて受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行ステップと、
同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換ステップと、
前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信ステップと、
前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析ステップと、
をコンピュータに実行させるためのプログラム
であって、
前記処理要求実行ステップでは、前記解析ステップにおける解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行する
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲートウェイ装置、クライアントサーバシステムおよびプログラムに関する。
【背景技術】
【0002】
特許文献1には、WebSocketを用いる通信と、WebSocket以外のプロトコルを用いる通信とを仲介するゲートウェイ装置を用いることにより、WebSocket通信に非対応のWebサービスを利用する場合においても、クライアントアプリケーションからのリクエストによるWebSocket通信を可能とする通信方法が開示されている。
【0003】
特許文献2には、既存システムとAPI(Application Programming Interface)ゲートウェイとの間において、既存システムとのパケット送受信シーケンスをデータベースに予め格納しておき、受信したパケット内のパラメータを抽出して、データベースに格納されているパケット内のパラメータを抽出されたパラメータに置換して、パラメータが置換されたパケットを用いて既存システムとの間でパケットの送受信を実施するようにしたAPI変換システムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-045897号公報
【文献】特開2017-054411号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置、クライアントサーバシステムおよびプログラムを提供することである。
【課題を解決するための手段】
【0006】
[ゲートウェイ装置]
請求項1に係る本発明は、クライアント装置からの処理要求を受信する受信手段と、
前記受信手段により受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行手段と、
同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換手段と、
前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信手段と、
前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析手段と、を備え
前記処理要求実行手段は、前記解析手段による解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行する
ゲートウェイ装置である。
【0008】
請求項2に係る本発明は、前記サーバ装置が、API処理を実行するためのAPIサーバ装置であり、
前記処理要求実行手段は、前記受信手段により受信された1つの処理要求に対して、複数回のAPI呼び出し処理を前記APIサーバ装置に対して行う請求項1記載のゲートウェイ装置である。
【0009】
請求項3に係る本発明は、前記処理要求実行手段が、前記受信手段により指定フォルダの全ての下層フォルダのフォルダ情報及び前記指定フォルダと前記指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報の取得を要求する処理要求が受信された場合、前記サーバ装置に対して前記指定フォルダの直接下層のフォルダ情報及びファイル情報を取得する処理要求の実行を、指定フォルダの全ての下層フォルダとファイルの情報が取得されるまで複数回繰り返すことにより、前記指定フォルダの全ての下層フォルダのフォルダ情報及び前記指定フォルダと前記指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報を取得する請求項1記載のゲートウェイ装置である。
【0010】
請求項4に係る本発明は、前記返信手段が、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得されたフォルダ情報及びファイル情報を順次前記クライアント装置に返信する請求項3記載のゲートウェイ装置である。
【0011】
請求項5に係る本発明は、前記処理要求実行手段が、複数のパラメータ(媒介変数)を指定した処理要求が受信された場合、前記サーバ装置に対して複数のパラメータのうちの1つのパラメータを指定した処理要求の実行を、前記処理要求において指定された全てのパラメータについての処理結果が取得されるまで複数回繰り返すことにより、複数のパラメータのそれぞれを指定した場合の処理結果を取得する請求項1記載のゲートウェイ装置である。
【0012】
請求項6に係る本発明は、前記返信手段が、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得された複数のパラメータのそれぞれを指定した場合の処理結果を順次前記クライアント装置に返信する請求項5記載のゲートウェイ装置である。
【0013】
請求項7に係る本発明は、前記処理要求実行手段が、順番に行われるべき複数の処理内容を指定した処理要求が受信された場合、前記サーバ装置に対して最初の処理内容を指定した処理要求を実行し、得られた処理結果に対して次の処理内容を実行する処理要求を前記サーバ装置に対して順次実行することにより、複数の処理内容が実行された後の処理結果を取得する請求項1記載のゲートウェイ装置である。
【0014】
請求項8に係る本発明は、前記返信手段が、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記サーバ装置から取得された全ての処理内容が実行される前の処理結果および全ての処理内容が実行された後の処理結果を順次前記クライアント装置に返信する請求項7記載のゲートウェイ装置である。
【0015】
請求項9に係る本発明は、前記処理要求実行手段が、複数のサーバ装置にファイルデータを格納すべき処理要求が受信された場合、前記複数のサーバ装置に対してそれぞれファイルデータを格納する処理を順次実行して、ファイルデータの格納結果を取得する請求項1記載のゲートウェイ装置である。
【0016】
請求項10に係る本発明は、前記返信手段が、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、前記複数のサーバ装置から取得されたファイルデータの格納結果を順次前記クライアント装置に返信する請求項9記載のゲートウェイ装置である。
【0017】
[クライアントサーバシステム]
請求項11に係る本発明は、処理要求を行うクライアント装置と、
受信した処理要求に基づいた処理を実行して、その処理結果を返信するサーバ装置と、
クライアント装置からの処理要求を受信する受信手段と、前記受信手段により受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行手段と、同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換手段と、前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信手段と、前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析手段と、を備え、前記処理要求実行手段は、前記解析手段による解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行するゲートウェイ装置とを有するクライアントサーバシステムである。
【0018】
[プログラム]
請求項12に係る本発明は、クライアント装置からの処理要求を受信する受信ステップと、
前記受信ステップにおいて受信された1つの処理要求に対して、複数回の処理要求をサーバ装置に対して実行する処理要求実行ステップと、
同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う変換ステップと、
前記サーバ装置との間で同期通信を行い、前記クライアント装置との間では非同期通信を行うことにより、当該複数回の処理要求に対する前記サーバ装置からのそれぞれの処理結果を前記クライアント装置に順次返信する返信ステップと、
前記サーバ装置から取得された処理結果を参照して、次にどのような処理要求を前記サーバ装置に対して実行すれば前記クライアント装置から受信した処理要求を実現できるかを解析する解析ステップと、
をコンピュータに実行させるためのプログラムであって、
前記処理要求実行ステップでは、前記解析ステップにおける解析結果に基づいてクライアント装置から受信した処理要求を実現するためには新たな処理要求が必要だと判定した場合、前記サーバ装置に対して次の処理要求を実行する
プログラムである。
【発明の効果】
【0019】
請求項1に係る本発明によれば、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0021】
請求項2に係る本発明によれば、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からAPIサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0022】
請求項3に係る本発明によれば、クライアント装置がサーバ装置における指定フォルダの全ての下層フォルダのフォルダ情報及び指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報を取得する際に、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0023】
請求項4に係る本発明によれば、サーバ装置が指定フォルダの全ての下層フォルダのフォルダ情報及び指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報の取得を要求する処理要求に対応していない場合でも、クライアント装置は、1回の処理要求を送信するだけで、サーバ置における指定フォルダの全ての下層フォルダのフォルダ情報及び指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイルのファイル情報を取得することが可能なゲートウェイ装置を提供することができる。
【0024】
請求5に係る本発明によれば、サーバ装置においてパラメータを指定した処理要求を複数回実行する際に、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0025】
請求項6に係る本発明によれば、クライアント装置は、1回の処理要求を送信するだけで、サーバ置においてパラメータを指定した処理要求を複数回実行した場合の複数の処理結果を取得することが可能なゲートウェイ装置を提供することができる。
【0026】
請求項7に係る本発明によれば、サーバ装置において順番に行われるべき複数の処理要求を実行する際に、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0027】
請求項8に係る本発明によれば、クライアント装置は、1回の処理要求を送信するだけで、サーバ装置において順番に行われるべき複数の処理要求を実行した場合の処理結果を取得することが可能なゲートウェイ装置を提供することができる。
【0028】
請求項9に係る本発明によれば、複数のサーバ装置に対してそれぞれファイルデータを格納する処理要求を実行する際に、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なゲートウェイ装置を提供することができる。
【0029】
請求項10に係る本発明によれば、クライアント装置は、1回の処理要求を送信するだけで、複数のサーバ装置に対してファイルデータを格納することが可能なゲートウェイ装置を提供することができる。
【0030】
請求項11に係る本発明によれば、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なクライアントサーバシステムを提供することができる。
【0031】
請求項12に係る本発明によれば、クライアント装置が処理要求を送信する際の通信量を、クライアント装置からサーバ装置に対して処理要求を直接送信する場合と比較して、削減することが可能なプログラムを提供することができる。
【図面の簡単な説明】
【0032】
【
図1】本発明の一実施形態のクライアントサーバシステムの構成を示すシステム図である。
【
図2】本発明の一実施形態におけるゲートウェイ装置10のハードウェア構成を示すブロック図である。
【
図3】本発明の一実施形態におけるゲートウェイ装置10の機能構成を示すブロック図である。
【
図4】本発明の一実施形態のゲートウェイ装置10の動作を示すフローチャートである。
【
図5】
図4のフローチャートを参照して説明したゲートウェイ装置10の動作を説明するためのシーケンスチャートである。
【
図6】ゲートウェイ装置10の具体的な処理例1を説明する際に使用するフォルダ構成例を説明するための図である。
【
図7】本発明の一実施形態のゲートウェイ装置10における具体的な処理例1の動作を説明するためのフローチャートである。
【
図8】
図7のフローチャートを参照して説明したゲートウェイ装置10の具体的な処理例1における動作を説明するためのシーケンスチャートである。
【
図9】本発明の一実施形態のゲートウェイ装置10における具体的な処理例2の動作を説明するためのフローチャートである。
【
図10】
図9のフローチャートを参照して説明したゲートウェイ装置10の具体的な処理例2における動作を説明するためのシーケンスチャートである。
【
図11】本発明の一実施形態のゲートウェイ装置10における具体的な処理例3の動作を説明するためのシーケンスチャートである。
【
図12】本発明の一実施形態のゲートウェイ装置10における具体的な処理例4の動作を説明するためのシステム構成を説明するための図である。
【
図13】本発明の一実施形態のゲートウェイ装置10における具体的な処理例4の動作を説明するためのシーケンスチャートである。
【発明を実施するための形態】
【0033】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0034】
図1は本発明の一実施形態のクライアントサーバシステムの構成を示すシステム図である。
【0035】
本発明の一実施形態のクライアントサーバシステムは、
図1に示されるように、ゲートウェイ装置10と、クライアント装置20と、API(Application Programming Interface)サーバ装置30とから構成されている。
【0036】
クライアント装置20は、ある特定の処理を実施するためのリクエスト(処理要求)を行う。具体的には、クライアント装置20は、ゲートウェイ装置10に対して実行する処理内容が指定されたリクエストを送信する。
【0037】
ゲートウェイ装置10は、通信プロトコルの異なる複数のネットワーク間の接続を行うための装置であり、本実施形態では、クライアント装置20と、APIサーバ装置20との間の通信プログラム変換を行っている。
【0038】
このようなゲートウェイ装置10が設けられていることにより、本実施形態のクライアントサーバシステムでは、クライアント装置20とゲートウェイ装置10との間では非同期通信によりデータの送受信が行われ、APIサーバ装置30とゲートウェイ装置10との間では同期通信によりデータの送受信が行われる。
【0039】
APIサーバ装置30は、ゲートウェイ装置10を介して受信したリクエストに基づいた処理を実行して、その処理結果をゲートウェイ装置20に返信する。
【0040】
なお、本実施形態では、APIサーバ装置30は、API処理を実行するためのサーバ装置であり、ゲートウェイ装置10を介して受信したAPI呼び出しに基づくAPI呼び出し処理を実行して、その処理結果をゲートウェイ装置20に返信する。
【0041】
次に、本実施形態のクライアントサーバシステムにおけるゲートウェイ装置10のハードウェア構成を
図2に示す。
【0042】
ゲートウェイ装置10は、
図2に示されるように、CPU11、メモリ12、ハードディスクドライブ(HDD)等の記憶装置13、ネットワーク30を介して外部の装置等との間でデータの送信及び受信を行う通信インタフェース(IF)14、タッチパネル又は液晶ディスプレイ並びにキーボードを含むユーザインタフェース(UI)装置15を有する。これらの構成要素は、制御バス16を介して互いに接続されている。
【0043】
CPU11は、メモリ12または記憶装置13に格納された制御プログラムに基づいて所定の処理を実行して、ゲートウェイ装置10の動作を制御する。なお、本実施形態では、CPU11は、メモリ12または記憶装置13内に格納された制御プログラムを読み出して実行するものとして説明したが、当該プログラムをCD-ROM等の記憶媒体に格納してCPU11に提供することも可能である。
【0044】
図3は、上記の制御プログラムが実行されることにより実現されるゲートウェイ装置10の機能構成を示すブロック図である。
【0045】
本実施形態のゲートウェイ装置10は、
図3に示されるように、データ受信部31と、ゲートウェイ装置10の動作を制御している制御部32とを備えている。また、制御部32は、解析部41と、リクエスト実行部42と、プロトコル変換部43とから構成されている。
【0046】
データ送受信部31は、クライアント装置20およびAPIサーバ装置30との間でデータの送受信を行っている。具体的には、データ送受信部31は、クライアント装置20からのリクエスト(処理要求)を受信する。
【0047】
また、データ送受信部31は、APIサーバ装置30との間で同期通信を行い、クライアント装置20との間では非同期通信を行うことにより、複数回のリクエストに対するAPIサーバ装置30からのそれぞれの処理結果をクライアント装置20に順次返信する。
【0048】
解析部41は、APIサーバ装置30から取得された処理結果を参照して、次にどのようなリクエストをAPIサーバ装置30に対して実行すればクライアント装置20から受信したリクエストを実現できるかを解析する。
【0049】
リクエスト実行部42は、データ受信部31により受信された1つのリクエストに対して、複数回のリクエストをAPIサーバ装置30に対して実行する。
【0050】
また、あるリクエストに対する処理結果がAPIサーバ装置30から送信されてきた場合、リクエスト実行部42は、解析部41による解析結果に基づいてAPIサーバ装置30に対して次の処理要求を実行する。
【0051】
なお、本実施形態ではAPIサーバ装置30はAPI呼び出し処理を実行するためのサーバ装置であるため、リクエスト実行部42は、デー送受信部31によってクライアント装置20から受信された1つのリクエストに対して、複数回のAPI呼び出し処理をAPIサーバ装置30に対して行う。
【0052】
プロトコル変換部43は、同期通信を行う通信プロトコルと非同期通信を行う通信プロトコルとの間のプロトコル変換を行う。
【0053】
次に、本実施形態のクライアントサーバシステムにおけるゲートウェイ装置10の動作について図面を参照して詳細に説明する。
【0054】
先ずゲートウェイ装置10の動作を
図4のフローチャートを参照して説明する。
【0055】
ゲートウェイ装置10がクライアント装置20からのリクエストを受信すると(ステップS101)、ゲートウェイ装置10は、クライアント装置20から受信したリクエストの解析を行う(ステップS102)。
【0056】
そして、ゲートウェイ装置10は、その解析結果に基づいて、クライアント装置20から受信したリクエストを実現するためのリクエストをAPIサーバ装置30に送信する(ステップS103)。
【0057】
そして、ゲートウェイ装置10は、APIサーバ装置30において処理が実行され、APIサーバ装置30からの処理結果を受信すると(ステップS104)、クライアント装置20に処理結果を返信する(ステップS105)。
【0058】
そして、ゲートウェイ装置10は、APIサーバ装置30から受信した処理結果を解析して(ステップS106)、クライアント装置20から受信したリクエストを実現するためには新たなリクエストが必要だと判定した場合(ステップS107においてyes)、APIサーバ装置30に新たなリクエストを送信する(ステップS103)。
【0059】
このようにしてステップS103~S106の処理が繰り返され、クライアント装置20から受信したリクエストの全てが実現されると、ゲートウェイ装置10は、新たなリクエストは不要と判定して処理を終了する(ステップS107においてno)。
【0060】
次に、
図4のフローチャートを参照して説明したゲートウェイ装置10の動作を、
図5のシーケンスチャートを参照して説明する。なお、
図5のシーケンスチャートでは、ゲートウェイ装置10は、クライアント装置20からのリクエストに対して、3回のリクエスト(API呼び出し)をAPIサーバ装置30に送信するものとして説明する。
【0061】
クライアント装置20がゲートウェイ装置10にリクエストを送信すると(ステップS201)、ゲートウェイ装置10は、クライアント装置20から受信したリクエストを実現するためのAPI呼び出し(リクエスト)をAPIサーバ装置30に送信する(ステップS202)。
【0062】
そして、APIサーバ装置30では、受信したAPI呼び出しに基づいて処理が実行され、その処理結果がゲートウェイ装置10に送信される(ステップS203)。すると、ゲートウェイ装置10は、APIサーバ装置30から受信した処理結果をクライアント装置20に返信する(ステップS204)。
【0063】
さらに、ゲートウェイ装置10は新たなAPI呼び出し(ステップS205)をAPIサーバ装置30に送信して、APIサーバ装置30からゲートウェイ装置10に処理結果が返信され(ステップS206)、ゲートウェイ装置10からクライアント装置20に処理結果が返信される(ステップS207)。
【0064】
最後に、ゲートウェイ装置10は新たなAPI呼び出し(ステップS208)をAPIサーバ装置30に送信して、APIサーバ装置30からゲートウェイ装置10に最終的な処理結果が返信され(ステップS209)、ゲートウェイ装置10からクライアント装置20に最終的な処理結果が返信される(ステップS210)。
【0065】
図5のシーケンスチャートを参照すると、クライアント装置20からゲートウェイ装置10に対しては1回のリクエスト(ステップS201)のみが行われるだけで、ゲートウェイ装置10からAPIサーバ装置30に対しては3回のAPI呼び出し(ステップS202、S205、S208)が行われているのが分かる。
【0066】
次に、上記で説明した本実施形態のクライアントサーバシステムにおけるゲートウェイ装置10の動作を、下記の具体的な処理例1~4を用いて説明する
【0067】
[具体的な処理例1]
先ず、具体的な処理例1として、APIサーバ装置30が、ストレージサービスを提供しており、クライアント装置20がAPIサーバ装置30における指定フォルダの下層フォルダのフォルダ情報と、指定フォルダと指定フォルダの下層フォルダに含まれるファイル情報を取得する場合を用いて説明する。
【0068】
例えば、
図6に示すようなAPIサーバ装置30内に格納されている指定フォルダ61の下層フォルダのフォルダ情報と、指定フォルダ61と指定フォルダ61の下層フォルダに含まれるファイル情報を、クライアント装置20が取得する場合について説明する。
【0069】
ここで、指定フォルダの下層フォルダの構造であるフォルダ情報を取得するための処理要求には、GetDescendantsリクエストと、GetChildrenリクエストという2種類のリクエストが存在する。
【0070】
そして、GetDescendantsリクエストは、指定フォルダの全ての下層フォルダと、指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイルの情報を取得するための処理要求である。そして、GetChildrenリクエストは、指定フォルダの直近(直接)の下層フォルダとファイルの情報のみを取得するための処理要求である。
【0071】
例えば、フォルダ61を指定してGetChildrenリクエストという処理要求を実行した場合、フォルダ62、63というフォルダ情報のみが取得される。また、フォルダ61を指定してGetDescendantsリクエストという処理要求を実行した場合、フォルダ62~66という全ての下層フォルダのフォルダ情報が取得される。
【0072】
ここで、クライアント装置20は、GetDescendantsリクエストを要求可能であるが、APIサーバ装置30では、GetDescendantsリクエストには対応しておらず、GetChildrenリクエストのみが実行可能であるとする。
【0073】
つまり、クライアント装置20からAPIサーバ装置30に対して、GetDescendantsリクエストを直接送信したとしても、APIサーバ装置30においては、GetDescendantsリクエストを実行することができない。
【0074】
そこで、本実施形態のゲートウェイ装置10におけるリクエスト実行部42は、データ送受信部31によりクライアント装置20から指定フォルダの全ての下層フォルダのフォルダ情報と、指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイル情報の取得を要求するGetDescendantsリクエストが受信された場合、APIサーバ装置30に対して指定フォルダの直接下層のフォルダ情報とファイル情報を取得するGetChildrenリクエストの実行を複数回繰り返すことにより、指定フォルダの全ての下層フォルダのフォルダ情報とファイル情報を取得する。
【0075】
そして、データ送受信部31は、APIサーバ装置30との間で同期通信を行い、クライアント装置20との間では非同期通信を行うことにより、APIサーバ装置30から取得されたフォルダ情報を順次クライアント装置20に返信する。
【0076】
次に、この具体的な処理例1におけるゲートウェイ装置10の動作を
図7のフローチャートを参照して説明する。
【0077】
ゲートウェイ装置10がクライアント装置20からのGetDescendantsリクエストを受信すると(ステップS301)、ゲートウェイ装置10は、クライアント装置20から受信したGetDescendantsリクエストの解析を行う(ステップS302)。
【0078】
そして、ゲートウェイ装置10は、その解析結果に基づいて、クライアント装置20から受信したリクエストを実現するためのGetChildrenリクエストをAPIサーバ装置30に送信する(ステップS303)。
【0079】
そして、ゲートウェイ装置10は、APIサーバ装置30において処理が実行され、APIサーバ装置30からの処理結果、つまり指定フォルダの直近下層のフォルダとファイルの情報を受信すると(ステップS304)、クライアント装置20に対して、そのフォルダ情報とファイル情報を処理結果として返信する(ステップS305)。
【0080】
そして、ゲートウェイ装置10は、APIサーバ装置30から受信した処理結果を解析して(ステップS306)、APIサーバ装置30における指定フォルダの全ての下層フォルダの情報と、指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイル情報が取得されていない場合(ステップS307においてno)、APIサーバ装置30に新たなGetChildrenリクエストを送信する(ステップS303)。
【0081】
このようにしてステップS303~S306の処理が繰り返され、APIサーバ装置30における指定フォルダの全ての下層フォルダとファイルの情報が取得されると、ゲートウェイ装置10は、新たなGetChildrenリクエストは不要と判定して処理を終了する(ステップS307においてyes)。
【0082】
次に、
図7のフローチャートを参照して説明したゲートウェイ装置10の具体的な処理例1における動作を、
図8のシーケンスチャートを参照して説明する。
【0083】
クライアント装置20がゲートウェイ装置10にGetDescendantsリクエストを送信すると(ステップS401)、ゲートウェイ装置10は、クライアント装置20から受信したGetDescendantsリクエストを実現するためのGetChildrenリクエストをAPIサーバ装置30に送信する(ステップS402)。
【0084】
そして、APIサーバ装置30では、受信したGetChildrenリクエストに基づいて、指定フォルダの直近下層フォルダのフォルダ情報と直近下層ファイルのファイル情報を取得する処理が実行され、その処理結果がフォルダ情報及びファイル情報としてゲートウェイ装置10に送信される(ステップS403)。すると、ゲートウェイ装置10は、APIサーバ装置30から受信したフォルダ情報とファイル情報をクライアント装置20に返信する(ステップS404)。
【0085】
そして、ステップS402~S404と同様な処理が繰り返され、APIサーバ装置30における指定フォルダの全ての下層フォルダのフォルダ情報と、指定フォルダと指定フォルダの下層フォルダに含まれる全てのファイル情報が最終的な処理結果として、ゲートウェイ装置10からクライアント装置20に返信される(ステップS405~S410)。
【0086】
図8のシーケンスチャートを参照すると、クライアント装置20からゲートウェイ装置10に対してはGetDescendantsリクエストという1回のリクエスト(ステップS401)のみが行われるだけで、ゲートウェイ装置10からAPIサーバ装置30に対しては複数回のGetChildrenリクエスト(ステップS402、S405、S408)が行われているのが分かる。
【0087】
[具体的な処理例2]
次に、具体的な処理例2として、クライアント装置20が複数のパラメータ(パラメータセット)を指定した処理結果をAPIサーバ装置30から取得したい場合に、APIサーバ装置30では1回のリクエストにおいて1つのパラメータの指定しか受付けていない場合を用いて説明する。
【0088】
本実施形態のゲートウェイ装置10におけるリクエスト実行部42は、複数のパラメータ(媒介変数)を指定したリクエストが受信された場合、APIサーバ装置30に対して複数のパラメータのうちの1つのパラメータを指定したリクエストの実行を複数回繰り返すことにより、複数のパラメータのそれぞれを指定した場合の処理結果を取得する。
【0089】
データ送受信部31は、APIサーバ装置30との間で同期通信を行い、クライアント装置20との間では非同期通信を行うことにより、APIサーバ装置30から取得された複数のパラメータのそれぞれを指定した場合の処理結果を順次クライアント装置20に返信する。
【0090】
次に、この具体的な処理例2におけるゲートウェイ装置10の動作を
図9のフローチャートを参照して説明する。
【0091】
ゲートウェイ装置10がクライアント装置20から複数のパラメータを指定したリクエストを受信すると(ステップS501)、ゲートウェイ装置10は、クライアント装置20から受信したリクエストの解析を行う(ステップS502)。
【0092】
そして、ゲートウェイ装置10は、その解析結果に基づいて、クライアント装置20から受信したリクエストを実現するために1つのパラメータを指定したリクエストをAPIサーバ装置30に送信する(ステップS503)。
【0093】
そして、ゲートウェイ装置10は、APIサーバ装置30において処理が実行され、APIサーバ装置30からの処理結果、つまり1つのパラメータを指定したリクエストを実行した処理結果を受信すると(ステップS504)、クライアント装置20に対して、その処理結果を返信する(ステップS505)。
【0094】
そして、ゲートウェイ装置10は、全てのパラメータを指定した場合の処理結果が取得されていない場合(ステップS506においてno)、APIサーバ装置30に次のパラメータを指定した新たなリクエストを送信する(ステップS503)。
【0095】
このようにしてステップS503~S506の処理が繰り返され、全てのパラメータについての処理結果が取得されると、ゲートウェイ装置10は、新たなリクエストは不要と判定して処理を終了する(ステップS506においてyes)。
【0096】
次に、
図9のフローチャートを参照して説明したゲートウェイ装置10の具体的な処理例2における動作を、
図10のシーケンスチャートを参照して説明する。
【0097】
クライアント装置20がゲートウェイ装置10に3つのパラメータA、B、Cを指定したリクエストを送信すると(ステップS601)、ゲートウェイ装置10は、パラメータAを指定したリクエスト(パラメータA)をAPIサーバ装置30に送信する(ステップS602)。
【0098】
そして、APIサーバ装置30では、受信したリクエスト(パラメータA)に基づいて処理が実行され、その処理結果(A)がゲートウェイ装置10に送信される(ステップS603)。すると、ゲートウェイ装置10は、APIサーバ装置30から受信した処理結果(A)をクライアント装置20に返信する(ステップS604)。
【0099】
そして、ステップS602~S604と同様な処理が繰り返され、パラメータB、Cについての処理結果が取得され、ゲートウェイ装置10からクライアント装置20に順次返信される(ステップS605~S610)。
【0100】
図10のシーケンスチャートを参照すると、クライアント装置20からゲートウェイ装置10に対してはパラメータA、B、Cという3つのパラメータを指定した1回のリクエスト(ステップS601)のみが行われるだけで、ゲートウェイ装置10からAPIサーバ装置30に対してはパラメータA、B、Cのそれぞれを指定した3回のリクエスト(ステップS602、S605、S608)が行われているのが分かる。
【0101】
[具体的な処理例3]
次に、具体的な処理例3として、あるリクエストに基づくAPIサーバ装置30における処理結果を取得して、取得した処理結果を用いて再度APIサーバ装置30に対してリクエストを行う場合を用いて説明する。
【0102】
本実施形態のゲートウェイ装置10におけるリクエスト実行部42は、順番に行われるべき複数の処理内容を指定したリクエストが受信された場合、APIサーバ装置30に対して最初の処理内容を指定したリクエストを実行し、次の処理内容を得られた処理結果に実行するリクエストをAPIサーバ装置30に対して実行することにより、複数の処理内容が実行された後の処理結果を取得する。
【0103】
データ送受信部31は、APIサーバ装置30との間で同期通信を行い、クライアント装置20との間では非同期通信を行うことにより、APIサーバ装置30から取得された全ての処理内容が実行される前の処理結果および全ての処理内容が実行された後の処理結果を順次クライアント装置20に返信する。
【0104】
次に、
図11のシーケンスチャートを参照してゲートウェイ装置10の具体的な処理例3における動作を説明する。なお、
図11のシーケンスチャートでは、ある画像データに対してフィルタ処理を実行して、そのフィルタ処理後の画像データに対してさらにサイズ変更処理を実行する場合について説明する。
【0105】
クライアント装置20がゲートウェイ装置10に2つの処理内容を示すパラメータ「フィルタ」、「サイズ変更」を指定したリクエストを送信すると(ステップS701)、ゲートウェイ装置10は、パラメータ「フィルタ」を指定したリクエスト(「フィルタ」)をAPIサーバ装置30に送信する(ステップS702)。
【0106】
そして、APIサーバ装置30では、受信したリクエスト(「フィルタ」)に基づいて画像データに対するフィルタ処理が実行され、その処理結果(フィルタ)がゲートウェイ装置10に送信される(ステップS703)。すると、ゲートウェイ装置10は、APIサーバ装置30から受信した処理結果(フィルタ)をクライアント装置20に返信する(ステップS704)。
【0107】
そして、ゲートウェイ装置10は、処理結果(フィルタ)に対して、さらに「サイズ変更」を指定したリクエストをAPIサーバ装置30に送信する(ステップS705)。
【0108】
すると、APIサーバ装置30では、受信したリクエスト(「サイズ変更」)に基づいて、フィルタ処理後の画像データに対するサイズ変更処理が実行され、その処理結果(サイズ変更)がゲートウェイ装置10に送信される(ステップS706)。すると、ゲートウェイ装置10は、APIサーバ装置30から受信した最終的な処理結果(サイズ変更)をクライアント装置20に返信する(ステップS707)。
【0109】
図11のシーケンスチャートを参照すると、クライアント装置20からゲートウェイ装置10に対してはパラメータ「フィルタ」、「サイズ変更」という2つのパラメータを指定した1回のリクエスト(ステップS701)のみが行われるだけで、ゲートウェイ装置10からAPIサーバ装置30に対してはパラメータ「フィルタ」、「サイズ変更」を指定した2回のリクエスト(ステップS702、S705)が行われているのが分かる。
【0110】
[具体的な処理例4]
次に、具体的な処理例4として、
図12に示すようにストレージサービスを提供している複数のAPIサーバ装置30A、30Bが存在する場合に、クライアント装置20から複数のAPIサーバ装置30A、30Bに対して、ファイルデータを格納するリクエストを送信して、そのファイルデータの格納結果を取得する場合を用いて説明する。
【0111】
本実施形態のゲートウェイ装置10におけるリクエスト実行部42は、複数のAPIサーバ装置30A、30Bにファイルデータを格納すべきリクエストが受信された場合、複数のAPIサーバ装置30A、30Bに対してそれぞれファイルデータを格納する処理を順次実行して、ファイルデータの格納結果を取得する。
【0112】
データ送受信部31は、APIサーバ装置30との間で同期通信を行い、クライアント装置20との間では非同期通信を行うことにより、複数のAPIサーバ装置30A、30Bから取得されたファイルデータの格納結果を順次クライアント装置20に返信する。
【0113】
次に、
図13のシーケンスチャートを参照してゲートウェイ装置10の具体的な処理例4における動作を説明する。
【0114】
先ず、クライアント装置20がゲートウェイ装置10に、ファイルデータをアップロードするための1つのリクエストを送信すると(ステップS801)、先ず、ゲートウェイ装置10は、ファイルデータをアップロードするためのリクエストをAPIサーバ装置30Aに送信する(ステップS802)。
【0115】
すると、APIサーバ装置30Aでは、受信したリクエストに基づいてファイルデータのアップロード処理が実行され、その処理結果がゲートウェイ装置10に送信される(ステップS803)。そして、ゲートウェイ装置10は、APIサーバ装置30Aから受信した処理結果をクライアント装置20に返信する(ステップS804)。
【0116】
次に、ゲートウェイ装置10は、ファイルデータをアップロードするためのリクエストをAPIサーバ装置30Bに送信する(ステップS805)。すると、APIサーバ装置30Bでは、受信したリクエストに基づいてファイルデータのアップロード処理が実行され、その処理結果がゲートウェイ装置10に送信される(ステップS806)。そして、ゲートウェイ装置10は、APIサーバ装置30Bから受信した処理結果をクライアント装置20に返信する(ステップS807)。
【0117】
図13のシーケンスチャートを参照すると、クライアント装置20からゲートウェイ装置10に対して1回のファイルアップロードのリクエスト(ステップS801)のみが行われるだけで、ゲートウェイ装置10からAPIサーバ装置30A、30Bのそれぞれに対してファイルデータをアップロードするための2回のリクエスト(ステップS802、S805)が行われているのが分かる。
【0118】
[変形例]
上記実施形態では、APIサーバ装置30において複数回の処理が実行される場合に、ゲートウェイ装置10からクライアント装置20に対して処理結果が順次送信される場合を用いて説明したが、複数回の処理結果をまとめて、または最終的な処理結果のみが送信されるようにしても良い。また、クライアント装置20に対する処理結果の送信よりもAPIサーバ装置30への次のリクエストを優先して送信するようにしても良い。
【符号の説明】
【0119】
10 ゲートウェイ装置
11 CPU
12 メモリ
13 記憶装置
14 通信インタフェース(IF)
15 ユーザインタフェース(UI)装置
16 制御バス
20 クライアント装置
30、30A、30B APIサーバ装置
31 データ送受信部
32 制御部
41 解析部
42 リクエスト実行部
43 プロトコル変換部