Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » モバイル Web サービス » モバイル Web サービス・アプリケーションの記述

 

.NET モバイル Web サービス・アプリケーションの設定

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 のプロジェクトに QAnywhere .NET API とモバイル Web サービス API への参照を追加するには、次の手順に従います。
  1. Visual Studio を起動し、プロジェクトを開きます。

  2. [ソリューション エクスプローラ] ウィンドウで、[参照設定] フォルダを右クリックし、[参照の追加] を選択します。

  3. [参照] タブで、次のディレクトリにある iAnywhere.QAnywhere.Client.dlliAnywhere.QAnywhere.WS.dll を探します。

    • .NET Framework 2.0:install-dir\Assembly\v2
    • .NET Compact Framework 2.0:install-dir\ce\Assembly\v2

    使用環境に応じた適切なディレクトリから、それぞれの DLL を選択し、[開く] をクリックします。

  4. DLL がプロジェクトに追加されたことを確認するには、ソリューション・エクスプローラで [参照] ツリーを展開します。リストに iAnywhere.QAnywhere.Client.dlliAnywhere.QAnywhere.WS.dll が表示されています。

ソース・コードのデータ・プロバイダ・クラスを参照する
♦  コード内で QAnywhere .NET API とモバイル Web サービス API のクラスを参照するには、次の手順に従います。
  1. Visual Studio を起動し、プロジェクトを開きます。

  2. C# を使用している場合は、ファイルの先頭にある using ディレクティブのリストに次の行を追加します。

    using iAnywhere.QAnywhere.Client;
    using iAnywhere.QAnywhere.WS;
  3. 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" );
♦  .NET 用に QAnywhere とモバイル Web サービスを初期化するには、次の手順を実行します。
  1. 前の手順の説明に従って、iAnywhere.QAnywhere.Client および iAnywhere.QAnywhere.WS ネームスペースをインクルードします。

    using iAnywhere.QAnywhere.Client;
    using iAnywhere.QAnywhere.WS;
  2. 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 は、リモート・デバイス上に存在するプロパティ・ファイルの名前です。

  3. QAManager オブジェクトを初期化します。次に例を示します。

    mgr.Open(
       AcknowledgementMode.EXPLICIT_ACKNOWLEDGEMENT);

    open メソッドの引数には、メッセージの受信確認方法を示す受信確認モードを指定します。これは、IMPLICIT_ACKNOWLEDGEMENT または EXPLICIT_ACKNOWLEDGEMENT のどちらかにする必要があります。

    モバイル Web サービスによって使用される QAnywhere メッセージは、モバイル Web サービス・アプリケーションにアクセスできません。EXPLICIT_ACKNOWLEDGEMENT モードで QAManager を使用する場合は、WSResult の Acknowledge メソッドを使用して、Web サービス要求の結果を含む QAnywhere メッセージの受信確認を行います。このメソッドは、アプリケーションが応答を正常に処理したことを示します。

    受信確認モードの詳細については、次の項を参照してください。

    注意

    QAManager を作成する代わりに、QATransactionalManager を作成できます。トランザクション志向メッセージングの実装 (.NET クライアントの場合)を参照してください。

  4. サービス・バインディング・クラスのインスタンスを作成します。

    モバイル 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 サービス要求を参照してください。