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

SAP Sybase SQL Anywhere 16.0 » Mobile Link サーバ管理 » Mobile Link サーバ API » .NET の同期スクリプト

 

.NET への同期スクリプトの実装

同期スクリプトを .NET で実装するときには、アセンブリに含まれるパッケージ、クラス、メソッドの場所を Mobile Link に指示する必要があります。

前提条件

この作業を実行するための前提条件はありません。

 ♦ タスク
  1. 1 つまたは複数の独自クラスを作成します。必要な同期イベントごとに、メソッドを作成します。これらのメソッドは、パブリックにしてください。

    メソッドの詳細については、メソッドを参照してください。

    非静的メソッドを持つ各クラスには、パブリックコンストラクタが必要です。Mobile Link サーバは、各クラスのメソッドが接続のために初めて呼び出されるときに、そのクラスを自動的にインスタンス化します。

    コンストラクタを参照してください。

  2. 1 つまたは複数のアセンブリを作成します。コンパイル中、独自の .NET メソッドで利用するために、Mobile Link サーバ API クラスのレポジトリを含む iAnywhere.MobiLink.Script.dll を参照します。iAnywhere.MobiLink.Script.dll は、%SQLANY16%\Assembly\V2 にあります。

    クラスをコンパイルするには、コマンドラインを使用するか、Visual Studio や他の .NET 開発環境を使用することができます。

    Mobile Link サーバ .NET API リファレンスを参照してください。

  3. プロジェクトをコンパイルします。

    たとえば、次のようにして Visual Studio からコンパイルします。

    1. VS.NET の [プロジェクト] » [既存項目の追加] をクリックします。

    2. iAnywhere.MobiLink.Script.dll を探します。

      [開く] リストで [リンクファイル] をクリックします。

      注意

      Visual Studio の場合は、常に上記の [リンク ファイル] を使用します。iAnywhere.MobiLink.Script.dll を参照するために、[参照の追加] オプションを使用しないでください。このオプションは、クラスアセンブリとして同じ物理ディレクトリに iAnywhere.MobiLink.Script.dll を複製するため、Mobile Link サーバにとって問題となります。

    3. アセンブリを構築するには、[ビルド] メニューを使用します。

    次のように入力して、コマンドラインからコンパイルすることもできます。

    dll-pathiAnywhere.MobiLink.Script.dll へのパスに置き換えます。たとえば、C# の場合は次のようになります。

    csc /out:dll-pathout.dll /target:library /reference:dll-pathiAnywhere.MobiLink.Script.dll sync_v1.cs
  4. 統合データベース内の Mobile Link システムテーブルで、各同期スクリプトについて、呼び出すパッケージ、クラス、メソッドの名前を指定します。スクリプトの各バージョンにつき使用できるクラスは 1 つだけです。

    たとえば、ml_add_dnet_connection_script ストアドプロシージャまたは ml_add_dnet_table_script ストアドプロシージャを使用して、この情報を Mobile Link システムテーブルに追加できます。次の SQL 文は、SQL Anywhere データベース内で実行すると、authenticate_user 接続レベルイベントが発生するたびに myNamespace.myClass.myMethod を実行するように指定します。

    CALL ml_add_dnet_connection_script( 
        'version1',
        'authenticate_user', 
        'myNamespace.myClass.myMethod'
    )
    注意

    完全に修飾されたメソッド名では、大文字と小文字が区別されます。

    このプロシージャコールの結果として、ml_script システムテーブルの script_language カラムに、dnet という語が含まれます。script カラムにはパブリックな .NET メソッドの修飾名が含まれます。

    ml_add_dnet_connection_script システムプロシージャml_add_dnet_table_script システムプロシージャを参照してください。

    この情報を追加するには Sybase Central を使用する方法もあります。

    スクリプトの追加と削除を参照してください。

  5. アセンブリをロードするよう Mobile Link サーバに指示し、CLR を起動します。mlsrv16 コマンドラインでオプションを使用して、これらのアセンブリの場所を Mobile Link に指示します。2 つのオプションから選択できます。

    • -sl dnet ( -MLAutoLoadPath ) を使用   このオプションは、アプリケーションのベースディレクトリへの特定のパスを設定し、そのディレクトリ内のすべてのプライベートアセンブリをロードします。通常、この方法を推奨します。たとえば、dll-path に保存されたすべてのアセンブリをロードするには、次を入力します。
      mlsrv16 -c "DSN=consolidated1" -sl dnet(-MLAutoLoadPath=dll-path)

      -MLAutoLoadPath オプションを使用すると、イベントスクリプトの完全に修飾されたメソッド名を入力するときに、ドメインを指定できません。

      .NET アセンブリのロード-sl dnet mlsrv16 オプションを参照してください。

    • -sl dnet ( -MLDomConfigFile ) を使用   このオプションを使用するには、ドメインとアセンブリの設定を含む設定ファイルが必要です。このオプションを使用するのは、共有アセンブリがある場合、ディレクトリのすべてのアセンブリをロードする必要がない場合、またはその他の理由で設定ファイルを使用する必要がある場合です。

      共有アセンブリのロードの詳細については、.NET アセンブリのロードを参照してください。

      mlsrv16 オプションの -sl dnet の詳細については、-sl dnet mlsrv16 オプションを参照してください。

      注意

      -MLAutoLoadPath オプションまたは -MLDomConfigFile オプションを使用できますが、両方は使用できません。

結果

.NET 同期論理が設定されます。