電子情報通信学会 2005年総合大会 プリミティブWebサービスの 入出力データに関する一考察 2005年3月21日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 1 1.はじめに • Webサービスとは – データアクセスプロトコルとしてSOAPを用い、 XML形式でデータ交換を行う分散処理プログラ ムのこと。 • Webサービスの基本技術 – SOAP、UDDI、WSDLである。 – UDDIレジストリをWebサービスのベースに考え、 研究開発を進める。 • Webサービスの目的 – ユーザが必要とするサービスを必要な時点で検 出し、実行できること。 2 WSの動的実行手法 に関する研究 [2][3] WSの問題点(3項目) 1. Webサービス実行時に,ユーザ側でそのWeb サービスを駆動するスタブが必要であり,その開 発負荷が大きい. 2. ユーザが必要とする,または利用したいWebサー ビスの検出が難しい. 3. ユーザがWebサービスを利用する際に,その機 能や入出力インターフェースなど利用法について 短時間で正確に知ることが難しい. プリミティブWebサービスの提案[1] 3 UDDIレジストリ Webサービス実行の流れ Webサービス提供者 Webサービスに関する情報 ・Webサービス、WSDLのア ドレス Webサービスの 登録 ①検索 ②情報 Webサービス WSDLファイル ④結果 ユーザ クライアント・プログラム の作成 ③実行 クライアント・プログラムの 作成と①~④を自動化した.4 プリミティブWebサービス(PWS)の提案 – WSを一元管理する,グローバルなCALS/ECシステム を実現する基盤として, • UDDIレジストリは必要. – しかし,WS登録時に名称,機能説明,入出力IFに関 する規約などはなく,全て提供者に委ねられている. 従って, – ユーザは利用するWS個々に機能,入出力データの 確認と理解が必要である. – 標準化することによって,理解と確認を容易にする. 5 WSのUDDIレジストリへの登録例 6 定義 • 様々なビジネス分野で,共通に利用可能な一 意に統一された名称,機能,入出力IFをもつ基 本的なWSとして定義する. – WSに対する曖昧さ,不確定性が無くなる. – 一度,それについて理解すれば良い. – 任意のビジネスプロセスに対しても,ユーザ主 体で PWSの組合せとして処理できる. 7 WSの入出力データについて • WSの実行を動的,かつ自動化したい. – WSのデータ型は大きく2種類ある. • 基本型と複合型(基本型を複数個組み合わせたもの) – 出力データ型に依存しない,自動化・統合化され たWS動的実行システムは開発済み. – 現在のWSは,入力データ型は基本型である. (何故なら,複合型にすると,実行時にユーザ側で複合型に 対応したJavaBeansクラスを用意する必要がある.) 8 複合型WSのWSDL記述の一部 <wsdl:types> <schema targetNamespace="http://10.70.51.20:8080/axis/services" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="GData6"> <sequence> <element name="beertype" nillable="true" type="xsd:string" /> <element name="quantity" type="xsd:int" /> </sequence> </complexType> <element name="GData6" nillable="true" type="tns1:GData6" /> <complexType name="SData6"> <sequence> <element name="beercode" nillable="true" type="xsd:string" /> <element name="beername" nillable="true" type="xsd:string" /> <element name="casevalue" type="xsd:int" /> <element name="totalcost" type="xsd:int" /> <element name="unitvalue" type="xsd:int" /> </sequence> </complexType> <element name="SData6" nillable="true" type="tns1:SData6" /> </schema> </wsdl:types> <wsdl:message name="getStocksRequest"> <wsdl:part name="in0" type="tns1:GData6" /> </wsdl:message> <wsdl:message name="getStocksResponse"> <wsdl:part name="getStocksReturn" type="tns1:SData6" /> </wsdl:message> 9 基本型と複合型の比較 • 基本型 – そのままデータをWSに送付・実行できる. – 実行時に,入力順番を常に確認する必要がある. – 全ての入力データ名を指定するので,プログラミ ングが煩雑になる. • 複合型 – その複合型データに対応したJavaBeansクラスを 用意する必要がある. – 実行時に,全ての入力データをJavaBeansクラス のオブジェクトとしてまとめて扱える(入力順番を 気にする必要はない.) 10 基本型の場合 public class GoodsService6{ public SData6 getStocks(String beertype, int quantity) throws Exception{ 複合型の場合 public class GoodsService6{ public SData6 getStocks(GData6 details) throws Exception{ GData6クラスを共通に定義すれば良い. 11 複合型の利点 • WSの連携がシンプルになる. – あるWSの出力を次のWSの入力とする場合など, 同じJavaBeansクラスのオブジェクトを利用できる. • 入力データのカプセル化 – ユーザは入力データの意味さえ分かればよい. その変数名や入力順番などを気にしなくてよい. プログラミングが簡略化される. • WSメソッドのシグニチャ(メソッド名と引数) は同じ,でも引数の内容が異なるWSも可能. 12 • Webサービスの検出 – ユーザが必要とする最適なWebサービスを如 何に効率良く、検出するか。 – そのWebサービスの使い方をどう理解させる か。 • その機能、出力タイプ、入力パラメータの数とその タイプをユーザに伝えること。 • Webサービスの結合 – 複数のWebサービスをどう結びつけるか? – セマンテックWeb。 13
© Copyright 2024 ExpyDoc