Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

第10回 CACHÉによるWebサービスの概要

SQLも使えるオブジェクトデータベース「CACHE'」を知る 10

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/01/23 10:35

今回は、Cache'によるWebサービスの概要を説明します。SOAPプロトコルによる関連メソッドの集合であるWebサービスは、プラットフォームの違いを越えたデータのやりとりを実現する手段です。 Cache'では、SOAPの完全サポートを提供しています。

目次

はじめに

 今回は、CachéによるWebサービスの概要を説明します。SOAP(Simple Object Access Protocol)プロトコルによる関連メソッドの集合であるWebサービスは、プラットフォームの違いを越えたデータのやりとりを実現する手段です。Cachéでは、SOAPの完全サポートを提供しています。Cachéは、Webサービスのサービスを生成する機能(Webサービスプロバイダ)と、Webサービスのクライアントインタフェースを生成する機能(Webサービスコンシューマ)の両方を提供します。

対象読者

  • アプリケーション・システム開発をしている人
  • データベース関連の開発およびメンテナンスをしている人
  • JavaやC#でプログラミングしている人

CACHÉのWebサービスとは

 Cachéでは、WebサービスはCaché SOAPサーバにより実現されます。CSPゲートウェイ経由でSOAP要求を受けとったCaché SOAPサーバは、開封したメッセージの検証後、すべての入力パラメータをCachéに適合する表記に変換し、指定されたWebメソッドを呼び出します。

CACHÉによるWebサービスの作成方法

 CachéにはWebサービスのサポートが組み込まれているため、追加のミドルウェアなどは必要ありません。「WebMethod」としてタグ付けしたメソッドを含めてCachéクラスを作成すれば、自動的にWebサービスクラスとして使用可能となります。このWebサービスクラス作成には、Cachéスタジオに用意されている「Webサービスウィザード」を利用すれば、パラメータの設定なども対話式で行えます。

Webサービスクラスのパラメータ

 CachéによるWebサービスは、すべて%SOAP.WebServiceクラスのサブクラスによって定義されます。この%SOAP.WebServiceベースのクラスは、SOAPプロトコル経由で呼び出すメソッド作成に必要な機能をすべて提供しています。また、このクラスはSOAPに関連する「ブックキーピング」(サービスについて説明しているWSDLのドキュメントの保持など)の管理も自動化します。このクラスには、Webサービスの特性を指定する次表のようなパラメータがあります。

Webサービスのパラメータ
パラメータ 説明
NAMESPACE ユーザーのWebサービスのネームスペースを定義するのに使用するURI。既定では、開発時に一時的に使う「http://tempuri.org」に設定されているので、実行時には変更する必要ある。
SERVICENAME Webサービスの名前。この名前は有効な識別子である必要がある(英数字のみ。1文字目は英字でなければならない)。

Webサービスウィザードの実行例

 さっそくCachéスタジオを利用して、新規Webサービスを生成させてみましょう。まず、次の手順で新規のWebサービスクラスを作成します。

  1. Cachéスタジオの[ファイル]メニューから[新規]を選択して、[新規作成]ダイアログを表示させます。
  2.  
  3. ダイアログの[カスタム]タブにある[Web Service]を選択して、[OK]ボタンを押します。
  4.  
  5. 表示された[Cachéウェブサービスウィザード](次図)で、パッケージ名、クラス名のほか、上表にある2つのパラメータを指定します。
  6.  
    Cache'ウェブサービスウィザード
    Cache'ウェブサービスウィザード
     
    ここでは次のように指定してみましょう。
     
    [パッケージ名] 「MyApp」(デフォルト)
    [クラス名] 「StockService」
    [サービス名] 「MyStockService」
    [サービスネームスペース] 「http://tempuri.org」(デフォルト)
    [サービスメソッド] 「Test」(デフォルト)
     

 [OK]ボタンを押すと、次のような新規Webサービスクラス「MyApp.StockService.cls」が作成されます。

作成された新規Webサービスクラス
作成された新規Webサービスクラス

 この図の[ WebMethod ]と示された箇所に、クラスメソッドを記述します。例を挙げて説明していきましょう。

Webメソッドの定義例

 先ほどのウィザードでは、[サービスメソッド]をデフォルトのままにしていましたが、そのデフォルト値である「Test」メソッドの箇所を次のように変えてみましょう。

/// TODO: 引数および実装を追加します。
/// Forecast
ClassMethod Forecast(StockName As %String) As %Integer [WebMethod]
{
    Set price = $Random(1000)
    Quit price
}

 コンパイルすると、「Forecast」というメソッドを含む「MyStockService」というWebサービスが発行されます。Webメソッドには、データベースアクセス、埋め込みのSQLクエリ、オブジェクトアクセスなど、あらゆる実装コードが使用できます。制約条件としては、非リテラルの入力パラメータや返り値に関してのみ、XML対応のクラス(スーパークラス)として%XML.Adaptorを含めなければなりません。

 単純なリテラルではCachéデータ型クラスを使用して表します。例えば2つの整数の入力値を持ち、文字列を返すWebメソッドは、次のように定義します。

ClassMethod MyMethod(p1 As %Integer,p2 As %Integer) As %String [WebMethod]
{
    Quit "A string"
}

 それに対して非リテラルの場合は、非データ型のXML対応Cachéクラスとしなければなりません。例えば2つの複雑な数字の入力値を持ち、複雑な数字を返すWebメソッドは、次のように定義します。

ClassMethod Add(a As ComplexNumber,b As ComplexNumber) As ComplexNumber [WebMethod]
{
    Set sum = ##class(ComplexNumber).%New()
    Set sum.Real = a.Real + b.Real
    Set sum.Imaginary = a.Imaginary + b.Imaginary
    Quit sum
}

/// A complex number
Class MyApp.ComplexNumber Extends (%RegisteredObject,%XML.Adaptor)
{
    Property Real As %Float;
    Property Imaginary As %Float;
}

ブラウザによるWebサービスの利用法

 CachéのWebサービスは、すべて、単純なHTTPベースのインターフェイスを自動的に提供します。各Webサービスクラスは、%SOAP.WebServiceクラスから派生し、その%SOAP.WebService%CSP.Pageから派生します。それゆえに、すべてのWebサービスクラスは、CSP経由のHTTP要求に応答できることになります。

 %SOAP.WebServiceクラスは、HTTP要求に応答するメソッドを実装し、次の3つを実行します。

1. HTML形式で、Webサービスとメソッドについて説明するカタログページを発行

 特定のカタログページを表示させるには、対応するWebサービスクラスのURLを使います。例えば、MyApp.StockServiceがUSERネームスペース内に定義されているのであれば、「http://localhost:57772/csp/user/MyApp.StockService.cls」とします。

 次図は、Cachéのサンプルカタログページです。

サンプルカタログページ(http://localhost:57772/csp/samples/SOAP.Demo.cls)
サンプルカタログページ(http://localhost:57772/csp/samples/SOAP.Demo.cls)

2. XMLドキュメントとして、WebサービスのWSDL(Webサービス記述言語)ドキュメントを発行

 特定のWSDLドキュメントを表示させるには、対応するWebサービスクラスのURLのパラメータリストに「WSDL」を付けます。例えば、WebサービスクラスがMyApp.StockServiceの場合は、「http://localhost:57772/csp/user/MyApp.StockService.cls?WSDL」とします。

 次図は、CachéのサンプルWSDLドキュメントです。

サンプルWSDLドキュメント(http://localhost:57772/csp/samples/SOAP.Demo.cls?WSDL)
サンプルWSDLドキュメント(http://localhost:57772/csp/samples/SOAP.Demo.cls?WSDL)

3. WebメソッドのHTMLベースのテストページを発行

 特定のWebメソッドのテストページを表示させるには、対応するWebサービスクラスのURLのあとに「/(メソッド名)」を付けます。例えば、WebサービスクラスがMyApp.StockServiceで、表示させたいメソッドがForecastの場合は、「http://localhost:57772/csp/user/MyApp.StockService.cls/Forecast」とします。

 次図は、Cachéのサンプルメソッド「FindPerson」のテストページです。

サンプルメソッド「FindPerson」のテストページ
サンプルメソッド「FindPerson」のテストページ

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • トップスタジオ(トップスタジオ)

    1997年の創立以来、一貫してPC/IT関連書籍、雑誌等記事の制作業務を手掛けるプロフェッショナル集団。翻訳・編集・DTPのほか、技術監修や著作も多数。

バックナンバー

連載:SQLも使えるオブジェクトデータベース「CACHE'」を知る

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5