同期スクリプトを .NET で実装するときには、アセンブリに含まれるパッケージ、クラス、メソッドの場所を Mobile Link に指示する必要があります。
1 つまたは複数の独自クラスを作成します。必要な同期イベントごとに、メソッドを作成します。これらのメソッドは、パブリックにしてください。
メソッドの詳細については、メソッドを参照してください。
非静的メソッドを持つ各クラスには、パブリック・コンストラクタが必要です。Mobile Link サーバは、各クラスのメソッドが接続のために初めて呼び出されるときに、そのクラスを自動的にインスタンス化します。
コンストラクタを参照してください。
1 つまたは複数のアセンブリを作成します。コンパイル中、独自の .NET メソッドで利用するために、Mobile Link サーバ API クラスのレポジトリを含む iAnywhere.MobiLink.Script.dll を参照します。iAnywhere.MobiLink.Script.dll は、install-dir\Assembly\v2 にあります。
クラスをコンパイルするには、コマンド・ラインを使用するか、Visual Studio や他の .NET 開発環境を使用することができます。
.NET 用 Mobile Link サーバ API リファレンスを参照してください。
プロジェクトをコンパイルします。
たとえば、次のようにして Visual Studio からコンパイルします。
VS.NET の [プロジェクト] - [既存項目の追加] を選択します。
iAnywhere.MobiLink.Script.dll を探します。
[開く] リストで [リンク ファイル] を選択します。
Visual Studio の場合は、常に上記の [リンク ファイル] を使用します。iAnywhere.MobiLink.Script.dll を参照するために、[参照の追加] オプションを使用しない でください。このオプションは、クラス・アセンブリとして同じ物理ディレクトリに iAnywhere.MobiLink.Script.dll を複製するため、Mobile Link サーバにとって問題となります。
アセンブリを構築するには、[ビルド] メニューを使用します。
次のように入力して、コマンド・ラインからコンパイルすることもできます。
dll-path を iAnywhere.MobiLink.Script.dll へのパスに置き換えます。たとえば、C# の場合は次のようになります。
csc /out:dll-pathout.dll /target:library /reference:dll-pathiAnywhere.MobiLink.Script.dll sync_v1.cs |
統合データベース内の 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', 'authenicate_user', 'myNamespace.myClass.myMethod' ) |
完全に修飾されたメソッド名では、大文字と小文字が区別されます。
このプロシージャ・コールの結果として、ml_script システム・テーブルの script_language カラムに、dnet という語が含まれます。script カラムにはパブリックな .NET メソッドの修飾名が含まれます。
ml_add_dnet_connection_script システム・プロシージャとml_add_dnet_table_script システム・プロシージャを参照してください。
この情報を追加するには Sybase Central を使用する方法もあります。
スクリプトの追加と削除を参照してください。
アセンブリをロードするよう Mobile Link サーバに指示し、CLR を起動します。mlsrv11 コマンド・ラインでオプションを使用して、これらのアセンブリの場所を Mobile Link に指示します。2 つのオプションから選択できます。
-sl dnet ( -MLAutoLoadPath ) を使用 このオプションは、アプリケーションのベース・ディレクトリへの特定のパスを設定し、そのディレクトリ内のすべてのプライベート・アセンブリをロードします。ほとんどの場合、このオプションを使用してください。たとえば、dll-path に保存されたすべてのアセンブリをロードするには、次を入力します。
mlsrv11 -c "dsn=consolidated1" -sl dnet(-MLAutoLoadPath=dll-path) |
-MLAutoLoadPath オプションを使用すると、イベント・スクリプトの完全に修飾されたメソッド名を入力するときに、ドメインを指定できません。
アセンブリのロードと-sl dnet オプションを参照してください。
-sl dnet ( -MLDomConfigFile ) を使用 このオプションを使用するには、ドメインとアセンブリの設定を含む設定ファイルが必要です。このオプションを使用するのは、共有アセンブリがある場合、ディレクトリのすべてのアセンブリをロードする必要がない場合、またはその他の理由で設定ファイルを使用する必要がある場合です。
共有アセンブリのロードの詳細については、アセンブリのロードを参照してください。mlsrv11 オプションの -sl dnet の詳細については、-sl dnet オプションを参照してください。
-MLAutoLoadPath オプションまたは -MLDomConfigFile オプションを使用できますが、両方は使用できません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |