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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link サーバ API » .NET での同期スクリプトの作成 » 共有アセンブリのロード

 

アセンブリのロード

.NET アセンブリは、タイプ、メタデータ、プログラム・コードのパッケージです。.NET アプリケーションでは、すべてのコードがアセンブリになければなりません。アセンブリ・ファイルの拡張子は .dll または .exe です。

アセンブリには、次の種類があります。

  • プライベート・アセンブリ   ファイル・システム内のファイル。

  • 共有アセンブリ   グローバル・アセンブリ・キャッシュにインストールされるアセンブリ。

Mobile Link では、クラスを含むアセンブリが指定されないと、クラスをロードしてそのクラスのメソッドを呼び出すことができません。指定する必要があるのは、Mobile Link が直接呼び出すアセンブリのみです。このアセンブリによって、その他の必要なアセンブリが呼び出されます。

たとえば、Mobile Link が MyAssembly を呼び出すと、MyAssembly が UtilityAssembly と NetworkingUtilsAssembly を呼び出します。この場合は、Mobile Link が MyAssembly だけを探すように設定します。

Mobile Link では、次の方法でアセンブリをロードできます。

  • -sl dnet ( -MLAutoLoadPath ) を使用   このオプションは、プライベート・アセンブリに対してのみ有効です。このオプションは、アプリケーションのベース・ディレクトリへのパスを設定し、そのディレクトリ内のすべてのアセンブリをロードします。

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

    -MLAutoLoadPath でパスとディレクトリを指定すると、次のアクションが実行されます。

    • このパスがアプリケーション・ベース・パスとして設定される

    • 指定したディレクトリで .dll または .exe の付くすべてのファイルのすべてのクラスがロードされる

    • 1 つのアプリケーション・ドメインが作成され、ドメインが指定されていないすべてのユーザ・クラスがそのドメインにロードされる

    このオプションでは、グローバル・アセンブリ・キャッシュ内のアセンブリを直接呼び出すことはできません。これらの共有アセンブリを呼び出すには、-MLDomConfigFile を使用します。

  • -sl dnet ( -MLDomConfigFile ) を使用   このオプションは、プライベート・アセンブリと共有アセンブリの両方に使用できます。このオプションを使用するには、ドメインとアセンブリの設定を含む設定ファイルが必要です。このオプションは、共有アセンブリがある場合、アプリケーション・ベース・パス内のすべてのアセンブリをロードする必要がない場合、またはその他の理由で設定ファイルを使用する必要がある場合に使用してください。

    このオプションを使用すると、Mobile Link は指定されたドメイン設定ファイル内の設定を読み込みます。ドメイン設定ファイルには、1 つまたは複数の .NET ドメインの設定が入っています。このファイルに複数のドメインが記述されている場合は、1 番目に指定されているドメインがデフォルト・ドメインとして使用されます(デフォルト・ドメインは、指定されたドメインがスクリプトにない場合に使用されます)。

    Mobile Link はアセンブリをロードするときに、まずプライベート・アセンブリとしてロードし、次にグローバル・アセンブリ・キャッシュからアセンブリをロードしようとします。プライベート・アセンブリは、アプリケーション・ベース・ディレクトリにあります。共有アセンブリはグローバル・アセンブリ・キャッシュからロードされます。

-MLDomConfigFile オプションでは、ドメイン設定ファイルで指定されているアセンブリのみが、イベント・スクリプトから直接呼び出せます。

サンプルのドメイン設定ファイル

mlDomConfig.xml というサンプルのドメイン設定ファイルが、Mobile Link とともにインストールされます。独自のファイルを最初から作成するか、要件に合わせてサンプルを編集できます。サンプル・ファイルは、SQL Anywhere の次のパスにあります。

MobiLink\setup\dnet\mlDomConfig.xml

サンプルのドメイン設定ファイル mlDomConfig.xml の内容は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<config xmlns="iAnywhere.MobiLink.mlDomConfig" xsi:schemaLocation='iAnywhere.MobiLink.mlDomConfig mlDomConfig.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' >
    <domain>
        <name>SampleDomain1</name>
        <appBase>C:\scriptsDir</appBase>
        <configFile></configFile>
        <assembly name="Assembly1" />
        <assembly name="Assembly2" />
    </domain>

    <domain>
        <name>SampleDomain2</name>
        <appBase>\Dom2assembly</appBase>
        <configFile>\Dom2assembly\AssemblyRedirects.config</configFile>
        <assembly name="Assembly3" />
        <assembly name="Assembly4" />
    </domain>
</config>

次に、mlDomConfig.xml の内容について説明します。

  • name   イベント・スクリプトでドメインを指定するときに使用するドメイン名です。"DomainName:Namespace.Class.Method" というフォーマットのイベント・スクリプトを使用するには、ドメイン設定ファイル内に DomainName ドメインが必要です。

    ドメイン名は 1 つ以上指定してください。

  • appBase   ドメインがアプリケーション・ベース・ディレクトリとして使用するディレクトリです。すべてのプライベート・アセンブリは、このディレクトリに基づいて .NET CLR によってロードされます。appBase は必ず指定してください。

  • configFile   ドメインに使用する .NET アプリケーション設定ファイルです。ここは空白でもかまいません。通常は、この部分を使用してアセンブリのバインドとロードのデフォルトの動作を変更します。アプリケーション設定ファイルの詳細については、.NET のマニュアルを参照してください。

  • assembly   イベント・スクリプト内の型の参照を解決するときに Mobile Link がロードして検索するアセンブリの名前です。アセンブリは 1 つ以上指定してください。アセンブリが複数のドメインで使用されている場合は、ドメインごとに 1 つのアセンブリを指定してください。プライベート・アセンブリの場合は、ドメインのアプリケーション・ベース・ディレクトリになければなりません。

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