PPT - 松江工業高等専門学校 ホームページ

電子情報通信学会 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