QAnywhere で .NET を使用する前に、Visual Studio プロジェクトに対して以下の変更を加える必要があります。
QAnywhere .NET DLL とモバイル Web サービス .NET DLL への参照を追加します。これにより、Visual Studio に対して、QAnywhere .NET API とモバイル Web サービス .NET API のコードを見つけるためにインクルードする DLL を指定します。
ソース・コードに、QAnywhere .NET API クラスとモバイル Web サービス .NET API クラスを参照する行を追加します。QAnywhere .NET API を使用するには、データ・プロバイダを参照する行もソース・コードに追加する必要があります。C# では、Visual Basic 用とは異なる行を追加します。
上記の手順について、以下に詳しく説明します。
Visual Studio を起動し、プロジェクトを開きます。
[ソリューション エクスプローラ] ウィンドウで、[参照設定] フォルダを右クリックし、[参照の追加] を選択します。
[参照] タブで、次のディレクトリにある iAnywhere.QAnywhere.Client.dll と iAnywhere.QAnywhere.WS.dll を探します。
使用環境に応じた適切なディレクトリから、それぞれの DLL を選択し、[開く] をクリックします。
DLL がプロジェクトに追加されたことを確認するには、ソリューション・エクスプローラで [参照] ツリーを展開します。リストに iAnywhere.QAnywhere.Client.dll と iAnywhere.QAnywhere.WS.dll が表示されています。
Visual Studio を起動し、プロジェクトを開きます。
C# を使用している場合は、ファイルの先頭にある using ディレクティブのリストに次の行を追加します。
using iAnywhere.QAnywhere.Client; using iAnywhere.QAnywhere.WS; |
Visual Basic を使用している場合は、ファイルの先頭にある imports リストに次の行を追加します。
Imports iAnywhere.QAnywhere.Client Imports iAnywhere.QAnywhere.WS |
Imports 行は必須ではありません。しかし、この行を追加すると、QAnywhere とモバイル Web サービスのクラスの省略形を使用できるようになります。この行を追加しなくても、完全に修飾されたクラス名をコードで使用できます。たとえば、次のコードは長形式を使用しています。
iAnywhere.QAnywhere.Client.QAManager mgr = new iAnywhere.QAnywhere.Client.QAManagerFactory.Instance.CreateQAManager( "qa_manager.props" ); |
次のコードは省略形を使用しています。
QAManager mgr = QAManagerFactory.Instance.CreateQAManager( "qa_manager.props" ); |
前の手順の説明に従って、iAnywhere.QAnywhere.Client および iAnywhere.QAnywhere.WS ネームスペースをインクルードします。
using iAnywhere.QAnywhere.Client; using iAnywhere.QAnywhere.WS; |
QAManager オブジェクトを作成します。
たとえば、デフォルトの QAManager オブジェクトを作成するには、パラメータに NULL を指定して、CreateQAManager を呼び出します。
QAManager mgr; mgr = QAManagerFactory.Instance.CreateQAManager( null ); |
同時実行性の利点を最大限に生かすために、マルチスレッド・アプリケーションでは、スレッドごとに QAManager を作成する必要があります。マルチスレッドでの考慮事項を参照してください。
QAManagerFactory の詳細については、QAManagerFactory クラスを参照してください。
または、プロパティ・ファイルを使用して、カスタマイズされた QAManager オブジェクトを作成することもできます。次のように、CreateQAManager メソッドの引数としてプロパティ・ファイルを指定します。
mgr = QAManagerFactory.Instance.CreateQAManager( "qa_mgr.props" ); |
qa_mgr.props は、リモート・デバイス上に存在するプロパティ・ファイルの名前です。
QAManager オブジェクトを初期化します。次に例を示します。
mgr.Open( AcknowledgementMode.EXPLICIT_ACKNOWLEDGEMENT); |
open メソッドの引数には、メッセージの受信確認方法を示す受信確認モードを指定します。これは、IMPLICIT_ACKNOWLEDGEMENT または EXPLICIT_ACKNOWLEDGEMENT のどちらかにする必要があります。
モバイル Web サービスによって使用される QAnywhere メッセージは、モバイル Web サービス・アプリケーションにアクセスできません。EXPLICIT_ACKNOWLEDGEMENT モードで QAManager を使用する場合は、WSResult の Acknowledge メソッドを使用して、Web サービス要求の結果を含む QAnywhere メッセージの受信確認を行います。このメソッドは、アプリケーションが応答を正常に処理したことを示します。
受信確認モードの詳細については、次の項を参照してください。
QAManager を作成する代わりに、QATransactionalManager を作成できます。トランザクション志向メッセージングの実装 (.NET クライアントの場合)を参照してください。
サービス・バインディング・クラスのインスタンスを作成します。
モバイル Web サービスの WSDL コンパイラは、Web サービスを定義する WSDL ドキュメントからサービス・バインディング・クラスを生成します。
QAManager は、Web サービス・バインディング・クラスのインスタンスによって、Web サービス要求を作成する処理でメッセージ操作を行うために使用されます。QAnywhere を介して Web サービス要求を送信するためのコネクタ・アドレスを設定します。これは、サービス・バインディング・クラスのプロパティ WS_CONNECTOR_ADDRESS を設定することによって行うことができます。接続先 Web サービスの URL を使用して、各 QAnywhere Web サービス・コネクタを設定します。複数の URL に配置される Web サービスを必要とするアプリケーションの場合は、各 URL についてコネクタを設定します。
次に例を示します。
CurrencyConverterSoap service = new CurrencyConverterSoap( ) service.SetQAManager(mgr); service.setProperty( "WS_CONNECTOR_ADDRESS", "ianywhere.connector.currencyconvertor\\"); |
アドレス末尾の \\ は、必ず含めてください。
モバイル Web サービスを初期化するには、QAManager を作成し、サービス・バインディング・クラスのインスタンスを作成する必要があります。次に例を示します。
// QAnywhere initialization QAManager mgr = QAManagerFactory.Instance.CreateQAManager( null ); mgr.SetProperty( "CONNECT_PARAMS", "eng=qanywhere;dbf=qanywhere.db;uid=ml_qa_user;pwd=qanywhere" ); mgr.Open( AcknowledgementMode.IMPLICIT_ACKNOWLEDGEMENT ); mgr.Start(); // Instantiate the web service proxy CurrencyConvertorSoap service = new CurrencyConvertorSoap(); service.SetQAManager( mgr ); service.SetProperty( "WS_CONNECTOR_ADDRESS", "ianywhere.connector.currencyconvertor\\" ); |
CurrencyConvertor サンプルの応答時間は、Web サービスの可用性によって異なります。非同期の Web サービス要求は、モバイル Web サービス・アプリケーションが利用不可能になるときがある場合に便利です。この方法では、サービス・バインディング・クラスでメソッドの呼び出しを行ったときに Web サービス要求が作成され、作成された要求は出力キューに置かれます。メソッドは WSResult を返します。この WSResult は、応答のステータスについて後から問い合わせるときに使用できます。アプリケーションを再起動した後でも使用できます。非同期の Web サービス要求を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |