JP2004265164A - Service cooperation system and service cooperation method between client and server using data transfer protocol - Google Patents

Service cooperation system and service cooperation method between client and server using data transfer protocol Download PDF

Info

Publication number
JP2004265164A
JP2004265164A JP2003055141A JP2003055141A JP2004265164A JP 2004265164 A JP2004265164 A JP 2004265164A JP 2003055141 A JP2003055141 A JP 2003055141A JP 2003055141 A JP2003055141 A JP 2003055141A JP 2004265164 A JP2004265164 A JP 2004265164A
Authority
JP
Japan
Prior art keywords
server
client
data
information
text document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2003055141A
Other languages
Japanese (ja)
Inventor
Yoshiyuki Beppu
祥之 別府
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2003055141A priority Critical patent/JP2004265164A/en
Publication of JP2004265164A publication Critical patent/JP2004265164A/en
Withdrawn legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To reduce the processing load of remote method calling which transfers data having structures, and to reduce a storage capacity in a system construction for executing XML parsing. <P>SOLUTION: This service cooperation system is provided with a client non-cursive data expression generation serializer 230 for converting remote method calling having arguments by a multi-stage structure between a client and a server into a text format constituted at most of one stage hierarchy by assigning an ID pointer. The transferred data in the text format are inverted into the multi-level hierarchy of a programming language by using a server ID pointer table 323 or a server parameter information preparing means 324. Thus, cooperation independent of a programming language between the client and the server or an operating system can be conducted. Also, the hierarchy of the transmitted data is limited to one stage at most so that high speed processing can be performed with a size-reduced and weight-reduced program, and the efficient use of hardware resources such as equipment having no hard disk can be attained. <P>COPYRIGHT: (C)2004,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、OS(オペレーティングシステム)及びプログラミング言語に依存せずに処理可能な形式でデータ転送を行うことでRPC(Remote Procedure Call)によるサービス連携を行うシステム及びその方法に関し、特に、構造を持つデータを受け渡す遠隔メソッド呼出しの処理負荷の軽減とこのXML(エクステンシブル・マークアップ・ランゲージ)パーシングを行うシステム構築で必要とするような大きな記憶容量の削減とのため、構造化されたデータを高々一段階までの階層構造の軽量データ転送プロトコルを用いてサービスを連携させることができるシステム、及びその方法に関する。
【0002】
【従来の技術】
従来のデータ転送システムでは、WWWコンソーシアム(ワールドワイドウェブコンソーシアム:World Wide Web Consortium)における標準化文書SOAP(シンプルオブジェクトアクセスプロトコル1.1:Simple Object Access Protocol 1.1)によりネットワークを通じて受け渡されるプロトコルが定義されている。
【0003】
例えば、図14に示されるように、従来のデータ転送システムは、SOAPクライアント900及びSOAPサーバ800により構成されている。SOAPクライアント900は、クライアントアプリケーション210、SOAPクライアントライブラリ910、クライアントXML(エクステンシブルマークアップランゲージ:Extensible Markup Language)シリアライザ920、クライアントXMLパーサ930、及びHTTPクライアント230を含む。クライアントXMLシリアライザ920は、クライアント構造型データ解釈部921及びクライアントXML文書作成手段922を含む。クライアントXMLパーサ930は、クライアントXML文書パース部931、クライアントXML階層管理部932、及びクライアント構文木作成部933を含む。
【0004】
SOAPサーバ800は、HTTP(Hypertext TransferProtocol)サーバ310、サーブレットエンジン810、SOAPサーバサーブレット820、XMLシリアライザ920とXMLパーサ930、サーバアプリケーション管理330、及びサーバアプリケーション340を含む。サーバXMLシリアライザ830は、サーバ構造型データ解釈部831及びサーバXML文書作成手段832を含む。サーバXMLパーサ840は、サーバXML文書パース部841、サーバXML階層管理部842、及びサーバ構文木作成部843を含む。
【0005】
このような構成を有する従来のデータ転送システムは次のように動作する。
【0006】
クライアントアプリケーション210は、プログラミング言語のデータを用いて、HTTPサーバのホスト名及びポート番号、SOAPサーバ800のサーバアプリケーション340に対応するサービス名、サーバアプリケーション340において起動するメソッド名、及びメソッド起動に用いる引数情報を、SOAPクライアンライブラリ910に送付する。SOAPクライアントライブラリ910は、サーバアプリケーション340に対応するサービス名、サーバアプリケーション340において起動するメソッド名、及びメソッド起動に用いる引数をクライアントXMLシリアライザ920のクライアント構造型データ解釈部921に送付する。
【0007】
クライアントXMLシリアライザ920でのクライアント構造型データ解釈部921は、受けた構造型データを深さ優先でデータ構造をたどりながらクライアントXML文書作成手段922に送付する。クライアントXML文書作成手段922は受けた深さ優先の構造のままXML文書に変換した後、変換したXML文書をHTTPクライアント230に送付する。更に、HTTPクライアント230は、受けたXML文書にHTTPのヘッダーを付け、ネットワーク500を介して、SOAPサーバ800のHTTPサーバ310に送付する。
【0008】
SOAPサーバ800で、HTTPサーバ310は、HTTPヘッダーを見てSOAPサーバサーブレット820で処理させるべきであると判断し、サーブレットエンジン810上で動作するSOAPサーバサーブレット820にXML文書部分を送付する。SOAPサーバサーブレット820は、サーバXMLパーサ840を用いてXML文書をパーシングしプログラミング言語によるデータに変換し、その後、変換したものをサーバアプリケーション管理330に送付する。
【0009】
この際、サーバXMLパーサ840の内部では、まず、サーバXML文書パース部841でXMLのタグ情報を解析し、XMLの階層を深くする開始タグが出現した場合にはサーバXML階層管理部842に階層の一段を記憶させる一方、XMLの階層を浅くする終了タグが出現した場合にはサーバXML階層管理部842の階層を一段階減らすことを行いながら、サーバ構文木作成部843がプログラミング言語の構造型データのデータを構文木のデータとして作成する。
【0010】
サーバアプリケーション管理330は、受けたプログラミング言語の構文木データから、起動すべきサーバアプリケーション340を見つけ、サーバアプリケーション340を起動してアプリケーションレベルの戻り値を得る。更に、サーバアプリケーション管理330は、得た戻り値を、サーバXMLシリアライザ830を用いて、XML文書の形式に変換し、SOAPサーバサーブレット820に送付する。
【0011】
この際、サーバXMLシリアライザ830では、特にサーバ構造型データ解釈部831が、受けた戻り値を深さ優先でデータ構造をたどりながらサーバXML文書作成手段832に送付する。サーバXML文書作成手段832は深さ優先の構造をたどりながらXML文書に変換した後、変換したXML文書をSOAPサーバサーブレット820に送付する。SOAPサーバサーブレット820は、受けたXML文書をHTTPサーバ310に返送する。HTTPサーバ310は、返されたXML文書にHTTPのヘッダーをつけ、ネットワーク500経由でHTTPクライアント230に返送する。
【0012】
HTTPクライアント230は、XML文書をクライアントXMLパーサ930でパーシングを行い、プログラミング言語のデータ型に変換してSOAPクライアントライブラリ910に返送する。
【0013】
クライアントXMLパーサ930では、まずクライアントXML文書パース部931が、XMLのタグ情報を解析し、XMLの階層を深くする開始タグが出現した場合にはクライアントXML階層管理部932に階層の一段を記憶させる一方、XMLの階層を浅くする終了タグが出現した場合にはクライアントXML階層管理部932の階層を一段階減らすことを行いながら、クライアント構文木作成部933がプログラミング言語の戻り値のデータを構文木のデータとして作成する。
【0014】
最後に、SOAPクライアントライブラリ910は、返されたプログラミング言語による戻り値のデータを、クライアントアプリケーション210が要求する型に、変換して返送する。
【0015】
従来のクライアントとサーバとを連携させるためのコードを生成する技術としては、IDL(Interface Difinition Language)コンパイラがある。
【0016】
図15に示されるIDLコンパイラ1000は、従来のクライアントとサーバとを連携させるためのコードを生成する技術で、IDL解釈手段1010、IDLデータ型解釈手段1020、IDLシリアライズコード作成手段1030、及びIDLパーサコード作成手段1040を含む。連携するクライアントであるIDLクライアント1100と連携するサーバであるIDLサーバ1200とは、ネットワーク500で連結されている。
【0017】
IDLクライアント1100は、IDLクライアントアプリケーション1110、IDLクライアントライブラリ1120、クライアントIDLシリアライザ1130、クライアントトランスポートライブラリ1140、及びクライアントIDLパーサを含む。
【0018】
IDLサーバ1200は、サーバトランスポートライブラリ1210、サーバIDLパーサ、IDLサーバライブラリ1230、IDLサーバアプリケーション1240、及びサーバIDLシリアライザ1250を含む。
【0019】
このような構成を有する従来のクライアントとサーバとが連携するシステムは次のように動作する。
【0020】
まず、IDLクライアントアプリケーション1110は、IDLクライアントライブラリ1120に、IDLサーバ1200内のIDLサーバアプリケーションのリモートプロシージャコール(Remote Procedure Call)に必要な引数情報を、プログラミング言語のデータ型で送付して、起動を要求する。IDLクライアントライブラリ1120は、クライアントIDLシリアライザ1130に、ネットワーク500で転送可能なデータ形式に転送データを変換することを要求する。クライアントIDLシリアライザ1130は、転送データを、ネットワーク500で転送可能な形式に変換した後、クライアントトランスポートライブラリ1140を用いてネットワーク500経由でIDLサーバ側へ送付する。
【0021】
次に、サーバトランスポートライブラリ1210は、ネットワーク500から転送データを受け取り、サーバIDLパーサ1220に送付する。サーバIDLパーサ1220は、受けたネットワーク500で転送可能な形式のデータを、プログラミング言語のデータ型の引数情報に変換し、変換した結果をIDLサーバライブラリ1230に送付する。IDLサーバライブラリ1230は、サーバIDLパーサ1220から受けた引数情報を用いて、起動するIDLサーバアプリケーション1240を発見し、発見したIDLサーバアプリケーション1240にプログラミング言語のデータ型で引数を送付する。
【0022】
IDLサーバアプリケーション1240は、IDLサーバライブラリ1230から引数を受け取った後、アプリケーションを実行し、実行結果の戻り値をIDLサーバライブラリ1230にプログラミング言語のデータ型で返送する。IDLサーバライブラリ1230は、IDLサーバアプリケーション1240から戻されたプログラミング言語のデータ型をネットワーク500で転送可能な形式に変換するように、サーバIDLシリアライザ1250に要求する。サーバIDLシリアライザ1250は、IDLサーバライブラリ1230から受け取ったプログラミング言語のデータ型を、ネットワーク500内で転送可能な形式に変換した後、サーバトランスポートライブラリ1210を用いてネットワーク500を通じIDLクライアント1100に送付する。
【0023】
IDLクライアン1100内では、クライアントトランスポートライブラリ1140が、ネットワーク500で転送可能なデータ形式でIDLサーバアプリケーション1240の実行結果を受け取り、クライアントIDLパーサ1150に送付する。クライアントIDLパーサ1150は、ネットワーク500で転送可能なデータ形式をプログラミング言語のデータ型に変換し、IDLクライアントライブラリ1120に送付する。最後に、IDLクライアントライブラリ1120は、クライアントIDLパーサ1150から受けたプログラミング言語のデータ型であるIDLサーバアプリケーション1240の実行結果の戻り値をIDLクライアントアプリケーション1110に返送する。
【0024】
次に、IDLクライアント1100内のクライアントIDLシリアライザ1130及びクライアントIDLパーサ1150、並びにIDLサーバ1200内のサーバIDLパーサ1220及びサーバIDLシリアライザ1250を生成するIDLコンパイラ1000の動作について説明する。
【0025】
まず、IDL解釈手段1010は、インタフェース記述言語のうち、特にアイ・デイー・エル(IDL)というオブジェクト・マネジメント・グループ(Object Management Group)で標準化された形式でIDLサーバアプリケーション1240の形式を記述したものを入力として受け付ける。次に、IDL解釈手段1010は、IDLデータ型解釈手段1020を用いて、入力されたIDLで使われているデータ型の一覧を取得する。次に、IDL解釈手段1010は、IDLシリアライズコード作成手段1030及びIDLパーサコード作成手段に、IDLサーバアプリケーション1240の形式とそこで使われているデータ型との情報を送付する。
【0026】
次に、IDLシリアライズコード作成手段1030は、IDLサーバアプリケーション1240の形式とそこで使われているデータ型との情報から、クライアントIDLシリアライザ1130及びサーバIDLシリアライザ1250を生成する。最後に、IDLパーサコード作成手段1040は、IDLサーバアプリケーション1240の形式とそこで使われているデータ型との情報から、クライアントIDLパーサ1150及びサーバIDLパーサ1220を生成する。
【0027】
【発明が解決しようとする課題】
上述した従来のデータ転送プロトコルを用いたサービス連携システムでは、次のような問題点がある。
【0028】
第1の問題点は、SOAPを用いて構造を持ったデータを受け渡すRPCを実現する場合、サーバ側及びクライアント側それぞれで、転送されたXML文書をパーシングしてアプリケーションプログラムが利用するデータ型に変換する処理負荷が重いことである。
【0029】
その理由は、サーバ及びクライアントにおいて多段の階層を含む複雑な構造のXML文書のパーシングが必要なためである。具体的には、XML文書の代表的な二つのパーシング方式のうち、ドキュメントオブジェクトモデル(Document Object Model)を用いる方式ではドキュメントオブジェクトモデルのツリーを一旦作成し、それをRPC用のデータ構造に変換しているからであり、シンプル・エイピーアイ・フォー・エックスエムエル(SimpleAPI for XML)を用いる場合は自身で多段の階層構造を管理するモジュールが必要だからである。
【0030】
第2の問題点は、SOAPを用いるシステムを構築する場合、100メガバイト程度の大量なディスク領域をサーバ側に必要とすることにある。すなわち、ハードディスクドライブを持たない機器の記憶容量に入り切れないこと、又は大部分の記憶容量を消費してしまうことである。
【0031】
その理由は、一般的SOAPを用いるシステムでは、SOAPサーバのソフトウェア、アパッチ(Apache)等のウェブ(Web)サーバ、トムキャット(Tomcat)等のサーブレットエンジン、ジャバ(Java(登録商標))言語のランタイム環境が必要なためである。
【0032】
第3の問題点は、インタフェース記述言語のシリアライズ、パース手段を持つクライアントと既存サーバとの容易な連携が困難であるという問題点がある。
【0033】
その理由は、新しいプロトコルと既存サーバが解釈可能な形式との間のデータ変換が不可欠なためである。
【0034】
本発明の課題は、このような問題点を解決し、サーバ側及びクライアント側で高速に処理可能でかつ、構造を持ったデータ型を表現可能な形式を用いてRPCを行うことができるサービス連携システムを提供することにある。
【0035】
本発明の他の課題は、OSやプログラミング言語に依存しないテキストベースプロトコルを解釈するサーバ機能を、HDD(ハードディスクドライブ)を持たない機器の小量のディスク領域に収めるサービス連携システムを提供することにある。
【0036】
本発明の更に他の課題は、上記二つの課題を達成してかつ、クライアントから既存サーバへアクセス可能なサービス連携システムを提供することである。
【0037】
【課題を解決するための手段】
従って、本発明は、上記課題を解決することを目的として、構造を持つデータを受け渡す遠隔メソッド呼出しの処理負荷の軽減とこのXMLパーシングを行うシステム構築での記憶容量の削減のため、クライアントから既存サーバへアクセス可能な軽量なデータ転送プロトコルを用いることのできるサービス連携システムを提供する。
【0038】
本発明における第1の実施の形態をなす軽量データ転送プロトコルを用いたサービス連携システムは、クライアント非再帰データ表現生成シリアライザ(230)とサーバ非再帰データ表現解釈パーサ(320)とサーバ非再帰データ表現生成シリアライザ(350)とクライアント非再帰データ表現解釈パーサ(250)とを備え、クライアントアプリケーション(210)からサーバアプリケーション(340)のRPC起動を高速に処理可能であるとともに、サーバ(300)がHDDを持たない機器内にも納まる大きさに抑えることができる。
【0039】
すなわち、クライアント非再帰データ表現生成シリアライザ(230)は、構造型データ及び配列の構造情報にスタック構造を用いてRPCの構造型データ引数を作成するクライアント構造型配列情報テーブル作成手段(232)を含んでおり、IDポインタを用いることで高々一段の階層によるテキスト形式に変換する。サーバ非再帰データ表現解釈パーサ(320)は、ネットワーク(500)を介して転送されたテキスト形式のデータをプログラミング言語で解釈可能な形式に変換する際、高々一段の階層と構造型データでのリンク関係を管理するサーバIDポインタテーブル(323)とでパラメータ情報の構造を組み立てていく機能を持つサーバパラメータ情報作成手段(324)を含んでいる。
【0040】
サーバ非再帰データ表現生成シリアライザ(350)は、構造型データ及び配列の構造情報にスタック構造を用いて、サーバアプリケーション(340)を起動した戻り値を作成するサーバ構造型配列情報テーブル作成手段(352)を含んで高々一段の階層によるテキスト形式に変換する。
【0041】
クライアント非再帰データ表現解釈パーサ(250)は、サーバ非再帰データ表現生成シリアライザ(350)でテキスト形式に変換された戻り値をプログラミング言語の戻り値に戻す際に、高々一段の階層と構造型データでのリンク関係を管理するクライアントIDポインタテーブル(254)と、パラメータ情報の構造を組み立てていく機能を有するクライアントパラメータ情報作成手段(254)とを含んでいる。
【0042】
また、本発明における第2の実施形態をなす軽量データ転送プロトコルを用いたサービス連携システムでは、クライアント(200)とサーバ(300)とにプロトコル変換モジュールを生成するため拡張されるインタフェース記述言語コンパイラ(100)が追加され、クライアント(200)内のクライアントアプリケーション(210)から、サーバ(300)内のサーバアプリケーション(340)及びSOAPサーバ(500)をRPCにより起動可能としている。このため、インタフェース記述言語による記述からクライアント(200)内ではクライアント非再帰データ表現生成シリアライザ(230)及びクライアント非再帰データ表現解釈パーサ(250)、並びにサーバ(300)内ではのサーバ非再帰データ表現解釈パーサ(320)及びサーバ非再帰データ表現生成シリアライザ(350)の各手段が稼動される。
【0043】
また、本発明における第2の実施形態をなす軽量データ転送プロトコルを用いたサービス連携システムでは、クライアント(200)とサーバ(300)とにプロトコル変換モジュールを生成するため拡張されるインタフェース記述言語コンパイラ(100)が追加され、クライアント(200)内のクライアントアプリケーション(210)から、サーバ(300)内のサーバアプリケーション(340)及びプロトコル変換器(400)を経由して既存サーバ(710)をRPCにより起動可能としている。
【0044】
このため、インタフェース記述言語コンパイラ(100)は、インタフェース記述言語による記述から、クライアント(200)内ではクライアント非再帰データ表現生成シリアライザ(230)及びクライアント非再帰データ表現解釈パーサ(250)、並びにサーバ(300)内ではサーバ非再帰データ表現解釈パーサ(320)及びサーバ非再帰データ表現生成シリアライザ(350)、並びにプロトコル変換器(400)内ではプロトコル変換モジュール(410)の各手段を生成する。
【0045】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0046】
まず、図1を参照して本発明における第1の実施の形態について説明する。
【0047】
図示されるように、第1の実施の形態では、RPC(Remote Procedure Call)のクライアント200とRPCのサーバ300と、クライアント200とサーバ300との間のデータを転送できるネットワーク500とが含まれている。
【0048】
クライアント200は、クライアントアプリケーション210、クライアント非再帰データ表現用ライブラリ220、クライアント非再帰データ表現生成シリアライザ230、HTTPクライアント240、及びクライアント非再帰データ表現解釈パーサ250を備えている。クライアント非再帰データ表現生成シリアライザ230は、クライアントシリアライズ部231、クライアント構造型配列情報テーブル232、及びクライアント非再帰データ表現文書作成手段233を含む。クライアント非再帰データ表現解釈パーサ250は、クライアントパース部251、クライアントヘッダー情報格納部252、クライアントIDポインタテーブル253、クライアントパラメータ情報格納部254、及びプログラミング言語戻り値作成部255を含む。
【0049】
サーバ300は、HTTPクライアント310、サーバ非再帰データ表現解釈パーサ320、サーバアプリケーション管理330、サーバアプリケーション340、及びサーバ非再帰データ表現生成シリアライザ350を備えている。サーバ非再帰データ表現解釈パーサ320は、サーバパース部321、サーバヘッダー情報格納部322、サーバIDポインタテーブル323、サーバパラメータ情報格納部324、及びサーバアプリケーション起動情報作成部325を含んでいる。サーバ非再帰データ表現生成シリアライザ350は、サーバシリアライズ部351、サーバ構造型配列情報テーブル352、及びサーバ非再帰データ表現文書作成手段353を含む。
【0050】
図1における矢印は、データの流れを表す。図1の構成要素はそれぞれ概略、次のように動作する。
【0051】
クライアントアプリケーション210は、本発明システムの利用者が作成する部分であり、通常の、例えば「Java(登録商標)、C、C++」等のプログラミング言語におけるメソッド呼出しを行う。クライアント非再帰データ表現用ライブラリ220は、クライアントアプリケーション210からプログラミング言語におけるメソッド呼び出しを受付け、受け取ったデータをクライアント非再帰データ表現生成シリアライザ230に送付し、またクライアント非再帰データ表現解釈パーサ250から戻り値情報を得て、クライアントアプリケーション210に返送する。
【0052】
クライアント非再帰データ表現生成シリアライザ230は、受け取ったデータをテキストによる軽量データプロトコルに変換して、HTTPクライアント240に送付する。クライアント非再帰データ表現生成シリアライザ230の内部では、まずクライアントシリアライズ部231が、プログラミング言語によるデータの受け取り、そのデータが構造を持たない単純型のデータの場合にはクライアント非再帰データ表現文書作成手段233に送付され、また構造を持つデータ又は配列データの場合にはクライアント構造型配列情報テーブル232に送付される。
【0053】
クライアント構造型配列情報テーブル232は、クライアントシリアライズ231から渡された順番が後のものから先に、クライアント非再帰データ表現文書作成手段233に送付する。この結果、構造型データの子要素の部分が、親要素より先にクライアント非再帰データ表現文書作成手段233に送付される。クライアント非再帰データ表現文書作成手段233は、まずクライアント構造型配列情報テーブル232から受けたものを自身に送付された順番に、次にクライアントシリアライズ部231から受けたものを自身に送付された順番にシリアライズしてテキスト文書である軽量データ表現プロトコルの形式で、HTTPクライアント240に送付する。
【0054】
HTTPクライアント240は、クライアント非再帰データ表現生成シリアライザ230から軽量データ表現プロトコルで表現されたテキスト表現の文字列にHTTPのヘッダーを付加して、ネットワーク500を介してサーバ300に送付する。この結果、HTTPクライアント240は、RPCの戻り値を表すHTTPのヘッダー付き軽量データ転送プロトコル形式を得るので、この軽量データ転送プロトコル部分をクライアント非再帰データ表現解釈パーサ250に返送する。
【0055】
クライアント非再帰データ表現解釈パーサ250は、HTTPクライアント240から返送されたテキストよる軽量データ転送プロトコルをプログラミング言語のデータ型に変換した後、クライアント非再帰データ表現用ライブラリ220に返送する。クライアント非再帰データ表現解釈パーサ250内部では、まず、クライアントパース部251が軽量データ転送プロトコル形式のデータを受け取り、軽量データ転送プロトコルのうちヘッダー部分をクライアントヘッダ情報格納部252に送付する。次に、クライアントパース部251は、軽量データ転送プロトコルのうちのボディ部分をクライアントIDポインタテーブル253に一時格納にしつつクライアントパラメータ情報格納部254に送付する。プログラミング言語戻り値作成部255は、クライアントヘッダ情報格納部252とクライアントパラメータ情報格納部254とに入っているデータを読み出し、戻り値情報を作成してクライアント非再帰データ表現用ライブラリ220に返送する。
【0056】
HTTPサーバ310は、ネットワーク500を介して、HTTPヘッダー付きの軽量データ転送プロトコル形式のデータを受け取り、HTTPのヘッダー部分をチェックする。HTTPサーバ310は、チェックにより軽量データ転送プロトコルのデータであることを確認した後、軽量データ転送プロトコル部分をサーバ非再帰データ表現解釈パーサ320に送付する。
【0057】
サーバ非再帰データ表現解釈パーサ320では、サーバパース部321が軽量データ転送プロトコル部分をHTTPサーバ310から受け取り、軽量データ転送プロトコル部分のうちヘッダー部分をサーバヘッダ情報格納部322に送付する。一方、ボディ部分はサーバIDポインタテーブル323を用いながらサーバパラメータ情報格納部324に格納される。サーバアプリケーション起動情報作成部325は、サーバヘッダ情報格納部322及びサーバパラメータ情報格納部324からデータを読み出し、プログラミング言語のデータ型に変換した後、この変換したデータ型をサーバアプリケーション管理330に送付する。
【0058】
サーバアプリケーション管理330は、サーバアプリケーションの名前と対応するサーバアプリケーション340の対応関係を管理しており、サーバ非再帰データ表現解釈パーサ320から渡されたプログラミング言語によるデータ型のうち、サーバアプリケーション340の名前に対応する部分を抜き出す。サーバアプリケーション管理330は、プログラミング言語によるデータ型内で表現されているメソッドに対してプログラミング言語で表現されている引数を、上述の抜き出した名前に対応するサーバアプリケーション340に対して送付する。サーバアプリケーション管理330は、その引数を送付してサーバアプリケーション340を起動し、サーバアプリケーション340から戻り値を得る。また、サーバアプリケーション管理330は、サーバアプリケーション340から受け取った戻り値を、プログラミング言語のデータ型の形式でサーバ非再帰データ表現生成シリアライザ350に送付する。
【0059】
サーバアプリケーション340は、サーバアプリケーション管理330からメソッド呼出しを受け、戻り値をサーバアプリケーション管理330に返送する。
【0060】
サーバ非再帰データ表現生成シリアライザ350は、サーバアプリケーション管理330から戻ってきたプログラミング言語のデータ型を、構造を持たない単純型のデータの場合にはクライアント非再帰データ表現文書作成手段353に送付し、構造を持つデータ又は配列データの場合にはクライアント構造型配列情報テーブル352に送付する。クライアント構造型配列情報テーブル352は、クライアントシリアライズ231から受けた順番が後のものから先にクライアント非再帰データ表現文書作成手段353に送付する。クライアント非再帰データ表現文書作成手段353は、まずサーバ構造型配列情報テーブル352から受けたものを自身に送付された順番に、次にサーバシリアライズ部351から受けたものを自身に送付された順番にシリアライズし、テキスト文書である軽量データ表現プロトコルの形式でHTTPサーバ310に返す。
【0061】
ネットワーク500は、例えばインターネットの標準プロトコルであるTCP/IPを用いるネットワークである。
【0062】
次に、図1のブロック図及び図2のシーケンス図を参照して第1の実施形態における全体の動作について詳細に説明する。図2に示されるステップ番号数字は丸印内に記入されているが、以下の記載では番号数字のみで丸印は省略される。
【0063】
まず、クライアントアプリケーション210は、プログラミング言語のデータ型を用いて、HTTPサーバのホスト名及びポート番号、サーバアプリケーション340に対応するサービス名、サーバアプリケーション340において起動するメソッド名、このメソッドを起動する際に渡す引数情報を、クライアント非再帰データ表現解釈パーサシリアライザ220に送付(ステップA−1)する。この場合、ヘッダー情報にはサービス名とメソッド名とが含まれる。次に、クライアント非再帰データ表現用ライブラリ220は、ヘッダー情報と引数情報とをクライアント非再帰データ表現生成シリアライザ230に送付(ステップA−2)し、この回答として軽量データ転送プロトコルによるデータを取得(ステップA−3)する。
【0064】
次に、クライアント非再帰データ表現用ライブラリ220は、上記ステップA−1で受けたホスト名及びポート番号並びにステップA−3で得た軽量データ転送プロトコルによるデータを、HTTPクライアント240に送付(ステップA−4)する。HTTPクライアント240は、ステップA−4で受けた軽量データ転送プロトコルの前にHTTPのヘッダーを付加し、ネットワーク500を介してHTTPサーバ310に送付(ステップA−5)する。
【0065】
HTTPサーバ310は、HTTPヘッダーの部分を見て、送付されたものが軽量データ転送プロトコルの形式であることをチェックした後、軽量データ表現プロトコル部分をサーバ非再帰データ表現解釈パーサ320に送付(ステップA−6)する。
【0066】
サーバ非再帰データ表現解釈パーサ320は、軽量データ転送プロトコル部分を解釈してヘッダー情報と引数情報とを、プログラミング言語によるデータ形式で取出し(ステップA−7)する。更に、サーバ非再帰データ表現解釈パーサ320は、ヘッダー情報から取り出したサーバアプリケーション340に対応するサービス名及びサーバアプリケーション340において起動するメソッド名、更に、引数情報をサーバアプリケーション管理330へ送付(ステップA−8)する。
【0067】
サーバアプリケーション管理330は、起動するサーバアプリケーション340をステップA−8で渡されたサービス名から特定し、そのサーバアプリケーション340に対してステップA−8で受けた引数情報を送付すると共にステップA−8で受けたメソッドを起動(ステップA−9)する。
【0068】
サーバアプリケーション340は、ステップA−9で受けた引数を用いて処理を行い、処理結果の戻り値をサーバアプリケーション管理330に返送(ステップA−10)する。サーバアプリケーション管理330は、ステップA−10で受けた戻り値に戻り値の型情報、例えば文字列型、数値型などを付加して、サーバ非再帰データ表現生成シリアライザ350に送付(ステップA−11)する。
【0069】
サーバ非再帰データ表現生成シリアライザ350は、ステップA−11で受けた戻り値情報を軽量データ転送プロトコルに変換(ステップA−12)する。更に、サーバ非再帰データ表現生成シリアライザ350は、ステップA−12で作成した軽量データ転送プロトコルをHTTPサーバ310に送付(ステップA−13)する。HTTPサーバ310は、ステップA−13で受けた軽量データ転送プロトコルの前にHTTPのヘッダーを付け、ネットワーク500を介してHTTPクライアント240に送付(ステップA−14)する。
【0070】
HTTPクライアント240は、HTTPヘッダーの部分を見て送付されたものが軽量データ転送プロトコルの形式であることをチェックした後、軽量データ表現プロトコル部分をクライアント非再帰データ表現解釈パーサ250に送付(ステップA−15)する。更に、クライアント非再帰データ表現解釈パーサ250は、軽量データ転送プロトコル部分を解釈(パース)して戻り値情報を、プログラミング言語によるデータ形式で取出し(ステップA−16)する。更に、クライアント非再帰データ表現解釈パーサ250は、ステップA−16で取り出したプログラミング言語による戻り値をクライアント非再帰データ表現用ライブラリ220に送付(ステップA−17)する。
【0071】
最後に、クライアント非再帰データ表現用ライブラリ220は、ステップA−17で得た戻り値を、クライアントアプリケーション210に返送(ステップA−18)する。
【0072】
次に、図1から図6までを併せ参照して、プログラミング言語のデータ型と軽量データ表現プロトコルとの間の変換方式について詳細に説明する。
【0073】
まず、図3を中心に参照して、クライアント非再帰データ表現生成シリアライザ220およびその構成要素において、ヘッダー情報及び引数情報から、軽量データ転送プロトコルのデータを作成する部分、すなわち、図2のステップA−2及びステップA−3について詳細に説明する。
【0074】
サーバアプリケーション340の提供するメソッドの引数としては、例えば、図3の1)に示されるサーバアプリケーションのメソッドの形式として戻り値を基本型データ(PrimitiveA)で表している。図示されるように、メソッドの形式としては、基本型データ(Primitive_B arg1)と構造型データ(Struct_C arg2)と基本型データの1次元配列(PrimitiveArray_D arg3)との何れか一つが任意の個数で表れてよい。特に、基本型データとしては、整数値型、文字列型、真偽値型、時刻型、base64でエンコーデイングされたバイト列型が利用可能である。
【0075】
図3の2)で示されるような構造型データの構成要素としては構造型データを用いることもできる。また、サーバアプリケーション340の戻り値としては、基本型データ、構造型データ、又は基本型データの1次元配列を用いることができる。
【0076】
まず、クライアント非再帰データ表現生成シリアライザ230内のクライアントシリアライズ部231には、図3の形式のサーバアプリケーションを起動するために、サービス名及びメソッド名からなるヘッダー情報と、引数情報(Primitive_B arg1,Struct_C arg2,PrimitiveArray_D arg3)とが送付される。クライアントシリアライズ部231は、サービス名及びメソッド名からなるヘッダー情報をクライアント非再帰データ表現文書作成手段233に送付する。クライアント非再帰データ表現文書作成手段233は、受けたサービス名及びメソッド名からなるヘッダー情報から軽量データ表現プロトコルによるヘッダー部分を作成する。
【0077】
具体的には図6に示される「Head」から「空行」までが作成される。「Head」はヘッダーの始まりを表す予約語である。「sN」は予約語であり、この後に、サーバアプリケーション340の名前を表すサービス名が表れる。例えば、図6では「Server APPlication」というサービス名となる。「pN」は予約語であり、この後に起動するサーバアプリケーション340のメソッド名が表れる。例えば、図6では「method1」というメソッドが起動されることになる。
【0078】
次に、図4のフローチャートを用いて、クライアントシリアライズ部231での引数情報の解釈方法について説明する。
【0079】
まず、クライアントシリアライズ部231は、引数情報の1つを取出し(ステップB1)し、次に取り出した引数情報が基本型データかどうかを判断(ステップB2)する。ステップB2で判定した結果が「ノー」で基本型データでない場合には、配列型であるかどうかが判定(ステップB3)される。ステップB3が「ノー」で配列型でもない場合は、必ず構造型データとなるが、確かに構造型データであるかどうかが判定(ステップB4)される。ステップB4が「イエス」で構造型データである場合には、構造型データに対して階層を表すIDポインタが振られ、そのIDポインタを振った引数名がクライアント非再帰データ表現文書作成手段233に送付(ステップB5)される。
【0080】
次に、クライアントシリアライズ部231は、構造型データ名とステップB5で割り振ったIDポインタ値とを一組としクライアント構造型配列情報テーブル作成手段232に送付(ステップB6)する。次に、構造型データの子要素が一つ取出し(ステップB7)され、更に、ステップB7で取り出された構造型データの子要素が構造型データ又は配列を持つかどうかが判定(ステップB8)される。
【0081】
ステップB8が「ノー」で構造型データの子要素として配列も構造型データも持たない場合は、構造型データの子要素がクライアント構造型配列情報テーブル作成手段232に送付(ステップB9)される。次に、クライアントシリアライズ部231は上記ステップB7で取り出された子要素の次の子要素があるかどうかを判定(ステップB10)する。
【0082】
ステップB10が「イエス」で次の子要素がある場合、上記ステップB7のステップが実行される。上記ステップB8が「イエス」で構造型データの子要素として配列または構造型データを持つと判定された場合、構造型データ又は配列に対して配列を表すIDポインタが、割振り先のクライアント構造型配列情報テーブル作成手段232に送付(ステップB11)される。その後、上記ステップB6に戻り、構造型データと割り振ったIDポインタの組とが構造型配列情報テーブル作成手段232に送付される。
【0083】
上記ステップB2が「イエス」で基本型データと判定された場合、クライアントシリアライズ部231は、引数名及び引数値をクライアント非再帰データ表現文書作成手段233に送付(ステップB12)する。
【0084】
上記ステップB3が「イエス」で配列型であると判定された場合、クライアントシリアライズ部231は、配列型に対して階層を表すIDポインタを割振りして、クライアント非再帰データ表現文書作成手段233に送付(ステップB13)する。次に、配列型の構成要素がクライアント配列情報テーブル作成手段232に送付(ステップB14)される。
【0085】
次に、上記ステップB10が「ノー」か、上記ステップB12又はB14に続き、次の引数があるかどうかが判定(ステップB15)され、引数ありの「イエス」の場合には上記ステップB1に戻り、引数なしの「ノー」であれば図4のフローチャートに示された処理は終了する。
【0086】
クライアントシリアライズ部231が図3のデータを入力として前述した図4のフローチャートに示される処理が終わった場合、クライアント非再帰データ表現文書作成手段233とクライアント構造型配列情報テーブル作成手段232とはメモリ上に図5に示すスタック構造を有するデータを持つ。図4の処理の後には、クライアント構造型配列作成手段232の保持するデータが、クライアント非再帰データ表現文書作成手段233に送付される。
【0087】
クライアント非再帰データ表現文書作成手段233は、クライアント構造型配列情報テーブル作成手段232から受けたデータをスタックの上から、例えば図5の場合では「10.」から、たどりながら、軽量データ転送プロトコル形式のテキスト文書を作成する。まず、図6で示されるように「Body」という予約語が出力される。また、「10.」のスタックをみて「Array」というキーワードから配列であることが判別される。そののちスタックを下にたどった場合、「7.」の箇所で「id=200 Primitive_Array_D」が見つけられるので、ここまでの配列であることが判断され、配列の形式で、図6の6行目から10行目までが出力される。
【0088】
次に、図5の「6.」の箇所で、基本型データの「Primitive_H value_of_H」を見つけることができので、それから下にたどり「4.」に示される「id=110のStruct_F」の構成要素であることが認識される。この結果、構造型データの形式により図6の11行目から14行目までが出力される。次に、図5の「3.」に「Struct_F」が「id=110」で定義されていることが確認され、更に「2.」の部分が、「1.」で定義された「id=100」の構成要素と判定されるので、図6の15行目から18行目までが構造型データの形式で出力される。
【0089】
クライアント非再帰データ表現文書作成手段233は、クライアント構造型配列情報テーブル作成手段232から受けたものの送付を完了したのち、クライアントシリアライズ部231から受けたメモリ上の情報を、スタックの下、すなわち数字の小さい順で、図6の19行目から21行目までを出力する。そして、クライアント非再帰データ表現文書作成手段233は、空行を記述した後に、軽量データ転送プロトコルの終わりを表す「End」を記述し、出力を完了する。
【0090】
次に、図7のフローチャートに図6の軽量データ転送プロトコルの例を併せ参照して、サーバ非再帰データ表現解釈パーサ320において、軽量データ転送プロトコルからヘッダー情報と引数情報とを作成し、サーバアプリケーション管理330に送付するまでの図2に示されたステップA−7の手順について詳細に説明する。
【0091】
まず、サーバパース部321は、図6において軽量データ転送プロトコルの始めを表す「Head」から空行までを1行ずつ読み込み、例えば「sN」のヘッダー名と「serverApplication」といったヘッダー値とを一組にして、サーバヘッダ情報作成手段322に格納(ステップC1)する。次に、軽量データ転送プロトコルのうち、引数部分の始めを表す「Body」と記述されている行が読込み(ステップC2)される。次いで、その次の行が1行読込み(ステップC3)される。このステップC3で読み込んだ行が「id=数字」の形式で表させるIDポインタである行かどうかが判定(ステップC4)される。IDポインタから始まる行の場合には、IDポインタが表す構造のまとまりである「}」までが読込み(ステップC5)され、次いで、このステップC5で読み込んだ行の中にIDポインタ値が含まれているかどうかが調査(ステップC6)される。
【0092】
図6を用いて例を示すと、17行目の「Struct_F:id=110」の場合がIDポインタ値の含まれる場合に対応する。上記ステップC6が「ノー」で、IDポインタ値が含まれていないと判定した場合に、サーバパース部321は、ステップC5で読み込んだものから、構造型データまたは配列のプログラミング言語での実体を作成し、サーバパラメータ情報作成手段324に送付(ステップC7)する。例えば、図6の6行目から10行目を読み込んだ場合には配列のプログラミング言語での実体が作成され、また、図6の11行目から14行目までを読み込んだ場合は、構造型データの実体が作成される。上記ステップC7で作成した実体への参照とIDポインタ値との組はサーバIDポインタテーブル323に登録(ステップC8)される。
【0093】
一方、上記ステップC6が「イエス」で読み込んだ行の中にIDポインタ値が含まれていた場合、サーバパース部321は、IDポインタ値をキーとしてサーバIDポインタテーブル323から、IDポインタで指される参照を獲得し、更にその参照を用いてプログラミング言語における実体を取得(ステップC9)する。次に、上記ステップC5で読み込んだ部分から実体が作成され、更にIDポインタで表されている部分には、上記ステップC9で獲得した実体が埋込み(ステップC10)される。例えば、図6の15行目から18行目まではIDポインタで始まる。しかし、この部分の実体が作成された後、17行目で指される「id=110」の部分には、実体である図6の11行目から14行目までに作成された構造型データが埋め込まれる。
【0094】
上記ステップC4が「ノー」で、IDポインタから始まる行ではないと判定した場合、サーバパース部321は、基本型データを表す行かどうかを判定(ステップC11)する。このステップC11が「イエス」で、基本型データを表す行であると判定された場合、図6の19行目がその例にあたるが、基本型データのデータがプログラミング言語で作成され、サーバパラメータ情報作成手段324に送付(ステップC12)される。
【0095】
上記ステップC11が「ノー」で、基本型データを表す行ではないと判定された場合、構造型データまたは配列に対応する行であることが確認(ステップC13)される。例えば、図6の20行目が構造型データに対応するものであり、21行目が配列に対応するものである。
【0096】
次に、読み込んだ行からIDポインタ値の部分が取得(ステップC14)される。次に、IDポインタをキーとしてサーバIDポインタで指される参照が獲得された後、その実体が取得(ステップC15)される。次に、このステップC15で取得したプログラミング言語の実体、すなわち構造型データまたはプログラミング言語の配列をIDポインタ部分に埋め込んでプログラミング言語実体が構成(ステップC16)される。例えば、図6で20行目の「id=100」の部分には、15行目から18行目までに作成される構造型データが埋め込まれ、更に17行目部分には11行目から14行目までが埋め込まれている。
【0097】
上記ステップC8、C10、C16それぞれに次いで、サーバパース部321は、次の行を読込み(ステップC17)する。このステップC17で読み込んだ行が空行であるかどうかが判定(ステップC18)される。このステップC18が「ノー」で空行でないと判定された場合には次の手順は上記ステップC3に戻る。ステップC18が「イエス」で空行であると判定された場合には次の行を読み込み、軽量データ転送プロトコルの終わりを表す「End」という文字列を確認(ステップC19)する。
【0098】
図7に示す一連の処理フローが終わった後、サーバアプリケーション起動情報作成部325は、サーバヘッダ情報作成手段322及びサーバパラメータ情報作成手段324から、サービス名、メソッド名、及び引数情報を読み出し、サーバアプリケーション管理330に送付する。
【0099】
次に、図8のフローチャートを参照して、サーバ非再帰データ表現生成シリアライザ350が、図2におけるステップA−11で送付する軽量データ転送プロトコルを戻り値情報から作成する手順について詳細に説明する。
【0100】
まず、戻り値情報はサーバアプリケーション管理330からサーバ非再帰データ表現生成シリアライザ350内のサーバシリアライズ部351に送付される。サーバシリアライズ部351は、サーバアプリケーションが正常に起動した際、この正常起動の成功をサーバ非再帰データ表現文書作成手段353に送付する。サーバ非再帰データ表現文書作成手段353はサーバアプリケーションの起動が成功したことを表す軽量データ表現プロトコルによるヘッダー部分を作成する。具体的には、図10における「Head」から空行までが作成される。この「Head」は軽量データ表現プロトコルのヘッダーの始まりを表す予約語である。また、図11における「rPro」は予約語であり、この後に、サーバアプリケーション340の起動が正常であれば「normal」が、正常でなければ「Error」という文字列が入る。
【0101】
ここで、サーバシリアライズ部351は戻り値情報を取出し(ステップD1)する。次に、サーバシリアライズ部351はステップD1で取り出した戻り値が基本型データかどうかを判断(ステップD2)する。ステップD2で判定した結果が「ノー」で基本型データでない場合は、配列型であるかどうかが判定(ステップD3)される。ステップD3が「ノー」で配列型でもない場合は、必ず構造型データとなるので構造型データであることが確認(ステップD4)される。構造型データである場合は、構造型データに対して階層を表すIDポインタが割り振られ、そのIDポインタを振った戻り値がサーバ非再帰データ表現文書作成手段353に送出(ステップD5)される。
【0102】
次に、サーバシリアライズ部351は構造型データ名とステップD5で割り振ったIDポインタ値とを組とした情報をサーバ構造型データ配列情報作成手段352に送出(ステップD6)し、次いで構造型データの子要素を1つ取出し(ステップD7)する。このステップD7で取り出した構造型データの子要素として更に構造型データ又は配列を持つかどうかが判定(ステップD8)される。
【0103】
ステップD8が「ノー」で、構造型データの子要素として配列も構造型データも持たない場合、サーバシリアライズ部351は、構造型データの子要素をサーバ構造型配列情報テーブル作成手段352に送出(ステップD9)し、次いで、上記ステップD7で取り出した子要素の次の子要素があるかどうかを判定(ステップD10)する。このステップD10が「イエス」で次の子要素がある場合、ステップD7の手順が実行される。
【0104】
上記ステップD8が「イエス」で構造型データの子要素として配列または構造型データを持つと判定した場合、サーバシリアライズ部351は、構造型データ又は配列に対して配列を表すIDポインタを割り振り、サーバ構造型配列情報テーブル作成手段352に送付(ステップD11)して、その後構造型データと割り振ったIDポインタとの組を構造型データ配列情報作成手段352に送付(ステップD11)する。
【0105】
上記ステップD2が「イエス」で基本型データと判定された場合、サーバシリアライズ部351は、引数名と引数値とをクライアント非再帰データ表現文書作成手段233に送付(ステップD12)する。上記ステップD3が「イエス」で配列型であると判定された場合、サーバシリアライズ部351は、配列型に対して階層を表すIDポインタを割り振り、サーバ非再帰データ表現文書作成手段353に送付(ステップD13)し、次いで、配列型の構成要素をサーバ配列情報テーブル作成手段352に送付(ステップD14)する。
【0106】
上記ステップD10の「ノー」及びステップD12,D14により、図8に示すフローチャートの処理は終了する。図8に示された処理の後には、サーバ構造型配列作成手段352の保持するデータが、サーバ非再帰データ表現文書作成手段353に送付される。
【0107】
次に、サーバ非再帰データ表現文書作成手段は、まず「Body」を出力した後、サーバ構造型配列情報テーブル作成手段352から受けたデータを、スタックの上からたどりつつ、軽量データ転送プロトコル形式のテキスト文書に作成する。サーバ非再帰データ表現文書作成手段353は、クライアント構造型配列情報テーブル作成手段352から受けたデータの送付を完了したのち、クライアントシリアライズ部231から受けたメモリ上の情報を、スタックに続いて送付する。このようにして、サーバ非再帰データ表現文書作成手段353は、空行を記述した後に、軽量データ転送プロトコルの終わりを表す「End」を記述し、この送付を完了する。
【0108】
次に、図9のフローチャートを参照して、クライアント非再帰データ表現解釈パーサ250が、図2におけるステップA−16で軽量データ転送プロトコルからヘッダー情報と戻り値情報とを作成する手順について詳細に説明する。
【0109】
まず、クライアント非再帰データ表現解釈パーサ250では、クライアントパース部251が、軽量データ転送プロトコルの始めを表す「Head」から空行までを1行ずつ読み込み、ヘッダー名、例えば、図11の「rPro」と、ヘッダー値、例えば、図11の「normal」とを組にしてクライアント情報作成手段252に格納(ステップE1)する。次に、軽量データ転送プロトコルのうち、引数部分の始めを表す「Body」と記述されている行が読込み(ステップE2)され、次いで、その次の行が1行読込み(ステップE3)される。
【0110】
次に、クライアントパース部251は、前記ステップE3で読み込んだ行が「id=数字」の形式で表させるIDポインタである行かどうかを判定(ステップE4)する。このステップE4が「イエス」でIDポインタから始まる行の場合には、IDポインタが表す構造のまとまりである「}」までが読込み(ステップE5)される。次に、このステップE5において読み込んだ行の中にIDポインタ値が含まれているかどうかを調査(ステップE6)する。
【0111】
このステップE6が「ノー」で、IDポインタ値が含まれていないと判定した場合、クライアントパース部251は、上記ステップE5で読み込んだデータから構造型データまたは配列のプログラミング言語による実体を作成し、クライアントパラメータ情報作成手段254に送付(ステップE7)する。次いで、上記ステップE7で作成した実体への参照とIDポインタ値との組がクライアントIDポインタテーブル253に登録(ステップE8)される。
【0112】
上記ステップE6が「イエス」で、読み込んだ行の中にIDポインタ値が含まれていた場合、クライアントパース部251は、IDポインタ値をキーとしてクライアントIDポインタテーブル253から、IDポインタで指される参照を獲得し、さらにその参照を用いてプログラミング言語における実体を取得(ステップE9)する。次いで、クライアントパース部251は、上記ステップE5で読み込んだ部分から実体を作成し、更にIDポインタで表されている部分に、上記ステップE9で獲得した実体を埋込み(ステップE10)する。
【0113】
上記ステップE4が「ノー」で、IDポインタから始まる行ではないと判定した場合、クライアントパース部251は、続いて、基本型データを表す行かどうかを判定(ステップE11)する。このステップE11が「イエス」で、基本型データを表す行であると判定した場合、基本型データのデータがプログラミング言語で作成され、クライアントパラメータ情報作成手段254に送付(ステップE12)される。
【0114】
上記ステップE11が「ノー」で、基本型データを表す行ではないと判定した場合、クライアントパース部251は、構造型データまたは配列に対応する行であることを確認(ステップE13)し、次いで、読み込んだ行からIDポインタ値の部分を取得(ステップE14)する。次に、IDポインタをキーとしてサーバIDポインタで指される参照が獲得された後、その実体が取得(ステップE15)される。次いで、上記ステップE15で取得したプログラミング言語の実体である構造型データまたは配列がIDポインタ部分に埋め込まれてプログラミング言語実体が構成(ステップE16)される。
【0115】
上記ステップE8,E10,E12及びステップE16に次いで、クライアントパース部251は、次の行を読込み(ステップE17)する。
【0116】
次いで、クライアントパース部251は、このステップE17で読み込んだ行が空行であるかどうかを判定(ステップE18)する。このステップE18が「ノー」で空行でないと判定された場合、手順は上記ステップE3に戻る。上記ステップE18が「イエス」で空行であると判定された場合、次の行が読み込まれ軽量データ転送プロトコルの終わりを表す「End」という文字列が確認(ステップE19)されて、図9に示す一連の処理フローが終る。
【0117】
上記ステップE19の後、プログラミング言語戻り値作成部255は、クライアントヘッダ情報作成手段252及びクライアントパラメータ情報作成手段254からデータを読み出し、戻り値部分をクライアント非再帰データ表現用ライブラリ220に送付する。
【0118】
上述した第1の実施の形態で、構造型データを表現している場合にもクライアントとサーバとの間で送受されるテキスト文書は、高々一段の階層しか含まれないので、多段の階層を含む場合で文法の複雑さを表すクラスが文脈自由文法となるのに比べて、より高速に解釈可能な正規文法により表現できる。このため、パーシングを高速に行うことができる。また、階層構造が高々一段であることを仮定してよいことから、パーシングのプログラム自体を多段の階層を許すXMLのパーサに比べて小さく作成することが可能である。
【0119】
次に、図2に図5及び図6を併せ参照して具体的な実施例を用いて上述した第1の実施の形態における図2に対応する動作について説明する。
【0120】
図5では、アドレス帳にデータを登録する際、クライアントからサーバに送られるデータのうち軽量データ転送プロトコル部分が示されている。実際の送信データにはこれにHTTPのヘッダーが付加される。また、図6には、サーバからクライアントに戻される軽量データ転送プロトコル部分が示されている。
【0121】
まず、上述したステップA−1で、クライアントアプリケーション210は、プログラミング言語のデータ型を用いて、HTTPサーバのホスト名、ポート番号、サーバアプリケーション340に対応するサービス名、サーバアプリケーション340において起動するメソッド名、及びこのメソッドを起動する際に渡す引数情報、それぞれをクライアント非再帰データ表現用ライブラリ220に送付する。すなわち、図示される例では、HTTPサーバのホスト名は「distri.nwk.cl.nec.co.jp」であり、ポート番号はHTTPに用いられる「80」であり、サーバアプリケーション340に対応するサービス名は「Addressbook」であり、また、サーバアプリケーション340において起動するメソッド名は「register」である。そして、これらはヘッダー情報に含まれる。更に、このメソッドを起動する際に渡す引数情報としては「sT」で表される文字列型のデータ「Yasuyuki_BEPPU」と、構成要素として「block,town, city,prefecture,country,zipCode」を持つ構造体と、文字列型の「0448560000」との三つがある。
【0122】
次のステップA−2でクライアント非再帰データ表現用ライブラリ220は、クライアントアプリケーション210から受け取ったもののうち、ヘッダー情報に含まれるサービス名及びメソッド名、並びに下記の引数情報をクライアント非再帰データ表現生成シリアライザ220に送付する。サービス名はサーバアプリケーション340に対応する「Addressbook」であり、メソッド名としてはサーバアプリケーション340において起動する「register」である。また、このメソッドを起動する際に渡す引数情報には「sT」で表される文字列型のデータ「Yasuyuki_BEPPU」と、「block,town,city,prefecture,country,zipCode」を構成要素として持つ構造体と、文字列型での「0448560000」との三つが含まれる。
【0123】
次のステップA−3で、クライアント非再帰データ表現生成シリアライザ230は、上述したステップA−2で受けたプログラミング言語のデータのうちサービス名として「Addressbook」を、サーバアプリケーション340において起動するメソッド名として「register」を、更に引数情報として作成した軽量データ表現プロトコルを、それぞれクライアント非再帰データ表現用ライブラリ220に返送する。引数情報は、このメソッドを起動する際に送付するものとして「sT」で表される文字列型のデータ「Yasuyuki_BEPPU」と、「block,town,city,prefecture,country,zipCode」を構成要素として持つ構造体と、文字列型での「0448560000」との三つから、図5に示される「Head」から「End」までの部分である軽量データ表現プロトコルに作成される。
【0124】
次のステップA−4で、クライアント非再帰データ表現用ライブラリ220は、上記ステップA−1で受けたホスト名「distri.nwk.cl.nec.co.jp」及びポート番号「80」、並びに上記ステップA−3で受けた軽量データ転送プロトコルによるデータをHTTPクライアント240に送付する。
【0125】
次のステップA−5では、HTTPクライアント240が、上記ステップA−4で受けた軽量データ転送プロトコルの前に、図5に示される「POST」から「Content−length:xxx」までのHTTPのヘッダーと空行とを付加し、ネットワーク500を介して、HTTPサーバ310に送付する。
【0126】
次のステップA−6で、HTTPサーバ310は、HTTPヘッダーの「Content−type text/cdr」部分を見て、送付されたものが軽量データ転送プロトコルの形式であることをチェックした後、軽量データ表現プロトコル部分をサーバ非再帰データ表現解釈パーサ320に送付する。
【0127】
次のステップA−7で、サーバ非再帰データ表現解釈パーサ320は、軽量データ転送プロトコル部分を解釈してヘッダー情報からサーバアプリケーション340に対応するサービス名として「Addressbook」及びサーバアプリケーション340において起動するメソッド名として「register」を取り出し、引数情報から「sT」で表される文字列型のデータ「Yasuyuki_BEPPU」と、「block,town,city,prefecture,country,zipCode」を構成要素として持つ構造型データと、文字列型である「0448560000」との三つを取り出す。
【0128】
次のステップA−8で、サーバ非再帰データ表現解釈パーサ320は、ヘッダー情報から取り出したサーバアプリケーション340に対応するサービス名「Addressbook」及びサーバアプリケーション340において起動するメソッド名「register」、並びに上記引数情報を、サーバアプリケーション管理330に送付する。
【0129】
次のステップA−9で、サーバアプリケーション管理330は、上記ステップA−8で受けたサービス名「Addresbook」から、起動するサーバアプリケーション340を特定し、そのサーバアプリケーションに対してステップA−8で受けた引数情報を送付してステップA−8で受けたメソッドを起動する。
【0130】
引数情報は、文字列型のデータ「Yasuyuki_BEPPU」と、「block,town,city,prefecture,country,zipCode」を構成要素として持つ構造体と、文字列型による「0448560000」とを含んでいる。
【0131】
次のステップA−10で、サーバアプリケーション340は、ステップA−9で受けた引数を用いて処理を行い、処理結果の戻り値をサーバアプリケーション管理330に返送する。次いでステップA−11では、サーバアプリケーション管理330が、ステップA−10で受けた戻り値に型情報である真偽型を付加した「戻り値情報」を、サーバ非再帰データ表現生成シリアライザ350に送付する。
【0132】
次いでステップA−12で、サーバ非再帰データ表現生成シリアライザ350は、ステップA−11で受けた戻り値情報を、図6で示される軽量データ転送プロトコルに変換する。例えば、図6に示される軽量データ転送プロトコルの内容には、軽量データ表現プロトコルのヘッダー部分である「Head」から空行までに「rPro」というメソッド呼出しが正常に行われたかどうかを表す予約語の後に正常に行われたことを表す図6に示される「normal」が含まれる。同様に、軽量データ表現プロトコルのボディ部分の「Body」から空行までには、アドレス帳への登録が成功したことを表す真偽値データ「true」が含まれる。
【0133】
次いでステップA−13で、サーバ非再帰データ表現生成シリアライザ350は、ステップA−12で作成した軽量データ転送プロトコルをHTTPサーバ310に返送する。次のステップA−14では、HTTPサーバ310が、ステップA−13で返送された軽量データ転送プロトコルの前にHTTPのヘッダーを付加し、ネットワーク500を介してHTTPクライアント230に送付する。
【0134】
次のステップA−15で、HTTPクライアント230は、HTTPヘッダーの部分を見て、送付されたものが軽量データ転送プロトコルの形式であることをチェックした後、図6の形式である軽量データ表現プロトコル部分をクライアント非再帰データ表現解釈パーサ250に送付する。次いでステップA−16で、クライアント非再帰データ表現解釈パーサ250は、図6に示される軽量データ転送プロトコル部分を解釈して戻り値情報の真偽値「true」を、プログラミング言語によるデータ形式で取り出す。
【0135】
次いでステップA−17で、クライアント非再帰データ表現解釈パーサ250は、ステップA−16で取り出した戻り値情報をクライアント非再帰データ表現用ライブラリ220に返送する。最後のステップA−18で、クライアン非再帰データ表現用ライブラリ220は、ステップA−17で受け取った戻り値情報を表す「true」を、クライアントアプリケーション210に返送する。
【0136】
次に、図12及び図13を参照して本発明における第2の実施の形態について詳細に説明する。図13はWSDL(ウェブサービスデスクリプションランゲージ:Web Service Description Language)によるインタフェース記述である。
【0137】
図12で示される第2の実施の形態が図1に示される第1の実施形態との相違は、構成上下記が追加されている点である。
【0138】
この追加される構成は、インタフェース記述言語コンパイラ100、プロトコル変換器400、クライアント−プロトコル変換器間ネットワーク600、プロトコル変換器−既存サーバ間ネットワーク700、及び既存サーバ710である。
【0139】
インタフェース記述言語コンパイラ100は、インタフェース記述言語解釈手段110、データ型対応関係定義手段120、シリアライズコード作成手段130、変換プログラム作成手段140、及びパーサコード作成手段150を含む。プロトコル変換器400は、プロトコル変換モジュール410及びHTTPクライアント/サーバ420を含む。
【0140】
これらの構成要素はそれぞれ概略、次のような機能を有する。
【0141】
インタフェース記述言語解釈手段110は、図13に示されようなインタフェース記述による入力を受け付け、インタフェース記述言語を読み込み、かつデータ型の表現部分を切り出す。データ型対応関係定義手段120は、インタフェース記述言語解釈手段からデータ型の表現部分を入力とし、対応するプログラミング言語のデータ型を返送する。
【0142】
シリアライズコード作成手段130は、インタフェース記述言語解釈手段110からインタフェース記述言語で使われているデータ型のリストを受け取り、それらのデータ型をシリアライズするコードを、クライアント非再帰データ表現生成シリアライザ230へクライアント非再帰データ表現生成シリアライザとし、またサーバ非再帰データ表現生成シリアライザ350へサーバ非再帰データ表現生成シリアライザとしてそれぞれ出力する。
【0143】
この出力の際、シリアライズコード作成手段130は、クライアント側のシリアライズに必要な引数のデータ型のシリアライズコードだけをクライアント非再帰データ表現生成シリアライザとして出力し、サーバ側のシリアライズに必要な戻り値のデータ型をシリアライズするコードをサーバ非再帰データ表現生成シリアライザとして出力する。
【0144】
変換プログラム作成手段140は、インタフェース記述言語で使われているデータ型のリストをインタフェース記述言語解釈手段110から受け取り、クライアント200で用いるそれらデータ型の形式と既存サーバ710で用いる形式との間の変換プログラムをプロトコル変換モジュール410へプロトコル変換モジュールとして出力する。
【0145】
パーサコード作成手段150は、インタフェース記述言語解釈手段110からインタフェース記述言語で使われているデータ型のリストを受け取り、それらのデータ型をパースするコードを、クライアント非再帰データ表現解釈パーサ250へクライアント非再帰データ表現解釈パーサとして、またサーバ非再帰データ表現解釈パーサ320へサーバ非再帰データ表現解釈パーサとしてそれぞれ出力する。
【0146】
この出力の際、パーサコード作成手段150は、クライアント側のパースに必要な戻り値のデータ型パース用コードだけをクライアント非再帰データ表現解釈パーサとして出力し、サーバ側のパースに必要な引数のデータ型をパースするコードだけをサーバ非再帰データ表現解釈パーサとして出力する。
【0147】
HTTPクライアント230は、起動するアプリケーションを持つサーバが既存サーバ710の場合、クライアント−プロトコル変換器間ネットワーク600を経由してHTTPクライアント/サーバ420へ、軽量データ転送プロトコル形式にHTTPヘッダーを付加して送付する。
【0148】
HTTPクライアント/サーバ420は、クライアント−プロトコル変換器間ネットワーク600を経由してHTTPクライアント320から、HTTPヘッダーつき軽量データ表現プロトコルを受け取る。HTTPクライアント/サーバ420は、受取ったプロトコルを、プロトコル変換モジュール410を呼び出して既存サーバが解釈可能な形式に変換した後、プロトコル変換器−既存サーバ間ネットワーク700を経由して既存サーバ710へ、既存サーバ710の解釈可能な形式によりデータを転送する。
【0149】
既存サーバ710は、プロトコル変換器−既存サーバ間ネットワーク700を経由してHTTPクライアント/サーバ420から、既存サーバ710で使用される形式のデータを受け取り、既存サーバ710内でアプリケーションを実行した後、プロトコル変換器−既存サーバ間ネットワーク700を経由してHTTPクライアント/サーバ420に、既存サーバ710が用いる形式で戻り値を返送する。クライアント−プロトコル変換器間ネットワーク600は、通常のTCP/IP上のネットワークである。プロトコル変換器−既存サーバ間ネットワーク700は、通常のTCP/IP上のネットワークである。
【0150】
上述した第2の実施の形態では、インタフェース記述言語コンパイラがインタフェース記述言語による入力から、サーバアプリケーションの起動に必要最小限のクライアント非再帰データ表現生成シリアライザと、クライアント非再帰データ表現解釈パーサと、サーバ非再帰データ表現解釈パーサと、サーバ非再帰データ表現生成シリアライザとを生成するため、クライアントとサーバとが用いるプログラムサイズを小さくすることができる。従って、ハードディスクドライブを持たないようなディスク容量が限られた機器に、上述した機能を組み込む際に特に有効である。また、インタフェース記述言語コンパイラが既存サーバのインタフェース記述言語による入力から、プロトコル変換モジュールを生成することにより、軽量化されたデータ表現プロトコルをデータ転送形式に用いているクライアントと既存サーバとのサービスとの連携を可能としている。
【0151】
次に、図12及び図13を併せ参照して具体的に第2の実施の形態における動作について説明する。
【0152】
インタフェース記述言語解釈手段110は、図13に示されるWSDLのインタフェース記述による入力を受け付け、使われているデータ型情報を重複なしで抜き出す。具体的には、図13の11行目での「xsd:complexType」を、12行目での「xsd:string」を、更に26行目での「xsd:boolean」をそれぞれ抜き出す。この際、他の行で表われれている「xsd:string」等と同一の表現は抜き出されない。
【0153】
次に、インタフェース記述言語解釈手段110は抜き出した「xsd:complexType」と「xsd:string」と「xsd:boolean」とをデータ型対応関係定義手段120に送付する。データ型対応関係定義手段120は、「xsd:complexType」が構造型データ、「xsd:string」が文字列型、「xsd:boolean」が真偽値型であるとそれぞれを判定し、その結果をインタフェース記述言語解釈手段110に送付する。インタフェース記述言語解釈手段110は、構造型データと文字列型データとが引数であり、真偽値型が戻り値であるという情報をシリアライズコード作成手段130に送付する。
【0154】
次に、シリアライズコード作成手段130は、一方では引数である構造型データと文字列型データとのシリアライズ用コードを生成し、クライアント非再帰データ表現生成シリアライザ230へクライアント非再帰データ表現生成シリアライザとして出力し、他方では真偽値型データのシリアライズ用コードを生成し、サーバ非再帰データ表現生成シリアライザ350へサーバ非再帰データ表現生成シリアライザとして出力する。
【0155】
次に、インタフェース記述言語解釈手段110は、構造型データと文字列型データとが引数であり、真偽値型データが戻り値であるという情報を変換プログラム作成手段140に送付する。変換プログラム生成手段140は、構造型データと文字列型データと真偽値型データとでの、クライアントが用いる形式と既存サーバが用いる形式との相互変換プログラムを生成し、プロトコル変換モジュール410へプロトコル変換モジュールとして出力する。
【0156】
次に、インタフェース記述言語解釈手段110は、構造型データと文字列型データとが引数であり、また真偽値型データが戻り値であるという情報を、パーサコード作成手段150に送付する。パーサコード作成手段150は、一方では引数である構造型データと文字列型データとのパース用コードを生成し、サーバ非再帰データ表現解釈パーサ320へサーバ非再帰データ表現解釈パーサとして出力し、他方では真偽値型データのパース用コードを生成し、クライアント非再帰データ表現解釈パーサ250へクライアント非再帰データ表現解釈パーサとして出力する。
【0157】
上述した第2の実施形態の場合、システムでは、インタフェース記述言語で定義された型のみのシリアライズ用、パース用、プロトコル変換モジュール用のみのコードを生成するので、配列型データ、文字列型データ、及び真偽値型データ以外の今回使わなかった基本型データ、例えば、整数値型データ等のコードをクライアント、サーバ、プロトコル変換器におく必要がなくなり、必要なディスク領域を削減できる。また、シリアライズまたはパースに関しては引数と戻り値との関係も調べ、引数のシリアライズと戻り値のパースとのコードのみをクライアント側に、引数のパースと戻り値のシリアライズとのコードのみをサーバ側に配置し、必要最小限なコード量に抑えることができる。
【0158】
【発明の効果】
第1の効果は、クライアントとサーバとの間で受け渡されるテキスト文書がプログラミング言語のデータ型との間で相互変換可能であるとともに、そのテキスト文書を高速に処理できることにある。
【0159】
その理由は、構造型データを表現している場合にもが高々一段の階層しか含まないので、多段の階層を含む場合には文法の複雑さを表すクラスが文法文脈自由文法となるのに比べて、より高速に解釈可能な正規文法により表現できるためである。
【0160】
第2の効果は、クライアントとサーバとの間で受け渡されるテキスト文書の解釈を行うプログラムサイズを小さくできることから、ハードディスクを持たないなどの小資源の端末上で容易に動作させることができることにある。
【0161】
その理由は、クライアントとサーバとの間で受け渡されるテキスト文書が、階層構造が高々一段であることを仮定してよいことから、パーシングのプログラム自体を多段の階層を許すXMLのパーサに比べて小さく作ることが可能であるためである。
【0162】
第3の効果は、軽量データ表現プロトコルをデータ転送形式に用いるクライアントと既存サーバとの間のサービス連携ができることである。
【0163】
その理由は、既存サーバのインタフェース記述言語による入力から、軽量データ表現プロトコルと既存プロトコルとを変換するモジュール、すなわち、プロトコル変換モジュールを生成することができるためである。
【0164】
第4の効果は、クライアント及びサーバで軽量データ表現プロトコルとプログラミング言語のデータ形式との間の変換を行う部分のプログラムを小さくすることができ、ハードディスクドライブを持たないようなディスク容量が限られた機器のディスク容量を有効活用できることである。
【0165】
その理由は、サーバ側のインタフェース記述言語による入力から、サーバアプリケーションの起動に必要最小限のクライアント非再帰データ表現生成シリアライザと、クライアント非再帰データ表現解釈パーサと、サーバ非再帰データ表現解釈パーサと、サーバ非再帰データ表現生成シリアライザとを生成することができるためである。
【図面の簡単な説明】
【図1】本発明による第1の実施形態のブロック構成を示す図である。
【図2】図1のブロック構成に対応するシーケンス動作を示す図である。
【図3】図1に示される実施形態で用いられるサーバアプリケーションのメソッド形式を示した図である。
【図4】図1に示される実施形態におけるクライアントシリアライズ部の処理フローを示した図である。
【図5】図1に示されるクライアントシリアライズ部の処理フロー後のクライアント構造型配列情報テーブル作成手段とクライアント非再帰データ表現文書作成手段のメモリ上の情報を示す図である。
【図6】図1に示される実施形態で用いられる軽量データ表現プロトコルを示した図である。
【図7】図1に示される実施形態で用いられるサーバ非再帰データ表現解釈パーサにおける処理フローを示した図である。
【図8】図1に示される実施形態で用いられるサーバ非再帰データ表現生成シリアライザにおける処理フローを示した図である。
【図9】図1に示される実施形態で用いられるクライアント非再帰データ表現解釈パーサにおける処理フローを示した図である。
【図10】図1に示される実施形態において、クライアントからサーバに送られる軽量データ表現プロトコルを示した図である。
【図11】図1に示される実施形態において、サーバからクライアントに送られる軽量データ表現プロトコルを示した図である。
【図12】本発明における第2の実施形態のブロック構成を示す図である。
【図13】図12に示される実施形態で用いられるインタフェース記述言語での記述例である。
【図14】従来技術であるSOAPのブロック構造を示す図である。
【図15】従来技術であるIDLコンパイラのブロック構造を示す図である。
【符号の説明】
100 インタフェース記述言語コンパイラ
110 インタフェース記述言語解釈手段
120 データ型対応関係定義手段
130 シリアライズコード作成手段
140 変換プログラム作成手段
150 パーサコード作成手段
200 クライアント
210 クライアントアプリケーション
220 非再帰データ表現用クライアントライブラリ
230 クライアント非再帰データ表現生成シリアライザ
231 クライアントシリアライズ部
232 クライアント構造型配列情報テーブル作成手段
233 クライアント非再帰データ表現文書作成手段
240 HTTPクライアント
250 クライアント非再帰データ表現解釈パーサ
251 クライアントパース部
252 クライアントヘッダ情報作成手段
253 クライアントIDポインタテーブル
254 クライアントパラメータ情報作成手段
255 プログラミング言語戻り値作成部
300 サーバ
310 HTTPサーバ
320 サーバ非再帰データ表現解釈パーサ
321 サーバパース部
322 サーバヘッダ情報作成手段
323 サーバIDポインタテーブル
324 サーバパラメータ情報作成手段
325 サーバアプリケーション起動情報作成部
330 サーバアプリケーション管理
340 サーバアプリケーション
350 サーバ非再帰データ表現生成シリアライザ
351 サーバシリアライズ部
352 サーバ構造型配列情報テーブル作成手段
353 サーバ非再帰データ表現文書作成手段
400 プロトコル変換器
410 プロトコル変換モジュール
420 HTTPクライアント/サーバ
500 ネットワーク
600 クライアント−プロトコル変換器間ネットワーク
700 プロトコル変換器−既存サーバ間ネットワーク
710 既存サーバ
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a system and a method for performing service cooperation by RPC (Remote Procedure Call) by performing data transfer in a format that can be processed without depending on an OS (operating system) and a programming language, and particularly has a structure. In order to reduce the processing load of remote method calls for transferring data and to reduce the large storage capacity required for building a system for performing XML (Extensible Markup Language) parsing, structured data is used. The present invention relates to a system capable of linking services using a lightweight data transfer protocol having a hierarchical structure up to one stage, and a method therefor.
[0002]
[Prior art]
In a conventional data transfer system, a protocol passed over a network by a standardized document SOAP (Simple Object Access Protocol 1.1) in a WWW consortium (World Wide Web Consortium) is defined. Have been.
[0003]
For example, as shown in FIG. 14, the conventional data transfer system includes a SOAP client 900 and a SOAP server 800. The SOAP client 900 includes a client application 210, a SOAP client library 910, a client XML (Extensible Markup Language: Extensible Markup Language) serializer 920, a client XML parser 930, and an HTTP client 230. The client XML serializer 920 includes a client structured data interpretation unit 921 and a client XML document creation unit 922. The client XML parser 930 includes a client XML document parsing unit 931, a client XML hierarchy management unit 932, and a client syntax tree creation unit 933.
[0004]
The SOAP server 800 includes an HTTP (Hypertext Transfer Protocol) server 310, a servlet engine 810, a SOAP server servlet 820, an XML serializer 920 and an XML parser 930, a server application management 330, and a server application 340. The server XML serializer 830 includes a server structured data interpretation unit 831 and a server XML document creation unit 832. The server XML parser 840 includes a server XML document parsing unit 841, a server XML hierarchy management unit 842, and a server syntax tree creating unit 843.
[0005]
The conventional data transfer system having such a configuration operates as follows.
[0006]
The client application 210 uses the data of the programming language, and uses the host name and the port number of the HTTP server, the service name corresponding to the server application 340 of the SOAP server 800, the method name activated in the server application 340, and the arguments used for the method activation. The information is sent to the SOAP client library 910. The SOAP client library 910 sends a service name corresponding to the server application 340, a method name activated in the server application 340, and an argument used for method activation to the client structure type data interpretation unit 921 of the client XML serializer 920.
[0007]
The client structured data interpretation unit 921 of the client XML serializer 920 sends the received structured data to the client XML document creating unit 922 while following the data structure in a depth-first manner. The client XML document creation unit 922 converts the received XML document into the XML document with the depth-first structure, and sends the converted XML document to the HTTP client 230. Further, the HTTP client 230 attaches an HTTP header to the received XML document, and sends it to the HTTP server 310 of the SOAP server 800 via the network 500.
[0008]
In the SOAP server 800, the HTTP server 310 looks at the HTTP header, determines that the processing should be performed by the SOAP server servlet 820, and sends the XML document part to the SOAP server servlet 820 running on the servlet engine 810. The SOAP server servlet 820 parses the XML document using the server XML parser 840 and converts it into data in a programming language, and then sends the converted data to the server application management 330.
[0009]
At this time, inside the server XML parser 840, first, the server XML document parsing unit 841 analyzes the XML tag information, and when a start tag for deepening the XML hierarchy appears, the server XML hierarchy management unit 842 performs hierarchy analysis. When the end tag that makes the XML hierarchy shallower appears, the server syntax tree creator 843 performs the structure reduction of the server XML hierarchy management unit 842 by one level while the server syntax tree creation unit 843 Create data of data as data of syntax tree.
[0010]
The server application management 330 finds a server application 340 to be activated from the received syntax tree data of the programming language, activates the server application 340, and obtains an application-level return value. Further, the server application management 330 uses the server XML serializer 830 to convert the obtained return value into an XML document format, and sends it to the SOAP server servlet 820.
[0011]
At this time, in the server XML serializer 830, in particular, the server structure type data interpretation unit 831 sends the received return value to the server XML document creation unit 832 while following the data structure in a depth-first manner. The server XML document creation unit 832 converts the XML document into an XML document while following the depth-first structure, and sends the converted XML document to the SOAP server servlet 820. The SOAP server servlet 820 returns the received XML document to the HTTP server 310. The HTTP server 310 attaches an HTTP header to the returned XML document, and returns it to the HTTP client 230 via the network 500.
[0012]
The HTTP client 230 parses the XML document by the client XML parser 930, converts the document into a data type of a programming language, and returns the data type to the SOAP client library 910.
[0013]
In the client XML parser 930, first, the client XML document parsing unit 931 analyzes the XML tag information, and when a start tag for deepening the XML hierarchy appears, causes the client XML hierarchy management unit 932 to store one level of the hierarchy. On the other hand, when an end tag that makes the XML hierarchy shallower appears, the client syntax tree creation unit 933 reduces the hierarchy of the client XML hierarchy management unit 932 by one level while the client syntax tree creation unit 933 converts the return value data of the programming language into the syntax tree. Create as data.
[0014]
Finally, the SOAP client library 910 converts the return value data in the returned programming language into a type required by the client application 210 and returns it.
[0015]
As a conventional technology for generating a code for linking a client and a server, there is an IDL (Interface Definition Language) compiler.
[0016]
An IDL compiler 1000 shown in FIG. 15 is a conventional technology for generating a code for linking a client and a server. It includes a code creation means 1040. An IDL server 1200 that is a server that cooperates with an IDL client 1100 that is a cooperating client is connected by a network 500.
[0017]
The IDL client 1100 includes an IDL client application 1110, an IDL client library 1120, a client IDL serializer 1130, a client transport library 1140, and a client IDL parser.
[0018]
The IDL server 1200 includes a server transport library 1210, a server IDL parser, an IDL server library 1230, an IDL server application 1240, and a server IDL serializer 1250.
[0019]
The conventional system in which a client and a server having such a configuration cooperate operates as follows.
[0020]
First, the IDL client application 1110 sends, to the IDL client library 1120, argument information necessary for a remote procedure call (Remote Procedure Call) of the IDL server application in the IDL server 1200 in a data type of a programming language, and starts up. Request. The IDL client library 1120 requests the client IDL serializer 1130 to convert the transfer data into a data format that can be transferred on the network 500. The client IDL serializer 1130 converts the transfer data into a format that can be transferred on the network 500, and sends the data to the IDL server side via the network 500 using the client transport library 1140.
[0021]
Next, the server transport library 1210 receives the transfer data from the network 500 and sends it to the server IDL parser 1220. The server IDL parser 1220 converts the received data in a format that can be transferred on the network 500 into argument information of a programming language data type, and sends the converted result to the IDL server library 1230. The IDL server library 1230 uses the argument information received from the server IDL parser 1220 to find the IDL server application 1240 to be started, and sends the found IDL server application 1240 an argument in a data type of a programming language.
[0022]
After receiving the argument from the IDL server library 1230, the IDL server application 1240 executes the application, and returns a return value of the execution result to the IDL server library 1230 in a data type of a programming language. The IDL server library 1230 requests the server IDL serializer 1250 to convert the data type of the programming language returned from the IDL server application 1240 into a format that can be transferred on the network 500. The server IDL serializer 1250 converts the data type of the programming language received from the IDL server library 1230 into a format that can be transferred in the network 500, and sends the data to the IDL client 1100 via the network 500 using the server transport library 1210. .
[0023]
In the IDL client 1100, the client transport library 1140 receives the execution result of the IDL server application 1240 in a data format that can be transferred on the network 500, and sends it to the client IDL parser 1150. The client IDL parser 1150 converts a data format that can be transferred on the network 500 into a data type of a programming language, and sends the data type to the IDL client library 1120. Finally, the IDL client library 1120 returns the return value of the execution result of the IDL server application 1240 which is the data type of the programming language received from the client IDL parser 1150 to the IDL client application 1110.
[0024]
Next, an operation of the IDL compiler 1000 that generates the client IDL serializer 1130 and the client IDL parser 1150 in the IDL client 1100 and the server IDL parser 1220 and the server IDL serializer 1250 in the IDL server 1200 will be described.
[0025]
First, the IDL interpreting means 1010 describes, among interface description languages, a format of the IDL server application 1240 in a format standardized by an object management group called IDL (IDL). Is accepted as input. Next, the IDL interpretation unit 1010 obtains a list of data types used in the input IDL using the IDL data type interpretation unit 1020. Next, the IDL interpreting unit 1010 sends information on the format of the IDL server application 1240 and the data type used therein to the IDL serializing code creating unit 1030 and the IDL parser code creating unit.
[0026]
Next, the IDL serialization code creating unit 1030 generates a client IDL serializer 1130 and a server IDL serializer 1250 from information on the format of the IDL server application 1240 and the data type used therein. Finally, the IDL parser code creation means 1040 generates a client IDL parser 1150 and a server IDL parser 1220 from information on the format of the IDL server application 1240 and the data type used therein.
[0027]
[Problems to be solved by the invention]
The service cooperation system using the conventional data transfer protocol described above has the following problems.
[0028]
The first problem is that when implementing RPC for passing structured data using SOAP, the server side and the client side parse the transferred XML document and convert it into a data type used by the application program. The processing load for conversion is heavy.
[0029]
This is because the server and the client need to parse an XML document having a complicated structure including multiple layers. Specifically, of the two typical parsing methods of XML documents, in a method using a document object model, a tree of a document object model is once created and converted into a data structure for RPC. This is because when Simple API for XML is used, a module for managing a multi-stage hierarchical structure is required by itself.
[0030]
The second problem is that when a system using SOAP is constructed, a large amount of disk space of about 100 megabytes is required on the server side. That is, the storage capacity of a device having no hard disk drive cannot be accommodated, or most of the storage capacity is consumed.
[0031]
The reason is that in a system using a general SOAP, a software of a SOAP server, a Web server such as Apache, a servlet engine such as Tomcat, and a runtime of Java (registered trademark) language are used. This is because an environment is required.
[0032]
A third problem is that it is difficult to serialize the interface description language and easily cooperate between a client having a parsing means and an existing server.
[0033]
The reason is that data conversion between the new protocol and a format that can be interpreted by existing servers is essential.
[0034]
An object of the present invention is to solve such a problem and provide a service linkage that can perform RPC using a format that can be processed at high speed on the server side and the client side and that can represent a structured data type. It is to provide a system.
[0035]
Another object of the present invention is to provide a service cooperation system in which a server function for interpreting a text-based protocol independent of an OS or a programming language is accommodated in a small disk area of a device having no HDD (hard disk drive). is there.
[0036]
Still another object of the present invention is to provide a service cooperation system that achieves the above two objects and allows a client to access an existing server.
[0037]
[Means for Solving the Problems]
Therefore, the present invention aims to solve the above-mentioned problems, and to reduce the processing load of a remote method call for transferring structured data and to reduce the storage capacity in the construction of a system for performing this XML parsing. Provided is a service cooperation system that can use a lightweight data transfer protocol that can access an existing server.
[0038]
The service cooperation system using the lightweight data transfer protocol according to the first embodiment of the present invention includes a client non-recursive data expression generation serializer (230), a server non-recursive data expression interpretation parser (320), and a server non-recursive data expression. It includes a generation serializer (350) and a client non-recursive data expression interpretation parser (250), can process RPC activation of the server application (340) from the client application (210) at high speed, and the server (300) uses the HDD It can be reduced to a size that can fit in devices that do not have it.
[0039]
That is, the client non-recursive data expression generation serializer (230) includes a client structured type array information table creating means (232) for creating a structured type data argument of RPC using a stack structure for structured type data and array structure information. By using the ID pointer, the data is converted into a text format with at most one layer. The server non-recursive data expression interpretation parser (320) links at most one level of hierarchical and structured data when converting text format data transferred via the network (500) into a format interpretable by a programming language. A server parameter information creating means (324) having a function of assembling the structure of parameter information with a server ID pointer table (323) for managing the relationship is included.
[0040]
The server non-recursive data expression generation serializer (350) uses a stack structure for the structure type data and the structure information of the array to create a return value that starts the server application (340). ) And convert it to a text format with at most one level of hierarchy.
[0041]
The client non-recursive data expression interpretation parser (250), when returning a return value converted into a text format by the server non-recursive data expression generation serializer (350) to a return value of a programming language, at most one level of hierarchical and structured data And a client parameter information creating means (254) having a function of assembling the structure of parameter information.
[0042]
Also, in the service cooperation system using the lightweight data transfer protocol according to the second embodiment of the present invention, an interface description language compiler ( 100) is added, and the server application (340) in the server (300) and the SOAP server (500) can be started by the RPC from the client application (210) in the client (200). Therefore, from the description in the interface description language, the client non-recursive data expression generation serializer (230) and the client non-recursive data expression interpretation parser (250) in the client (200), and the server non-recursive data expression in the server (300) Each unit of the interpretation parser (320) and the server non-recursive data expression generation serializer (350) is operated.
[0043]
Also, in the service cooperation system using the lightweight data transfer protocol according to the second embodiment of the present invention, an interface description language compiler ( 100) is added, and the existing server (710) is started by the RPC from the client application (210) in the client (200) via the server application (340) in the server (300) and the protocol converter (400). It is possible.
[0044]
Therefore, the interface description language compiler (100) converts the description in the interface description language into a client non-recursive data expression generation serializer (230), a client non-recursive data expression interpretation parser (250), and a server ( In 300), a server non-recursive data expression interpretation parser (320) and a server non-recursive data expression generation serializer (350) are generated, and in a protocol converter (400), respective means of a protocol conversion module (410) are generated.
[0045]
BEST MODE FOR CARRYING OUT THE INVENTION
Next, embodiments of the present invention will be described in detail with reference to the drawings.
[0046]
First, a first embodiment of the present invention will be described with reference to FIG.
[0047]
As illustrated, the first embodiment includes a client 200 of RPC (Remote Procedure Call), a server 300 of RPC, and a network 500 that can transfer data between the client 200 and the server 300. I have.
[0048]
The client 200 includes a client application 210, a client non-recursive data expression library 220, a client non-recursive data expression generation serializer 230, an HTTP client 240, and a client non-recursive data expression interpretation parser 250. The client non-recursive data expression generation serializer 230 includes a client serializer 231, a client structured type array information table 232, and a client non-recursive data expression document creation unit 233. The client non-recursive data expression interpretation parser 250 includes a client parse unit 251, a client header information storage unit 252, a client ID pointer table 253, a client parameter information storage unit 254, and a programming language return value creation unit 255.
[0049]
The server 300 includes an HTTP client 310, a server non-recursive data expression interpretation parser 320, a server application management 330, a server application 340, and a server non-recursive data expression generation serializer 350. The server non-recursive data expression interpretation parser 320 includes a server parse unit 321, a server header information storage unit 322, a server ID pointer table 323, a server parameter information storage unit 324, and a server application startup information creation unit 325. The server non-recursive data expression generation serializer 350 includes a server serializer 351, a server structure type array information table 352, and a server non-recursive data expression document creation unit 353.
[0050]
The arrows in FIG. 1 represent the flow of data. The components of FIG. 1 operate roughly as follows.
[0051]
The client application 210 is a part created by a user of the system of the present invention, and performs a method call in a normal programming language such as “Java (registered trademark), C, C ++”. The client non-recursive data representation library 220 receives a method call in a programming language from the client application 210, sends the received data to the client non-recursive data representation generation serializer 230, and returns a return value from the client non-recursive data representation interpretation parser 250. The information is obtained and returned to the client application 210.
[0052]
The client non-recursive data expression generation serializer 230 converts the received data into a lightweight data protocol based on text and sends it to the HTTP client 240. Inside the client non-recursive data expression generation serializer 230, the client serializer 231 first receives data in a programming language, and if the data is simple type data having no structure, the client non-recursive data expression document creation means 233 In the case of structured data or array data, the data is sent to the client structure type array information table 232.
[0053]
The client structure type array information table 232 is sent to the client non-recursive data expression document creating means 233 in the order given from the client serialization 231 first. As a result, the child element portion of the structured data is sent to the client non-recursive data expression document creating means 233 before the parent element. The client non-recursive data expression document creation means 233 first receives the information received from the client structured type array information table 232 in the order in which it was sent to itself, and then receives the information received from the client serialization unit 231 in the order in which it was sent to itself. The serialized text document is sent to the HTTP client 240 in the format of the lightweight data expression protocol.
[0054]
The HTTP client 240 adds an HTTP header to the character string of the text expression expressed by the lightweight data expression protocol from the client non-recursive data expression generation serializer 230, and sends the character string to the server 300 via the network 500. As a result, the HTTP client 240 obtains an HTTP header-equipped lightweight data transfer protocol format representing the return value of the RPC, and returns this lightweight data transfer protocol portion to the client non-recursive data expression interpretation parser 250.
[0055]
The client non-recursive data expression interpretation parser 250 converts the lightweight data transfer protocol based on the text returned from the HTTP client 240 into a data type of a programming language, and then returns it to the client non-recursive data expression library 220. In the client non-recursive data expression interpretation parser 250, first, the client parse unit 251 receives the data in the lightweight data transfer protocol format, and sends the header part of the lightweight data transfer protocol to the client header information storage unit 252. Next, the client parsing unit 251 sends the body part of the lightweight data transfer protocol to the client parameter information storage unit 254 while temporarily storing the body part in the client ID pointer table 253. The programming language return value creation unit 255 reads the data stored in the client header information storage unit 252 and the client parameter information storage unit 254, creates return value information, and sends it back to the client non-recursive data expression library 220.
[0056]
The HTTP server 310 receives the data in the lightweight data transfer protocol format with the HTTP header via the network 500, and checks the HTTP header. After confirming that the data is of the lightweight data transfer protocol by checking, the HTTP server 310 sends the lightweight data transfer protocol part to the server non-recursive data expression interpretation parser 320.
[0057]
In the server non-recursive data expression interpretation parser 320, the server parse unit 321 receives the lightweight data transfer protocol part from the HTTP server 310 and sends the header part of the lightweight data transfer protocol part to the server header information storage unit 322. On the other hand, the body part is stored in the server parameter information storage unit 324 using the server ID pointer table 323. The server application start information creation unit 325 reads data from the server header information storage unit 322 and the server parameter information storage unit 324, converts the data into a data type of a programming language, and sends the converted data type to the server application management 330. .
[0058]
The server application management 330 manages the correspondence between the name of the server application and the corresponding server application 340, and includes the name of the server application 340 among the data types in the programming language passed from the server non-recursive data expression interpretation parser 320. Extract the part corresponding to. The server application management 330 sends an argument expressed in the programming language for the method expressed in the data type in the programming language to the server application 340 corresponding to the extracted name. The server application management 330 sends the argument, activates the server application 340, and obtains a return value from the server application 340. Further, the server application management 330 sends the return value received from the server application 340 to the server non-recursive data expression generation serializer 350 in the form of a data type of a programming language.
[0059]
The server application 340 receives the method call from the server application management 330 and returns a return value to the server application management 330.
[0060]
The server non-recursive data expression generation serializer 350 sends the data type of the programming language returned from the server application management 330 to the client non-recursive data expression document creating means 353 in the case of simple type data having no structure. In the case of structured data or array data, it is sent to the client structure type array information table 352. The client structure type array information table 352 is sent to the client non-recursive data expression document creation unit 353 in the order received from the client serialization 231 first. The client non-recursive data representation document creation means 353 first receives the data received from the server structure type array information table 352 in the order in which it was transmitted to itself, and then receives the data received from the server serialization unit 351 in the order in which it was transmitted to itself. It is serialized and returned to the HTTP server 310 in the form of a lightweight document representation protocol that is a text document.
[0061]
The network 500 is a network that uses TCP / IP, which is a standard protocol of the Internet, for example.
[0062]
Next, the overall operation in the first embodiment will be described in detail with reference to the block diagram of FIG. 1 and the sequence diagram of FIG. Although the step number numbers shown in FIG. 2 are written in circles, in the following description, only the number numbers will be omitted.
[0063]
First, the client application 210 uses the data type of the programming language, and uses the host name and port number of the HTTP server, the service name corresponding to the server application 340, the name of the method to be started in the server application 340, The argument information to be passed is sent to the client non-recursive data expression interpretation parser serializer 220 (step A-1). In this case, the header information includes the service name and the method name. Next, the client non-recursive data representation library 220 sends the header information and the argument information to the client non-recursive data representation generation serializer 230 (step A-2), and obtains data by the lightweight data transfer protocol as the answer (step A-2). Step A-3) is performed.
[0064]
Next, the client non-recursive data expression library 220 sends the host name and port number received in step A-1 and the data according to the lightweight data transfer protocol obtained in step A-3 to the HTTP client 240 (step A). -4). The HTTP client 240 adds an HTTP header before the lightweight data transfer protocol received in step A-4, and sends it to the HTTP server 310 via the network 500 (step A-5).
[0065]
The HTTP server 310 checks the HTTP header portion and checks that the transmitted data is in the format of the lightweight data transfer protocol, and then sends the lightweight data expression protocol portion to the server non-recursive data expression interpretation parser 320 (step A-6).
[0066]
The server non-recursive data expression interpretation parser 320 interprets the lightweight data transfer protocol part and extracts header information and argument information in a data format in a programming language (step A-7). Further, the server non-recursive data expression interpretation parser 320 sends the service name corresponding to the server application 340 extracted from the header information, the method name activated in the server application 340, and the argument information to the server application management 330 (step A-). 8) Yes.
[0067]
The server application management 330 specifies the server application 340 to be started from the service name passed in step A-8, sends the argument information received in step A-8 to the server application 340, and executes step A-8. (Step A-9).
[0068]
The server application 340 performs processing using the argument received in step A-9, and returns a return value of the processing result to the server application management 330 (step A-10). The server application management 330 adds return type information, for example, a character string type or a numeric type, to the return value received in step A-10, and sends the return value to the server non-recursive data expression generation serializer 350 (step A-11). ).
[0069]
The server non-recursive data expression generation serializer 350 converts the return value information received in step A-11 into a lightweight data transfer protocol (step A-12). Further, the server non-recursive data expression generation serializer 350 sends the lightweight data transfer protocol created in step A-12 to the HTTP server 310 (step A-13). The HTTP server 310 attaches an HTTP header before the lightweight data transfer protocol received in step A-13, and sends the HTTP header to the HTTP client 240 via the network 500 (step A-14).
[0070]
The HTTP client 240 checks the HTTP header and checks that the transmitted data is in the format of the lightweight data transfer protocol, and then transmits the lightweight data representation protocol to the client non-recursive data representation interpretation parser 250 (step A). -15). Further, the client non-recursive data expression interpretation parser 250 interprets (parses) the lightweight data transfer protocol part and extracts return value information in a data format in a programming language (step A-16). Further, the client non-recursive data expression interpretation parser 250 sends the return value in the programming language extracted in step A-16 to the client non-recursive data expression library 220 (step A-17).
[0071]
Finally, the client non-recursive data expression library 220 returns the return value obtained in step A-17 to the client application 210 (step A-18).
[0072]
Next, the conversion method between the data type of the programming language and the lightweight data expression protocol will be described in detail with reference to FIGS.
[0073]
First, referring mainly to FIG. 3, in the client non-recursive data expression generation serializer 220 and its components, a portion for creating data of the lightweight data transfer protocol from the header information and the argument information, that is, step A in FIG. -2 and step A-3 will be described in detail.
[0074]
As an argument of the method provided by the server application 340, for example, a return value is represented by basic type data (PrimitiveA) as a format of the method of the server application shown in 1) of FIG. As shown in the figure, any one of the basic type data (Primitive_Barg1), the structural type data (Struct_Carg2), and the one-dimensional array of the basic type data (PrimitiveArray_Darg3) is represented by an arbitrary number of methods. May be. In particular, as the basic type data, an integer value type, a character string type, a boolean value type, a time type, and a byte string type encoded in base64 can be used.
[0075]
Structured data can be used as a component of structured data as shown in 2) of FIG. As the return value of the server application 340, one-dimensional array of basic type data, structural type data, or basic type data can be used.
[0076]
First, the client serializer 231 in the client non-recursive data expression generation serializer 230 stores header information including a service name and a method name and argument information (Primitive_Barg1, Struct_C) in order to start a server application in the format of FIG. arg2, PrimitiveArray_Darg3) are sent. The client serializing unit 231 sends the header information including the service name and the method name to the client non-recursive data expression document creation unit 233. The client non-recursive data expression document creating means 233 creates a header portion by the lightweight data expression protocol from the received header information including the service name and the method name.
[0077]
Specifically, “Head” to “blank line” shown in FIG. 6 are created. “Head” is a reserved word indicating the beginning of a header. “SN” is a reserved word, followed by a service name representing the name of the server application 340. For example, in FIG. 6, the service name is “Server APPlication”. “PN” is a reserved word, and the method name of the server application 340 to be started thereafter appears. For example, in FIG. 6, a method “method1” is activated.
[0078]
Next, a method of interpreting argument information in the client serializing unit 231 will be described with reference to the flowchart of FIG.
[0079]
First, the client serializer 231 extracts one piece of argument information (step B1), and determines whether the extracted argument information is basic type data (step B2). If the result determined in step B2 is "NO" and the data is not basic type data, it is determined whether or not the data is array type (step B3). If step B3 is "No" and is not an array type, the data is always structured type data, but it is determined whether or not the data is structural type data (step B4). If the result of step B4 is "yes" and the data is structured data, an ID pointer indicating the hierarchy is assigned to the structured data, and the argument name assigned with the ID pointer is transmitted to the client non-recursive data expression document creating means 233. It is sent (step B5).
[0080]
Next, the client serializing unit 231 sends a pair of the structured data name and the ID pointer value assigned in step B5 to the client structured array information table creating means 232 (step B6). Next, one child element of the structured data is extracted (step B7), and it is determined whether the child element of the structured data extracted in step B7 has structured data or an array (step B8). You.
[0081]
If step B8 is "NO" and neither array nor structure type data is provided as a child element of the structure type data, the child element of the structure type data is sent to the client structure type array information table creating means 232 (step B9). Next, the client serializing unit 231 determines whether there is a child element next to the child element extracted in step B7 (step B10).
[0082]
If step B10 is "yes" and there is a next child element, the step B7 is executed. If it is determined in step B8 that the array has the array or the structured data as a child element of the structured data, the ID pointer indicating the array for the structured data or the array is changed to the client structured array of the allocation destination. The information is sent to the information table creation means 232 (step B11). Thereafter, the process returns to step B6, and the structured data and the set of assigned ID pointers are sent to the structured array information table creating means 232.
[0083]
If the above step B2 is "Yes" and it is determined that the data is basic type data, the client serializing unit 231 sends the argument name and the argument value to the client non-recursive data expression document creating means 233 (step B12).
[0084]
If it is determined in step B3 that the type is an array type, the client serializing unit 231 allocates an ID pointer indicating a hierarchy to the array type and sends it to the client non-recursive data expression document creation unit 233. (Step B13). Next, the array type component is sent to the client array information table creating means 232 (step B14).
[0085]
Next, it is determined whether the step B10 is "No" or following the step B12 or B14, and it is determined whether there is a next argument (step B15). If "Yes" with an argument, the process returns to the step B1. If "no" without an argument, the process shown in the flowchart of FIG.
[0086]
When the client serialization unit 231 completes the processing shown in the flowchart of FIG. 4 described above with the data of FIG. 3 as input, the client non-recursive data expression document creation unit 233 and the client structured type array information table creation unit 232 are stored in memory. 5 has data having a stack structure shown in FIG. After the processing in FIG. 4, the data held by the client structural type array creating unit 232 is sent to the client non-recursive data expression document creating unit 233.
[0087]
The client non-recursive data expression document creating unit 233 traces the data received from the client structured type array information table creating unit 232 from the top of the stack, for example, from “10.” in the case of FIG. Create a text document. First, a reserved word "Body" is output as shown in FIG. Also, looking at the stack of “10.”, it is determined from the keyword “Array” that the array is an array. Then, when the user goes down the stack, “id = 200 Primitive_Array_D” is found at the location of “7.”, so it is determined that the array is the one so far, and the sixth row in FIG. To the tenth line are output.
[0088]
Next, since “Primitive_H value_of_H” of the basic type data can be found at “6.” in FIG. 5, the element of “Struct_F of id = 110” shown in “4. Is recognized. As a result, lines 11 to 14 in FIG. 6 are output according to the format of the structured data. Next, it is confirmed that “Struct_F” is defined as “id = 110” in “3.” in FIG. 5, and further, “2.” is replaced with “id = 110” defined in “1.”. Since it is determined that the element is “100”, the 15th to 18th lines in FIG. 6 are output in the form of structured data.
[0089]
After completing the transmission of the data received from the client structured array information table generating means 232, the client non-recursive data representation document generating means 233 stores the information on the memory received from the client serializing section 231 under the stack, that is, in the form of a numeral. In the order from the smallest, the 19th to 21st lines in FIG. 6 are output. Then, after describing the blank line, the client non-recursive data expression document creating means 233 describes “End” indicating the end of the lightweight data transfer protocol, and completes the output.
[0090]
Next, referring to the flowchart of FIG. 7 and the example of the lightweight data transfer protocol of FIG. 6, the server non-recursive data expression interpretation parser 320 creates header information and argument information from the lightweight data transfer protocol, The procedure of Step A-7 shown in FIG. 2 up to sending to the management 330 will be described in detail.
[0091]
First, the server parsing unit 321 reads a line from “Head” indicating the beginning of the lightweight data transfer protocol to a blank line in FIG. 6, and, for example, sets a header name “sN” and a header value such as “serverApplication” as a set. Then, it is stored in the server header information creating means 322 (step C1). Next, in the lightweight data transfer protocol, a line in which "Body" representing the beginning of the argument portion is described is read (step C2). Next, the next line is read by one (step C3). It is determined whether the line read in step C3 is a line that is an ID pointer to be expressed in the form of “id = number” (step C4). In the case of a line starting from the ID pointer, up to "@" which is a unit of the structure represented by the ID pointer is read (step C5), and then the ID pointer value is included in the line read in step C5. It is checked whether or not it is present (step C6).
[0092]
Referring to FIG. 6, an example of “Structure_F: id = 110” on the 17th line corresponds to a case where an ID pointer value is included. If the result of step C6 is "No" and it is determined that the ID pointer value is not included, the server parse unit 321 creates an entity in the programming language of the structured data or array from the data read in step C5. Then, it sends it to the server parameter information creating means 324 (step C7). For example, when the sixth to tenth lines in FIG. 6 are read, an entity in the programming language of the array is created, and when the eleventh to fourteenth lines in FIG. An entity of data is created. The pair of the reference to the entity created in step C7 and the ID pointer value is registered in the server ID pointer table 323 (step C8).
[0093]
On the other hand, if the row read “yes” in step C6 contains an ID pointer value, the server parse unit 321 uses the ID pointer value as a key to point to the ID from the server ID pointer table 323 using the ID pointer. Then, an entity in a programming language is acquired using the reference (step C9). Next, an entity is created from the portion read in step C5, and the entity obtained in step C9 is embedded in the portion represented by the ID pointer (step C10). For example, lines 15 to 18 in FIG. 6 start with an ID pointer. However, after the entity of this part is created, the part of “id = 110” indicated on the 17th line includes the structured type data created from the 11th to 14th lines in FIG. Is embedded.
[0094]
When the above step C4 is "No" and it is determined that the line does not start from the ID pointer, the server parse unit 321 determines whether or not the line represents basic type data (step C11). If this step C11 is "yes" and it is determined that the line represents the basic type data, the 19th line in FIG. 6 corresponds to this example. The data of the basic type data is created in a programming language, and the server parameter information is created. It is sent to the creating means 324 (step C12).
[0095]
When it is determined that the above-mentioned step C11 is “No” and the row does not represent the basic type data, it is confirmed that the row corresponds to the structural type data or the array (step C13). For example, the 20th line in FIG. 6 corresponds to the structured data, and the 21st line corresponds to the array.
[0096]
Next, an ID pointer value portion is obtained from the read line (step C14). Next, after the reference pointed to by the server ID pointer is obtained using the ID pointer as a key, the entity is obtained (step C15). Next, the programming language entity acquired in step C15, that is, the structure type data or the array of the programming language is embedded in the ID pointer portion to construct the programming language entity (step C16). For example, in FIG. 6, the structural type data created from the 15th line to the 18th line is embedded in the portion of “id = 100” in the 20th line, and the 17th line portion is further embedded in the “id = 100” portion. The first line is embedded.
[0097]
Subsequent to steps C8, C10, and C16, the server parse unit 321 reads the next line (step C17). It is determined whether the line read in step C17 is an empty line (step C18). If it is determined in step C18 that the result is "No" and the line is not blank, the next procedure returns to step C3. If it is determined in step C18 that the line is blank, the next line is read, and a character string "End" indicating the end of the lightweight data transfer protocol is confirmed (step C19).
[0098]
After the series of processing flows shown in FIG. 7 is completed, the server application activation information creating unit 325 reads out the service name, the method name, and the argument information from the server header information creating unit 322 and the server parameter information creating unit 324, and It is sent to the application management 330.
[0099]
Next, the procedure in which the server non-recursive data expression generation serializer 350 creates the lightweight data transfer protocol transmitted in step A-11 in FIG. 2 from the return value information will be described in detail with reference to the flowchart in FIG.
[0100]
First, the return value information is sent from the server application management 330 to the server serializer 351 in the server non-recursive data expression generation serializer 350. When the server application starts normally, the server serialization unit 351 sends the success of the normal startup to the server non-recursive data expression document creation unit 353. The server non-recursive data expression document creation means 353 creates a header portion based on the lightweight data expression protocol indicating that the server application has been successfully started. Specifically, from “Head” in FIG. 10 to blank lines are created. This “Head” is a reserved word indicating the beginning of the header of the lightweight data representation protocol. In addition, “rPro” in FIG. 11 is a reserved word, followed by a character string “normal” if the activation of the server application 340 is normal, and a character string “Error” otherwise.
[0101]
Here, the server serializer 351 extracts return value information (step D1). Next, the server serializer 351 determines whether the return value extracted in step D1 is basic type data (step D2). If the result determined in step D2 is "No" and the data is not basic type data, it is determined whether or not the data is array type (step D3). If the step D3 is "NO" and is not an array type, it is always structured type data, so it is confirmed that the data is structured type data (step D4). If the data is structured type data, an ID pointer indicating a hierarchy is assigned to the structured type data, and the return value assigned the ID pointer is sent to the server non-recursive data expression document creating means 353 (step D5).
[0102]
Next, the server serializing unit 351 sends information, which is a combination of the structured data name and the ID pointer value allocated in step D5, to the server structured data array information creating means 352 (step D6). One child element is extracted (step D7). It is determined whether or not there is further structural type data or an array as a child element of the structural type data extracted in step D7 (step D8).
[0103]
If the result of step D8 is “No”, and if neither the array nor the structured data is included as the child element of the structured data, the server serializing unit 351 sends the child element of the structured data to the server structured array information table creating means 352 ( Step D9) and then determine whether there is a child element next to the child element extracted in step D7 (step D10). If this step D10 is "yes" and there is a next child element, the procedure of step D7 is executed.
[0104]
If the step D8 determines "Yes" that the structure serial data has an array or structured data as a child element, the server serializing unit 351 allocates an ID pointer representing the array to the structured data or the array, and The data is sent to the structured type array information table creating means 352 (step D11), and then a set of the structured type data and the assigned ID pointer is sent to the structured type data array information creating means 352 (step D11).
[0105]
If the above-mentioned step D2 is "Yes" and the data is determined to be the basic type data, the server serializing unit 351 sends the argument name and the argument value to the client non-recursive data expression document creating means 233 (step D12). When it is determined in step D3 that the type is an array type, the server serializing unit 351 allocates an ID pointer indicating a hierarchy to the array type and sends it to the server non-recursive data expression document creating unit 353 (step S3). D13), and then send the array type component to the server array information table creating means 352 (step D14).
[0106]
The process of the flowchart shown in FIG. 8 ends with “No” in step D10 and steps D12 and D14. After the processing shown in FIG. 8, the data held by the server structured type array creating unit 352 is sent to the server non-recursive data expression document creating unit 353.
[0107]
Next, the server non-recursive data representation document creating means first outputs “Body”, and then traces the data received from the server structure type array information table creating means 352 from the top of the stack, while using the lightweight data transfer protocol format. Create a text document. After completing the transmission of the data received from the client structured type array information table generating unit 352, the server non-recursive data representation document generating unit 353 transmits the information on the memory received from the client serializing unit 231 following the stack. . In this way, the server non-recursive data representation document creating means 353 describes "End" indicating the end of the lightweight data transfer protocol after describing the blank line, and completes the transmission.
[0108]
Next, the procedure in which the client non-recursive data expression interpretation parser 250 creates header information and return value information from the lightweight data transfer protocol in step A-16 in FIG. 2 will be described in detail with reference to the flowchart of FIG. I do.
[0109]
First, in the client non-recursive data expression interpretation parser 250, the client parse unit 251 reads line by line from “Head” representing the beginning of the lightweight data transfer protocol to blank lines, and reads the header name, for example, “rPro” in FIG. And a header value, for example, "normal" in FIG. 11, are stored as a set in the client information creating means 252 (step E1). Next, in the lightweight data transfer protocol, a line describing "Body" indicating the beginning of the argument portion is read (step E2), and then the next line is read (step E3).
[0110]
Next, the client parse unit 251 determines whether or not the line read in step E3 is a line that is an ID pointer to be expressed in the form of “id = number” (step E4). If the step E4 is "Yes" and the line starts from the ID pointer, the data up to "@" which is a unit of the structure represented by the ID pointer is read (step E5). Next, it is checked whether or not the ID pointer value is included in the line read in step E5 (step E6).
[0111]
If this step E6 is "No" and it is determined that the ID pointer value is not included, the client parse unit 251 creates an entity in a structured language or an array programming language from the data read in step E5, It is sent to the client parameter information creation means 254 (step E7). Next, a pair of the reference to the entity created in step E7 and the ID pointer value is registered in the client ID pointer table 253 (step E8).
[0112]
If step E6 is “Yes” and the read line contains an ID pointer value, the client parse unit 251 is pointed to by the ID pointer from the client ID pointer table 253 using the ID pointer value as a key. A reference is obtained, and an entity in a programming language is obtained using the reference (step E9). Next, the client parse unit 251 creates an entity from the portion read in step E5, and embeds the entity acquired in step E9 in the portion indicated by the ID pointer (step E10).
[0113]
If step E4 is "No" and it is determined that the line does not start from the ID pointer, the client parse unit 251 subsequently determines whether or not the line represents basic type data (step E11). If this step E11 is "Yes" and it is determined that the line represents the basic type data, the data of the basic type data is created in a programming language and sent to the client parameter information creating means 254 (step E12).
[0114]
When it is determined that the step E11 is “No” and the row does not represent the basic type data, the client parse unit 251 confirms that the row corresponds to the structural type data or the array (step E13). The ID pointer value is obtained from the read line (step E14). Next, after the reference pointed to by the server ID pointer is obtained using the ID pointer as a key, the entity is obtained (step E15). Next, the structure type data or array, which is the entity of the programming language acquired in the step E15, is embedded in the ID pointer portion to construct the programming language entity (step E16).
[0115]
Subsequent to the steps E8, E10, E12 and E16, the client parse unit 251 reads the next line (step E17).
[0116]
Next, the client parse unit 251 determines whether the line read in step E17 is a blank line (step E18). If it is determined that this step E18 is “NO” and that the line is not blank, the procedure returns to the step E3. If it is determined in step E18 that the line is blank, the next line is read and the character string "End" indicating the end of the lightweight data transfer protocol is confirmed (step E19). A series of processing flow shown ends.
[0117]
After the step E19, the programming language return value creation unit 255 reads data from the client header information creation unit 252 and the client parameter information creation unit 254, and sends the return value portion to the client non-recursive data expression library 220.
[0118]
In the above-described first embodiment, even when the structured data is expressed, the text document transmitted and received between the client and the server includes at most one level of hierarchy, and therefore includes multiple levels of hierarchy. Compared to the case where the class representing the complexity of the grammar is a context-free grammar in the case, it can be expressed by a regular grammar that can be interpreted faster. Therefore, the parsing can be performed at high speed. In addition, since it is possible to assume that the hierarchical structure has at most one level, it is possible to create the parsing program itself smaller than an XML parser that allows multiple levels.
[0119]
Next, an operation corresponding to FIG. 2 in the above-described first embodiment will be described using a specific example with reference to FIGS.
[0120]
FIG. 5 shows a lightweight data transfer protocol portion of data sent from the client to the server when registering data in the address book. An HTTP header is added to the actual transmission data. FIG. 6 shows a lightweight data transfer protocol portion returned from the server to the client.
[0121]
First, in the above-described step A-1, the client application 210 uses the data type of the programming language, and uses the host name and port number of the HTTP server, the service name corresponding to the server application 340, and the method name to be started in the server application 340. , And argument information to be passed when this method is activated, are sent to the client non-recursive data expression library 220. That is, in the illustrated example, the host name of the HTTP server is “distri.nwk.cl.nec.co.jp”, the port number is “80” used for HTTP, and the service corresponding to the server application 340 is provided. The name is “Addressbook”, and the method name activated in the server application 340 is “register”. These are included in the header information. Further, a structure having character string type data “Yasuyuki_BEPPU” represented by “sT” as argument information to be passed when this method is activated, and “block, town, city, preference, country, zipCode” as constituent elements. There are three types: body and character string type “04485600000”.
[0122]
In the next step A-2, the client non-recursive data representation library 220 converts the service name and the method name included in the header information and the following argument information among those received from the client application 210 into the client non-recursive data representation generation serializer. Send to 220. The service name is “Addressbook” corresponding to the server application 340, and the method name is “register” to be started in the server application 340. The argument information passed when this method is activated is a structure having character string type data “Yasuyuki_BEPPU” represented by “sT” and “block, town, city, preference, country, zipCode” as constituent elements. And a character string type “04485600000”.
[0123]
In the next step A-3, the client non-recursive data expression generation serializer 230 sets “Addressbook” as the service name in the data of the programming language received in step A-2 described above as the method name to be started in the server application 340. The “register” is further returned to the client non-recursive data expression library 220 with the lightweight data expression protocol created as argument information. The argument information has, as constituent elements, character string type data “Yasuyuki_BEPPU” represented by “sT” and “block, town, city, preference, country, zipCode” to be transmitted when this method is activated. From the structure and the character string type “04485600000”, a lightweight data expression protocol that is a part from “Head” to “End” shown in FIG. 5 is created.
[0124]
In the next step A-4, the client non-recursive data expression library 220 stores the host name “distri.nwk.cl.nec.co.jp” and the port number “80” received in step A-1 above, and The data according to the lightweight data transfer protocol received in step A-3 is sent to the HTTP client 240.
[0125]
In the next step A-5, before the lightweight data transfer protocol received in the step A-4, the HTTP client 240 checks the HTTP header from “POST” to “Content-length: xxx” shown in FIG. And a blank line, and send the result to the HTTP server 310 via the network 500.
[0126]
In the next step A-6, the HTTP server 310 looks at the “Content-type text / cdr” portion of the HTTP header and checks that the transmitted data is in the format of the lightweight data transfer protocol. The expression protocol part is sent to the server non-recursive data expression interpretation parser 320.
[0127]
In the next step A-7, the server non-recursive data expression interpretation parser 320 interprets the lightweight data transfer protocol part, and uses “Addressbook” as a service name corresponding to the server application 340 based on the header information and a method started in the server application 340. A character string type data "Yasuyuki_BEPPU" represented by "sT" from the argument information and "block, town, city, preference, country, zipCode" as structural elements are extracted from the argument information. , And “04485600000” which is a character string type.
[0128]
In the next step A-8, the server non-recursive data expression interpretation parser 320 sends the service name “Addressbook” corresponding to the server application 340 extracted from the header information, the method name “register” to be started in the server application 340, and the argument The information is sent to the server application management 330.
[0129]
In the next step A-9, the server application management 330 specifies the server application 340 to be activated from the service name “Addressbook” received in step A-8, and receives the server application 340 in step A-8. Then, the method receives the argument information and activates the method received in step A-8.
[0130]
The argument information includes character string type data “Yasuyuki_BEPPU”, a structure having “block, town, city, preference, country, ZipCode” as constituent elements, and “04485600000” in a character string type.
[0131]
In the next step A-10, the server application 340 performs processing using the argument received in step A-9, and returns a return value of the processing result to the server application management 330. Next, in step A-11, the server application management 330 sends “return value information” obtained by adding a true / false type, which is type information, to the return value received in step A-10, to the server non-recursive data expression generation serializer 350. I do.
[0132]
Next, in step A-12, the server non-recursive data expression generation serializer 350 converts the return value information received in step A-11 into the lightweight data transfer protocol shown in FIG. For example, the content of the lightweight data transfer protocol shown in FIG. 6 includes a reserved word indicating whether or not the method call “rPro” was normally performed from “Head”, which is the header part of the lightweight data representation protocol, to a blank line. "Normal" shown in FIG. 6 indicating that the operation has been normally performed is included. Similarly, the body part of the lightweight data expression protocol from “Body” to a blank line contains boolean value data “true” indicating that registration in the address book was successful.
[0133]
Next, in step A-13, the server non-recursive data expression generation serializer 350 returns the lightweight data transfer protocol created in step A-12 to the HTTP server 310. In the next step A-14, the HTTP server 310 adds an HTTP header before the lightweight data transfer protocol returned in step A-13 and sends it to the HTTP client 230 via the network 500.
[0134]
In the next step A-15, the HTTP client 230 looks at the HTTP header part and checks that the transmitted data is in the format of the lightweight data transfer protocol. The part is sent to the client non-recursive data expression interpretation parser 250. Next, in step A-16, the client non-recursive data expression interpretation parser 250 interprets the lightweight data transfer protocol part shown in FIG. 6 and extracts a boolean value “true” of return value information in a data format in a programming language. .
[0135]
Next, in step A-17, the client non-recursive data expression interpretation parser 250 returns the return value information extracted in step A-16 to the client non-recursive data expression library 220. In the last step A-18, the client non-recursive data representation library 220 returns "true" representing the return value information received in step A-17 to the client application 210.
[0136]
Next, a second embodiment of the present invention will be described in detail with reference to FIGS. FIG. 13 is an interface description using WSDL (Web Service Description Language).
[0137]
The difference between the second embodiment shown in FIG. 12 and the first embodiment shown in FIG. 1 is that the following is added in the configuration.
[0138]
The added configuration is the interface description language compiler 100, the protocol converter 400, the client-protocol converter network 600, the protocol converter-existing server network 700, and the existing server 710.
[0139]
The interface description language compiler 100 includes an interface description language interpretation unit 110, a data type correspondence definition unit 120, a serialized code creation unit 130, a conversion program creation unit 140, and a parser code creation unit 150. The protocol converter 400 includes a protocol conversion module 410 and an HTTP client / server 420.
[0140]
These components generally have the following functions.
[0141]
The interface description language interpreting means 110 receives an input by an interface description as shown in FIG. 13, reads the interface description language, and cuts out a data type expression part. The data type correspondence definition unit 120 receives the expression part of the data type from the interface description language interpretation unit, and returns the data type of the corresponding programming language.
[0142]
The serialization code creation unit 130 receives a list of data types used in the interface description language from the interface description language interpretation unit 110, and sends a code for serializing those data types to the client non-recursive data expression generation serializer 230. A recursive data expression generation serializer is output to the server non-recursive data expression generation serializer 350 as a server non-recursive data expression generation serializer.
[0143]
At the time of this output, the serialization code creation means 130 outputs only the serialization code of the data type of the argument required for the serialization on the client side as a client non-recursive data expression generation serializer, and the data of the return value required for the server side serialization Outputs the code that serializes the type as a server non-recursive data representation generation serializer.
[0144]
The conversion program creating means 140 receives a list of data types used in the interface description language from the interface description language interpreting means 110, and converts between the data types used in the client 200 and the formats used in the existing server 710. The program is output to the protocol conversion module 410 as a protocol conversion module.
[0145]
The parser code creating means 150 receives a list of data types used in the interface description language from the interface description language interpreting means 110 and sends a code for parsing those data types to the client non-recursive data expression interpretation parser 250. It outputs to the server non-recursive data expression interpretation parser 320 as a recursive data expression interpretation parser, respectively.
[0146]
At the time of this output, the parser code creation means 150 outputs only the data type parsing code of the return value required for parsing on the client side as a client non-recursive data expression interpretation parser, and outputs the data of the argument required for parsing on the server side. Output only the code that parses the type as a server non-recursive data representation interpretation parser.
[0147]
When the server having the application to be started is the existing server 710, the HTTP client 230 sends the HTTP client / server 420 via the client-to-protocol converter network 600 by adding an HTTP header to the lightweight data transfer protocol format. I do.
[0148]
The HTTP client / server 420 receives the lightweight data representation protocol with the HTTP header from the HTTP client 320 via the client-to-protocol converter network 600. The HTTP client / server 420 calls the protocol conversion module 410 to convert the received protocol into a format that can be interpreted by the existing server, and then converts the received protocol to the existing server 710 via the protocol converter-existing server network 700. The data is transferred in a format that can be interpreted by the server 710.
[0149]
The existing server 710 receives data in a format used by the existing server 710 from the HTTP client / server 420 via the protocol converter-existing server network 700, executes an application in the existing server 710, and executes the protocol. The return value is returned to the HTTP client / server 420 via the converter-existing server network 700 in the format used by the existing server 710. The client-to-protocol converter network 600 is a normal TCP / IP network. The protocol converter-existing server network 700 is a normal TCP / IP network.
[0150]
In the above-described second embodiment, the interface description language compiler uses the interface description language input to generate a minimum required client non-recursive data expression generation serializer for starting a server application, a client non-recursive data expression interpretation parser, a server Since the non-recursive data expression interpretation parser and the server non-recursive data expression generation serializer are generated, the program size used by the client and the server can be reduced. Therefore, it is particularly effective when the above-described function is incorporated in a device having a limited disk capacity, such as a device having no hard disk drive. Also, the interface description language compiler generates a protocol conversion module from the input of the existing server's interface description language, so that the client using the reduced data representation protocol for the data transfer format and the service of the existing server can be used. Cooperation is possible.
[0151]
Next, the operation in the second embodiment will be specifically described with reference to FIGS.
[0152]
The interface description language interpreting unit 110 receives an input based on the WSDL interface description shown in FIG. 13 and extracts the used data type information without duplication. Specifically, “xsd: complexType” on line 11 in FIG. 13, “xsd: string” on line 12 and “xsd: boolean” on line 26 are extracted. At this time, the same expressions as “xsd: string” and the like appearing in other lines are not extracted.
[0153]
Next, the interface description language interpreting means 110 sends the extracted “xsd: complexType”, “xsd: string”, and “xsd: boolean” to the data type correspondence definition means 120. The data type correspondence definition means 120 determines that “xsd: complexType” is structural data, “xsd: string” is a character string type, and “xsd: boolean” is a boolean value type, and determines the result. It is sent to the interface description language interpreting means 110. The interface description language interpreting means 110 sends to the serialization code creating means 130 information that the structured type data and the character string type data are arguments and the boolean type is a return value.
[0154]
Next, on the one hand, the serialization code creation means 130 generates a serialization code of the structural type data and the character string type data, which are the arguments, and outputs it to the client non-recursive data expression generation serializer 230 as a client non-recursive data expression generation serializer. On the other hand, it generates a code for serializing the boolean data and outputs it to the server non-recursive data expression generation serializer 350 as a server non-recursive data expression generation serializer.
[0155]
Next, the interface description language interpreting means 110 sends to the conversion program creating means 140 information that the structured data and the character string data are arguments and the boolean data is a return value. The conversion program generation means 140 generates a mutual conversion program between the format used by the client and the format used by the existing server in the structural data, the character string data, and the boolean data, and sends the protocol conversion module 410 Output as a conversion module.
[0156]
Next, the interface description language interpreting means 110 sends information to the parser code creating means 150 that the structural type data and the character string type data are arguments and the boolean type data is a return value. The parser code creating means 150 generates a parsing code of the structured data and the character string data, which are the arguments, and outputs the generated code to the server non-recursive data expression interpretation parser 320 as a server non-recursive data expression interpretation parser. Then, a parsing code for the boolean type data is generated and output to the client non-recursive data expression interpretation parser 250 as a client non-recursive data expression interpretation parser.
[0157]
In the case of the second embodiment described above, the system generates codes only for serialization, parsing, and protocol conversion modules of only the types defined in the interface description language, so that array type data, character string type data, Further, it is not necessary to store codes of basic type data not used this time other than the truth type data, for example, integer value type data in the client, the server, and the protocol converter, thereby reducing a necessary disk area. For serialization or parsing, the relationship between the argument and the return value is also checked, and only the code for the serialization of the argument and the return value is parsed on the client side, and only the code for the argument parse and the return value is serialized on the server side. It is possible to reduce the required amount of code by arranging it.
[0158]
【The invention's effect】
A first effect is that a text document passed between a client and a server can be converted between a data type of a programming language and a text document at a high speed.
[0159]
The reason is that even when expressing structured data, at most one hierarchy is included, so when a multi-level hierarchy is included, the class representing the complexity of the grammar becomes a grammar context-free grammar. This is because it can be expressed by a regular grammar that can be interpreted more quickly.
[0160]
The second effect is that, since the size of a program for interpreting a text document passed between a client and a server can be reduced, it can be easily operated on a terminal with a small resource such as not having a hard disk. .
[0161]
The reason is that it is possible to assume that the text document passed between the client and the server has a hierarchical structure of at most one level. Therefore, the parsing program itself is compared with an XML parser that allows a multi-level hierarchy. This is because it can be made smaller.
[0162]
A third effect is that service cooperation between a client using the lightweight data representation protocol as a data transfer format and an existing server can be performed.
[0163]
The reason is that a module for converting between the lightweight data expression protocol and the existing protocol, that is, a protocol conversion module, can be generated from the input in the interface description language of the existing server.
[0164]
A fourth effect is that a program of a part for converting between a lightweight data expression protocol and a data format of a programming language in a client and a server can be reduced in size, and the disk capacity is limited without having a hard disk drive. This means that the disk capacity of the device can be used effectively.
[0165]
The reason is that from the input by the server-side interface description language, the minimum required client non-recursive data expression generation serializer for starting the server application, the client non-recursive data expression interpretation parser, the server non-recursive data expression interpretation parser, This is because a server non-recursive data expression generation serializer can be generated.
[Brief description of the drawings]
FIG. 1 is a diagram showing a block configuration of a first embodiment according to the present invention.
FIG. 2 is a diagram showing a sequence operation corresponding to the block configuration of FIG. 1;
FIG. 3 is a diagram showing a method format of a server application used in the embodiment shown in FIG. 1;
FIG. 4 is a diagram showing a processing flow of a client serialization unit in the embodiment shown in FIG. 1;
FIG. 5 is a diagram showing information on a memory of a client structure type array information table creating unit and a client non-recursive data expression document creating unit after a processing flow of a client serializing unit shown in FIG. 1;
FIG. 6 is a diagram showing a lightweight data representation protocol used in the embodiment shown in FIG. 1;
FIG. 7 is a diagram showing a processing flow in a server non-recursive data expression interpretation parser used in the embodiment shown in FIG. 1;
FIG. 8 is a diagram showing a processing flow in a server non-recursive data expression generation serializer used in the embodiment shown in FIG. 1;
FIG. 9 is a diagram showing a processing flow in a client non-recursive data expression interpretation parser used in the embodiment shown in FIG. 1;
FIG. 10 is a diagram showing a lightweight data representation protocol sent from a client to a server in the embodiment shown in FIG. 1;
FIG. 11 is a diagram showing a lightweight data representation protocol sent from a server to a client in the embodiment shown in FIG. 1;
FIG. 12 is a diagram illustrating a block configuration according to a second embodiment of the present invention.
FIG. 13 is a description example in an interface description language used in the embodiment shown in FIG. 12;
FIG. 14 is a diagram showing a block structure of a conventional SOAP.
FIG. 15 is a diagram showing a block structure of a conventional IDL compiler.
[Explanation of symbols]
100 Interface description language compiler
110 Interface description language interpreter
120 Data type correspondence definition means
130 Serialization code creation means
140 Conversion program creation means
150 Parser code creation means
200 clients
210 Client Application
220 Client library for non-recursive data representation
230 Client non-recursive data representation generation serializer
231 Client serialization unit
232 Client structure type array information table creation means
233 Client non-recursive data expression document creation means
240 HTTP client
250 Client non-recursive data representation parser
251 Client Perspective
252 Client header information creation means
253 Client ID pointer table
254 Client parameter information creation means
255 programming language return value creation unit
300 servers
310 HTTP server
320 Server non-recursive data expression interpretation parser
321 Server Perspective
322 server header information creation means
323 server ID pointer table
324 Server parameter information creation means
325 Server application startup information creation unit
330 Server Application Management
340 server application
350 Server non-recursive data representation generation serializer
351 Server serialization section
352 Server structure type array information table creation means
353 Server non-recursive data expression document creation means
400 protocol converter
410 Protocol conversion module
420 HTTP Client / Server
500 networks
600 Client-to-protocol converter network
700 Protocol converter-existing server network
710 Existing server

Claims (15)

データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携システムにおいて、
プログラミング言語の構造型データ及び基本型データを、送付先で逆変換可能な高々一段の階層を持つテキスト文書に作成するクライアント非再帰データ表現生成シリアライザと、
前記クライアント非再帰データ表現生成シリアライザで作成された高々一段の階層を持つテキスト文書を解釈して、サーバアプリケーション起動に必要な情報を取り出すサーバ非再帰データ表現解釈パーサと、
サーバアプリケーションを起動した戻り値である構造型データ及び基本型データを、高々一段の階層でかつクライアント側で逆変換可能なテキスト文書に作成するサーバ非再帰データ表現生成シリアライザと、
高々一段の階層を持つテキスト文書を入力して、サーバアプリケーションからの戻り値である構造を持ったパラメータを作成するクライアント非再帰データ表現解釈パーサとを有することにより、
クライアントアプリケーションとサーバアプリケーションとの連携を可能とすることを特徴とするサービス連携システム。
In a service cooperation system between a client and a server using a data transfer protocol,
A client non-recursive data expression generation serializer that creates structural type data and basic type data of a programming language into a text document having at most one level of hierarchy that can be inversely converted at a destination;
A server non-recursive data expression interpretation parser that interprets a text document having at most one level of hierarchy created by the client non-recursive data expression generation serializer and extracts information necessary for starting a server application;
A server non-recursive data expression generation serializer that creates the structured type data and the basic type data, which are the return values that have started the server application, in a text document that can be inversely converted on the client side at the highest level,
By having a client non-recursive data representation parser that inputs a text document with at most one level of hierarchy and creates a parameter with a structure that is the return value from the server application,
A service cooperation system which enables cooperation between a client application and a server application.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携システムにおいて、
前記クライアントは、
プログラミング言語の構造型データ及び基本型データを入力するクライアントシリアライズ部と、
前記クライアントシリアライズ部から前記構造型データを入力して、構造型データの階層を示すテーブルを作成するクライアント構造型配列情報テーブル作成手段と、
前記クライアントシリアライズ部から基本型データ、及び前記クライアント構造型配列情報テーブル作成手段から前記テーブル、それぞれを受けて入力とし、この入力から、高々一段の階層でかつ送付先で逆変換可能なテキスト文書を作成するクライアント非再帰データ表現文書作成手段とを備え、かつ
前記サーバは、
高々一段の階層を持つテキスト文書を入力するサーバパース部と、
前記サーバパース部からテキスト文書の区切り文字までのヘッダー部分を入力して、起動するサーバアプリケーションの名前及び関数名の部分を作成するサーバヘッダ情報作成手段と、
前記サーバパース部からテキスト文書の主要部を入力して、階層関係のリンク情報を一時的に保持するサーバIDポインタテーブルを用いながら、サーバアプリケーションを起動に用いる構造を持ったパラメータを作成するサーバパラメータ情報作成手段と、
前記サーバヘッダ情報作成手段からサーバアプリケーションの名前及び関数名を、並びに前記サーバパラメータ情報作成手段からサーバアプリケーション起動に用いる構造を持ったパラメータを、それぞれ入力して、サーバアプリケーション起動に必要な情報にまとめるサーバアプリケーション起動情報作成部とを備えて、
クライアントアプリケーションとサーバアプリケーションとの連携を可能とすることを特徴とするサービス連携システム。
In a service cooperation system between a client and a server using a data transfer protocol,
The client,
A client serialization unit for inputting structural type data and basic type data of a programming language;
Client structured type array information table creating means for inputting the structured data from the client serializing unit and creating a table indicating the hierarchy of the structured data,
Receiving the basic type data from the client serializing unit and the table from the client structured type array information table creating means as input, and from this input, a text document that can be inversely converted at the highest hierarchy and at the destination is sent. Client non-recursive data representation document creating means for creating, and said server,
A server parsing section for inputting a text document having at most one level of hierarchy,
Server header information creating means for creating a name of a server application to be started and a function name by inputting a header part from the server parse part to a delimiter of a text document
A server parameter for inputting a main part of a text document from the server parse section and creating a parameter having a structure for starting a server application while using a server ID pointer table for temporarily holding hierarchical link information. Information creation means,
The name of the server application and the name of the function are input from the server header information generating means, and the parameters having a structure used for starting the server application are input from the server parameter information generating means, and are collected into information necessary for starting the server application. A server application start information creation unit,
A service cooperation system which enables cooperation between a client application and a server application.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携システムにおいて、
前記サーバは、
サーバアプリケーションを起動した戻り値である構造型データ及び基本型データを入力するサーバシリアライズ部と、
前記サーバシリアライズ部から前記構造型データを入力して構造型データの階層を示すテーブルを作成するサーバ構造型配列情報テーブル作成手段と、
前記サーバシリアライズ部から基本型データ、及び前記サーバ構造型配列情報テーブル作成手段から前記テーブル、それぞれを入力して、高々一段の階層でかつ送付先で逆変換可能なテキスト文書を作成するサーバ非再帰データ表現文書作成手段とを備え、かつ
前記クライアントは、
高々一段の階層を持つテキスト文書を入力するクライアントパース部と、
前記クライアントパース部からテキスト文書の区切り文字までのヘッダー部分を入力して、サーバアプリケーションの起動が正常に行われたかどうかを表す情報を作成するクライアントヘッダ情報作成手段と、
前記クライアントパース部からテキスト文書の主要部を入力して、階層関係のリンク情報を一時的に保持するクライアントIDポインタテーブルを用いながらサーバアプリケーションからの戻り値である構造を持ったパラメータを作成するクライアントパラメータ情報作成手段と、
前記クライアントヘッダ情報作成手段から、サーバアプリケーションの起動が正常に行われたかどうかを表す情報、及び前記クライアントパラメータ情報作成手段から、サーバアプリケーションからの戻り値である構造を持ったパラメータ、それぞれを入力として受け付け、クライアントアプリケーションに返す情報をまとめるプログラミング言語戻り値作成部とを備えて、
クライアントアプリケーションとサーバアプリケーションとの連携を可能とすることを特徴とするサービス連携システム。
In a service cooperation system between a client and a server using a data transfer protocol,
The server comprises:
A server serialization unit for inputting structural type data and basic type data which are return values that have started the server application,
Server structured type array information table creating means for inputting the structured type data from the server serializing unit and creating a table indicating the hierarchy of the structured type data,
A server non-recursive that inputs a basic type data from the server serializing unit and the table from the server structure type array information table creating unit to create a text document that can be reverse-converted at the highest hierarchical level and at the destination. Data representation document creation means, and the client,
A client parsing section for inputting a text document having at most one level of hierarchy,
Client header information creating means for inputting a header portion from the client parse part to a delimiter of a text document and creating information indicating whether or not the server application has been normally started,
A client that inputs a main part of a text document from the client parse unit and creates a parameter having a structure that is a return value from a server application while using a client ID pointer table that temporarily holds hierarchical link information. Parameter information creation means,
From the client header information creating means, information indicating whether the server application has been started normally, and from the client parameter information creating means, a parameter having a structure that is a return value from the server application, A programming language return value creation unit that collects information to be received and returned to the client application,
A service cooperation system which enables cooperation between a client application and a server application.
請求項1から請求項3までのうちの一つにおいて、
前記サーバ非再帰データ表現解釈パーサは、
高々一段の階層を持つテキスト文書を入力とするサーバパース部と、
前記サーバパース部からテキスト文書の区切り文字までのヘッダー部分を入力とし起動するサーバアプリケーションの名前及び関数名部分を作成するサーバヘッダ情報作成手段と、
前記サーバパース部からテキスト文書の主要部を入力とし階層関係のリンク情報を一時的に保持するサーバIDポインタテーブルを用いながらサーバアプリケーションを起動に用いる構造を持ったパラメータを作成するサーバパラメータ情報作成手段と、
前記サーバヘッダ情報作成手段から受けるサーバアプリケーションの名前および関数名、前記サーバパラメータ情報作成手段から受けるサーバアプリケーション起動に用いる構造を持ったパラメータ、それぞれを入力としサーバアプリケーション起動に必要な情報をまとめるサーバアプリケーション起動情報作成部と
を有することを特徴とするサービス連携システム。
In one of claims 1 to 3,
The server non-recursive data representation parser,
A server parsing unit that inputs a text document having at most one level of hierarchy,
Server header information creation means for creating a name and a function name part of a server application to be started by inputting a header part from the server parse part to a delimiter of a text document,
Server parameter information creating means for creating a parameter having a structure for starting a server application while using a server ID pointer table for temporarily storing link information of hierarchical relations by inputting a main part of a text document from the server parse section When,
A server application that receives as input the name and function name of the server application received from the server header information creating means and parameters having a structure used for starting the server application received from the server parameter information creating means, and collects information necessary for starting the server application. A service cooperation system comprising an activation information creation unit.
請求項1から請求項3までのうちの一つにおいて、
前記クライアント非再帰データ表現解釈パーサは、
高々一段の階層を持つテキスト文書を入力するクライアントパース部と、
前記クライアントパース部からテキスト文書の区切り文字までのヘッダー部分を入力して、サーバアプリケーションの起動が正常に行われたかどうかを表す情報を作成するクライアントヘッダ情報作成手段と、
前記クライアントパース部からテキスト文書の主要部を入力して、階層関係のリンク情報を一時的に保持するクライアントIDポインタテーブルを用いながらサーバアプリケーションからの戻り値である構造を持ったパラメータを作成するクライアントパラメータ情報作成手段と、
前記クライアントヘッダ情報作成手段からサーバアプリケーションの起動が正常に行われたかどうかを表す情報、及び前記クライアントパラメータ情報作成手段からサーバアプリケーションからの戻り値である構造を持ったパラメータ、それぞれを入力して、クライアントアプリケーションに返す情報をまとめるプログラミング言語戻り値作成部と
を有することを特徴とするサービス連携システム。
In one of claims 1 to 3,
The client non-recursive data representation parser,
A client parsing section for inputting a text document having at most one level of hierarchy,
Client header information creating means for inputting a header portion from the client parse part to a delimiter of a text document and creating information indicating whether or not the server application has been normally started,
A client that inputs a main part of a text document from the client parse unit and creates a parameter having a structure that is a return value from a server application while using a client ID pointer table that temporarily holds hierarchical link information. Parameter information creation means,
Information indicating whether or not the server application has been normally started from the client header information creating means, and a parameter having a structure that is a return value from the server application from the client parameter information creating means, respectively, A service cooperation system, comprising: a programming language return value creation unit that summarizes information to be returned to a client application.
請求項1から請求項3までのうちの一つにおいて、
前記クライアント非再帰データ表現生成シリアライザは、
プログラミング言語の構造型データ及び基本型データを入力するクライアントシリアライズ部と、
前記クライアントシリアライズ部から前記構造型データを入力して、構造型データの階層を示すテーブルを作成するクライアント構造型配列情報テーブル作成手段と、
前記クライアントシリアライズ部から基本型データ、及び前記クライアント構造型配列情報テーブル作成手段から前記テーブル、それぞれを入力して、高々一段の階層でかつ送付先で逆変換可能なテキスト文書を作成するクライアント非再帰データ表現文書作成手段と
を有することを特徴とするサービス連携システム。
In one of claims 1 to 3,
The client non-recursive data representation generation serializer,
A client serialization unit for inputting structural type data and basic type data of a programming language;
Client structured type array information table creating means for inputting the structured data from the client serializing unit and creating a table indicating the hierarchy of the structured data,
A client non-recursive which inputs a basic type data from the client serialization unit and the table from the client structure type array information table creating means to create a text document which can be inversely converted at a destination at the highest hierarchical level. A service cooperation system comprising a data expression document creating means.
請求項1から請求項3までのうちの一つにおいて、
前記サーバ非再帰データ表現生成シリアライザは、
サーバアプリケーションを起動した戻り値である構造型データ及び基本型データを入力するサーバシリアライズ部と、
前記サーバシリアライズ部から前記構造型データを入力して構造型データの階層を示すテーブルを作成するサーバ構造型配列情報テーブル作成手段と、
前記サーバシリアライズ部から基本型データ、及び前記サーバ構造型配列情報テーブル作成手段から前記テーブル、それぞれを入力して、高々一段の階層でかつ送付先で逆変換可能なテキスト文書を作成するサーバ非再帰データ表現文書作成手段と
を有することを特徴とするサービス連携システム。
In one of claims 1 to 3,
The server non-recursive data representation generation serializer,
A server serialization unit for inputting structural type data and basic type data which are return values that have started the server application,
Server structured type array information table creating means for inputting the structured type data from the server serializing unit and creating a table indicating the hierarchy of the structured type data,
A server non-recursive that inputs a basic type data from the server serializing unit and the table from the server structure type array information table creating unit and creates a text document that can be reverse-converted at the highest hierarchy and at the destination. A service cooperation system comprising a data expression document creating means.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記クライアントは、プログラミング言語の構造型データ及び基本型データを入力として受け付けた際、
前記構造型データを、構造型データの階層を示すテーブルに作成し、かつ
前記基本型データ及び前記テーブルそれぞれを高々一段の階層でかつ送付先で逆変換可能なテキスト文書に作成して前記サーバに送付し、かつ
前記サーバは、高々一段の階層を持つテキスト文書を前記クライアントから入力した際、
前記テキスト文書の区切り文字までのヘッダー部分から、起動するサーバアプリケーションの名前及び関数名部分を作成し
前記テキスト文書の主要部から、階層関係のリンク情報を一時的に保持するサーバIDポインタテーブルを用いながらサーバアプリケーション起動に用いる構造を持ったパラメータを作成し、かつ
前記サーバアプリケーションの名前及び関数名、並びに前記サーバアプリケーション起動に用いる構造を持ったパラメータそれぞれから、サーバアプリケーション起動に必要な情報をまとめる
ことを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
When the client receives as input structural type data and basic type data of a programming language,
The structured data is created in a table indicating the hierarchy of the structured data, and the basic data and the table are each created in a text document that can be reverse-converted at the highest hierarchy and at the destination and transmitted to the server. Sending, and the server, when input from the client a text document having at most one level of hierarchy,
Using a server ID pointer table that creates a name of a server application to be started and a function name portion from a header portion up to a delimiter of the text document and temporarily stores link information of a hierarchical relationship from a main portion of the text document. While creating a parameter having a structure used for starting the server application, and compiling information necessary for starting the server application from each of the name and function name of the server application and the parameter having a structure used for starting the server application Service cooperation method characterized by the following.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記サーバは、サーバアプリケーションを起動した戻り値である構造型データ及び基本型データを入力として受け付けた際、
前記構造型データから構造型データの階層を示すテーブルを作成し、かつ
前記基本型データ及び前記テーブルそれぞれから高々一段の階層でかつ送付先で逆変換可能なテキスト文書を作成して前記クライアントに送付し、
前記クライアントは、高々一段の階層を持つテキスト文書の入力を前記サーバから受け付けた際、
前記テキスト文書の区切り文字までのヘッダー部分からサーバアプリケーションの起動が正常に行われたかどうかを表す情報を作成し、
前記テキスト文書の主要部から、階層関係のリンク情報を一時的に保持するクライアントIDポインタテーブルを用いながらサーバアプリケーションからの戻り値である構造を持ったパラメータを作成し、かつ
前記サーバアプリケーションの起動が正常に行われたかどうかを表す情報、及び前記サーバアプリケーションからの戻り値である構造を持ったパラメータ、それぞれから、クライアントアプリケーションに返す情報をまとめる
ことを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
When the server receives as input the structured type data and the basic type data that are the return values that have started the server application,
Create a table indicating the hierarchy of the structured data from the structured data, and create a text document that can be inverted at the destination at the highest hierarchy and from the respective basic data and the table and send it to the client. And
When the client receives an input of a text document having at most one level from the server,
Create information indicating whether the server application was successfully started from the header portion up to the delimiter of the text document,
From the main part of the text document, a parameter having a structure that is a return value from the server application is created using a client ID pointer table that temporarily holds link information of a hierarchical relationship, and the server application is activated. A service coordination method comprising: collecting information to be returned to a client application from information indicating whether or not the process has been performed normally and parameters having a structure that is a return value from the server application.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記サーバは、サーバアプリケーション起動に必要な情報を、
高々一段の階層を持つテキスト文書の入力を受け付けた際に、
前記テキスト文書の区切り文字までのヘッダー部分から、起動するサーバアプリケーションの名前及び関数名部分を作成し、かつ
前記テキスト文書の主要部から階層関係のリンク情報を一時的に保持するサーバIDポインタテーブルを用いながらサーバアプリケーション起動に用いる構造を持ったパラメータを作成して、
作成したそれぞれからまとめることを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
The server stores information necessary for starting a server application,
When a text document with at most one level of hierarchy is received,
A server ID pointer table for creating a name of a server application to be started and a function name portion from a header portion up to a delimiter of the text document and temporarily storing link information of a hierarchical relationship from a main portion of the text document. Create a parameter with the structure used to start the server application while using it,
A service coordination method characterized by combining from each created one.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記クライアントは、クライアントアプリケーションに返送する情報を、
高々一段の階層を持つテキスト文書の入力を受け付けた際に、
前記テキスト文書の区切り文字までのヘッダー部分から、サーバアプリケーションの起動が正常に行われたかどうかを表す情報を作成し、かつ
前記テキスト文書の主要部から、階層関係のリンク情報を一時的に保持するクライアントIDポインタテーブルを用いながらサーバアプリケーションからの戻り値である構造を持ったパラメータを作成して、
作成したそれぞれからまとめることを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
The client sends information to be sent back to the client application,
When a text document with at most one level of hierarchy is received,
From the header part up to the delimiter of the text document, create information indicating whether or not the server application has been normally started, and temporarily hold hierarchical link information from the main part of the text document. Create a parameter with a structure that is the return value from the server application using the client ID pointer table,
A service coordination method characterized by combining from each created one.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記クライアントは、前記サーバに送付するテキスト文書を、プログラミング言語の構造型データ及び基本型データを入力として受け付けた際に、前記構造型データから、構造型データの階層を示すテーブルを作成し、かつ前記基本型データ及び前記テーブルそれぞれから、高々一段の階層でかつ送付先で逆変換可能に、作成する
ことを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
The client, when receiving a text document to be sent to the server as input of structured type data and basic type data of a programming language, creates a table indicating a hierarchy of the structured type data from the structured type data, and A service cooperation method, wherein the service is created from each of the basic type data and the table so as to be able to perform reverse conversion at the highest hierarchy and at the destination.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携方法において、
前記サーバは、前記クライアントへ送付するテキスト文書を、サーバアプリケーションを起動した戻り値である構造型データ及び基本型データを入力として受け付けた際に、前記構造型データから、構造型データの階層を示すテーブルを作成し、かつ前記基本型データ及び前記テーブルそれぞれから、高々一段の階層でかつ送付先で逆変換可能に作成する
ことを特徴とするサービス連携方法。
In a service cooperation method between a client and a server using a data transfer protocol,
When the server receives the text document to be sent to the client as input of the structured data and the basic data that are the return values of starting the server application, the server indicates the hierarchy of the structured data from the structured data. A service cooperation method, wherein a table is created, and the table is created from the basic type data and the table so as to be able to perform reverse conversion at the highest hierarchy and at the destination.
データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携システムにおいて、
インタフェース記述言語による既存サーバのインタフェース記述言語から、クライアントにおいてサーバアプリケーションの起動に必要なパラメータのみをテキスト文書に変換するクライアント非再帰データ表現生成シリアライザと、
サーバにおいて前記クライアント非再帰データ表現生成シリアライザで変換されたテキスト文書を逆変換しサーバアプリケーションの起動に必要なパラメータを取り出すサーバ非再帰データ表現解釈パーサと、
サーバアプリケーションからのプログラミング言語での戻り値をテキスト文書にシリアライズするサーバ非再帰データ表現生成シリアライザと、
前記サーバ非再帰データ表現生成シリアライザでテキスト文書に変換された戻り値をプログラミング言語でのデータ型に戻すクライアント非再帰データ表現解釈パーサと、
前記クライアント非再帰データ表現生成シリアライザでテキスト文書に変換されたパラメータを既存サーバの起動するのに必要な形に変換するプロトコル変換モジュールを生成するインタフェース記述言語コンパイラと
を備えることを特徴とするサービス連携システム。
In a service cooperation system between a client and a server using a data transfer protocol,
A client non-recursive data expression generation serializer that converts only parameters necessary for starting a server application in a client from a interface description language of an existing server using an interface description language into a text document;
A server non-recursive data expression interpretation parser that reversely converts a text document converted by the client non-recursive data expression generation serializer in a server and extracts parameters necessary for starting a server application;
A server non-recursive data representation generation serializer that serializes the return value in the programming language from the server application into a text document,
A client non-recursive data representation interpretation parser that returns a return value converted to a text document by the server non-recursive data representation generation serializer to a data type in a programming language;
Service cooperation comprising: an interface description language compiler that generates a protocol conversion module that converts a parameter converted into a text document by the client non-recursive data expression generation serializer into a form required for starting an existing server. system.
請求項14において、前記インタフェース記述言語コンパイラは、
インタフェース記述言語による既存サーバのインタフェース記述言語を入力してそれを解釈するインタフェース記述言語解釈手段と、
前記インタフェース記述言語解釈手段で解釈した内容とデータ型との対応関係をとるデータ型対応関係定義手段と、
データ型が対応つけられたインタフェース記述言語解釈手段からデータ型情報を受け取り、クライアントにおいてサーバアプリケーションの起動に必要なパラメータのみをテキスト文書に変換するクライアント非再帰データ表現生成シリアライザと、
サーバアプリケーションからのプログラミング言語での戻り値をテキスト文書にシリアライズするサーバ非再帰データ表現生成シリアライザを生成するシリアライズコード生成手段と、
サーバにおいて前記クライアント非再帰データ表現生成シリアライザで変換されたテキスト文書を逆変換しサーバアプリケーションの起動に必要なパラメータを取り出すサーバ非再帰データ表現解釈パーサのコードを作成するパーサコード作成手段と、
前記サーバ非再帰データ表現生成シリアライザでテキスト文書に変換された戻り値をプログラミング言語でのデータ型に戻すクライアント非再帰データ表現解釈パーサコードを生成するパーサコード作成手段と、
前記クライアント非再帰データ表現生成シリアライザでテキスト文書に変換されたパラメータを既存サーバの起動に必要な形式に変換するプロトコル変換モジュールを生成する変換プログラム作成手段と
を有することを特徴とするサービス連携システム。
15. The interface description language compiler according to claim 14,
An interface description language interpreting means for inputting and interpreting an interface description language of an existing server in an interface description language;
Data type correspondence definition means for taking the correspondence between the data type and the content interpreted by the interface description language interpretation means;
A client non-recursive data expression generation serializer that receives data type information from an interface description language interpreter associated with a data type and converts only parameters necessary for starting a server application in a client into a text document;
Serialization code generation means for generating a server non-recursive data representation generation serializer for serializing a return value in a programming language from a server application into a text document;
Parser code creating means for creating a code of a server non-recursive data expression interpretation parser which reversely converts a text document converted by the client non-recursive data expression generation serializer in a server and extracts parameters necessary for starting a server application;
Parser code generating means for generating a client non-recursive data expression interpretation parser code for returning a return value converted to a text document by the server non-recursive data expression generation serializer to a data type in a programming language;
A service coordinating system comprising: a conversion program creating unit that creates a protocol conversion module that converts a parameter converted into a text document by the client non-recursive data expression generation serializer into a format required for starting an existing server.
JP2003055141A 2003-03-03 2003-03-03 Service cooperation system and service cooperation method between client and server using data transfer protocol Withdrawn JP2004265164A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003055141A JP2004265164A (en) 2003-03-03 2003-03-03 Service cooperation system and service cooperation method between client and server using data transfer protocol

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003055141A JP2004265164A (en) 2003-03-03 2003-03-03 Service cooperation system and service cooperation method between client and server using data transfer protocol

Publications (1)

Publication Number Publication Date
JP2004265164A true JP2004265164A (en) 2004-09-24

Family

ID=33119231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003055141A Withdrawn JP2004265164A (en) 2003-03-03 2003-03-03 Service cooperation system and service cooperation method between client and server using data transfer protocol

Country Status (1)

Country Link
JP (1) JP2004265164A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080224A (en) * 2005-09-16 2007-03-29 Ricoh Co Ltd Data processing system, its data management device, program and recording medium
WO2008151016A2 (en) * 2007-06-01 2008-12-11 Microsoft Corporation Transporting table valued parameter over tabular data stream protocol
CN112822072A (en) * 2020-12-31 2021-05-18 鲸灵科技股份有限公司 TCP-based two-way communication protocol for lightweight computing task
JP2022001992A (en) * 2020-06-19 2022-01-06 株式会社オービック Data processing device, data processing method, and data processing program

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080224A (en) * 2005-09-16 2007-03-29 Ricoh Co Ltd Data processing system, its data management device, program and recording medium
JP4681998B2 (en) * 2005-09-16 2011-05-11 株式会社リコー Data processing system, data management device, program, and recording medium
WO2008151016A2 (en) * 2007-06-01 2008-12-11 Microsoft Corporation Transporting table valued parameter over tabular data stream protocol
WO2008151016A3 (en) * 2007-06-01 2009-03-05 Microsoft Corp Transporting table valued parameter over tabular data stream protocol
JP2022001992A (en) * 2020-06-19 2022-01-06 株式会社オービック Data processing device, data processing method, and data processing program
JP7406461B2 (en) 2020-06-19 2023-12-27 株式会社オービック Data processing device, data processing method, and data processing program
CN112822072A (en) * 2020-12-31 2021-05-18 鲸灵科技股份有限公司 TCP-based two-way communication protocol for lightweight computing task

Similar Documents

Publication Publication Date Title
CA2246948C (en) Method and means for encoding storing and retrieving hierarchical data processing information for a computer system
Wielemaker et al. SWI-Prolog and the web
US5778223A (en) Dictionary for encoding and retrieving hierarchical data processing information for a computer system
KR100583517B1 (en) System and method of mapping between software objects and structured language element based documents
US7962925B2 (en) System and method for XML data binding
Zhang et al. WS-Net: a Petri-net based specification model for Web services
US7383255B2 (en) Common query runtime system and application programming interface
US7934252B2 (en) Filtering technique for processing security measures in web service messages
US20020099738A1 (en) Automated web access for back-end enterprise systems
US20060230432A1 (en) Policy algebra and compatibility model
US20030014733A1 (en) System and methods for providing a declarative syntax for specifying SOAP-based web services
US7559052B2 (en) Meta-model for associating multiple physical representations of logically equivalent entities in messaging and other applications
US20060149746A1 (en) Web application communication protocol
EP1390861A2 (en) Service provision system and method
JP2005018775A (en) Distributed processing method and distributed processing system
EP1435047A2 (en) Method and apparatus for intelligent data assimilation
AU2002258640A1 (en) Method and apparatus for intelligent data assimilation
JP2001502823A (en) Method and apparatus for transporting data structures defined by an interface definition language between heterogeneous systems
BRPI0619763B1 (en) system and method for triggered optimization of web services communication history
JP2000515281A (en) Method and apparatus for describing interfaces, operations and data types defined by an interface definition language
CA2255133A1 (en) Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US8250587B2 (en) Non-persistent and persistent information setting method and system for inter-process communication
US5687365A (en) System and method for creating a data dictionary for encoding, storing, and retrieving hierarchical data processing information for a computer system
JP2004265164A (en) Service cooperation system and service cooperation method between client and server using data transfer protocol
JP2002342078A (en) Program development system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041216

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071010

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20071108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20071108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071210

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20071214

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080201

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20080604

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20090508

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100419