プログラミング
逆引き
クライアントとの通信
VisMでの通信
Factoryでの通信
WebServiceでの通信
CSP (Cache' Server Pages)
Cache'SQL
設定・性能


【広告】









Cache' WebサービスにVB.Netから接続する


.NetからCache'にアクセスする方法として、Webサービス(Soap)を使用する方法があります。
Webサービスは.Netに限らず、数多くのテクノロジと接続が可能なので、様々な利用法が可能です。
ここではこのWebサービスを使用してVB.NetからCache'にアクセスする方法を記します。

目次
クラスの作成
Visual Studio Soap接続設定




クラスの作成

まずCache'でクラスを作成します。Managed Providerで使用したクラスを以下のように修正します。
/// Test Class for .Net with SOAP
Class DotNet.Test Extends (%Persistent,%Populate,%SOAP.WebService)
{

/// 名前
Property Name As %String;
Index NameIndex On Name;

/// 日付
Property Day As %Date;
Index DayIndex On Day;

/// メモ
Property 
Memo As %String(MAXLEN = 65535);

/// $Hを返す
ClassMethod GetHoro() As %String [WebMethod]
 {
   Q $H
 }

/// for Web Service
Parameter NAMESPACE = "http://tempri.org";
Parameter SERVICENAME = "Test";

}
太字の部分がSoapアクセス用に修正した部分です。%XML.AdaptorをClassに追加したら、このクラスをコンパイルしてください。

コンパイルが成功したら、スタジオのメニューから「表示→ブラウザで表示」を選択します。ブラウザが起動し以下のような画面が表示されます。

このときブラウザのアドレスバーに表示されているUrlをコピーしておいてください。
(例:http://localhost:57772/csp/user/DotNet.Test.cls)

GetHoroメソッドをテストするためGetHoroリンクをクリックします。表示された画面の[Invoke] ボタンをクリックしてください。

左のように$Hの値が表示され、正常に動作することが確認できます。




Visual Studio Soap接続設定

Visual Studio を起動し、メニューからファイル→新しいプロジェクトを選択します。  表示されたダイアログから、Windowsアプリケーションを選択します。

ソリューションエクスプローラーからソリューションを右クリックし(左図の例ではWinodwsApplication2)、[Web参照の追加]を選択します。


[Web参照の追加]ダイアログが表示されます。URLに先ほどコピーしたUrlを貼り付け、後ろに?wsdlを追加して[Enter]を押します。(例:http://localhost:57772/csp/user/DotNet.Test.cls?wsdl)
正常にWebサービスを発見できると、以下のように表示されます。
[参照の追加]ボタンをクリックすると、[Web参照の追加]ダイアログが閉じ、下図のようにソリューションエクスプローラーにWeb Refernceが追加されます。

このWebRefernceを呼び出す処理を記述します。
Form1にボタンを配置し、以下のように設定します
.Name    btnHoro
.Text      Horo



このボタンのonClickメソッドとして以下の処理を記述します。

Public Class Form1

Private Sub btnHoro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHoro.Click

    MsgBox(My.WebServices.Test.GetHoro())

End Sub

End Class

実際にWebサービスへアクセスしているのは、My.WebServices.Test.GetHoro() の部分です。

実際に動作させてみます。

このように$Hの値が取得できました。


 動作させてみると分かりますが、ボタンを押してからメッセージボックスが表示されるまで、1秒とまではいきませんが若干の時間がかかってしまいます。これはSoap通信がHTTPを使用して通信するため、直に通信する場合に比べてオーバーヘッドが多くなるためだと思われます。
 若干動作が重くなりますが、クライアント側にCache'専用のコンポーネントが必要なくて済むので、プログラムの配布は大変楽になります。


※本記述は Cache' 2008.2 / Visual Studio 2005 SP1 における動作です。バージョンによっては動作が記述と異なることがあります。



Update