次の方法で共有


リモート オブジェクトの設定

リモート処理可能オブジェクトを公開または利用する開発者は、.NET リモート処理を使用するアプリケーションが正しく機能するように .NET リモート処理システムを設定する必要があります。リモート処理システムの設定は、プログラムによって、またはアプリケーション構成ファイルやマシン構成ファイルを使用して行います。これにより、管理者は、必要に応じて .NET Framework 構成ツールを使用して、さまざまなエンドポイントにあるリモート処理クライアントを指定したり、クライアント側でアクティブ化される (<activated>) オブジェクトまたはサーバー側でアクティブ化される (<wellknown>) オブジェクトの有効期間を変更したりできます。

<system.runtime.remoting> 要素の子である <application> 要素の内部に対象となるクラスを配置することにより、リモート 処理可能なクラスを登録します。1 つのアプリケーションが利用するオブジェクトは、<application> 要素内の <client> セクションの下のリモート アプリケーションによってグループ化されます。1 つのアプリケーションが公開するオブジェクトは、<application> ノード内の <service> セクションで宣言します。インターネット インフォメーション サービス (IIS: Internet Information Services) のリモート型を管理していない場合は、アクティベーション URL の一部になるアプリケーションの name 属性を指定できますが、これは一般的に不要です。IIS における管理の詳細については、「インターネット インフォメーション サービス (IIS) でのリモート オブジェクトの管理」を参照してください。

また、.NET リモート処理では、アプリケーション構成ファイルでリモート処理構成値が自動的に選択されません。構成ファイルを使用してリモート処理を構成するには、RemotingConfiguration.Configure を呼び出す必要があります。ホスト アプリケーション ドメインがリモート処理構成ファイルを自動的に読み込むのは、リモート処理可能な型が IIS で管理されている場合だけです。この場合は、.NET リモート処理で Web.config ファイルからサービスの設定だけが自動的に選択されます。RemotingConfiguration.Configure メソッドの直接呼び出しで構成ファイルが再び読み込まれるまで、クライアントの設定は無視されます。

.NET リモート処理を使用するアプリケーションを構成するために使用できる要素の構造体を次のスキーマに示します。

<configuration>
   <system.runtime.remoting>
      <application>
         <lifetime>
         <channels> (Instance)
            <channel> (Instance)
               <serverProviders> (Instance)
                  <provider> (Instance)
                  <formatter> (Instance)
               <clientProviders> (Instance)
                  <provider> (Instance)
                  <formatter> (Instance)
         <client>
            <wellknown> (Client Instance)
            <activated> (Client Instance)
         <service>
            <wellknown> (Service Instance)
            <activated> (Service Instance)
         <soapInterop>
            <interopXmlType>
            <interopXmlElement>
            <preLoad>
      <channels> (Template)
         <channel> (Template)
            <serverProviders> (Instance)
               <provider> (Instance)
               <formatter> (Instance)
            <clientProviders> (Instance)
               <provider> (Instance)
               <formatter> (Instance)
      <channelSinkProviders>
            <serverProviders> (Template)
               <provider> (Template)
               <formatter> (Template)
            <clientProviders> (Template)
               <provider> (Template)
               <formatter> (Template)
      <debug>

リモート処理設定を使用するには、アプリケーション構成ファイルの RemotingConfiguration.Configure を呼び出す必要があります。共通言語ランタイムによって、アプリケーション構成ファイルが読み込まれる前にマシン構成ファイルが自動的に読み込まれます。マシン構成ファイルの RemotingConfiguration.Configure を呼び出さないでください。RemotingConfiguration.Configure を呼び出すと、既にメモリに存在するオブジェクトを再度読み込むときに例外が発生します。

有効期間の設定

<lifetime> 要素を使用して、アプリケーションのすべてのクライアント側でアクティブ化されるオブジェクトとサーバー側でアクティブ化される Singleton オブジェクトの既定の有効期間を指定します。有効期間を設定する簡単なコード例を次に示します。

<configuration>
   <system.runtime.remoting>
     <application>
        <lifetime 
          leaseTime = "10M" 
          sponsorshipTimeOut = "2M"
          renewOnCallTime = "2M" 
          LeaseManagePollTime = "10s"
        />
     </application>
   </system.runtime.remoting>
</configuration>

プログラムによる設定と有効期間の概念の詳細については、「有効期間リース」を参照してください。

インスタンス要素とテンプレート要素

チャネル、テンプレート要素、およびインスタンス要素のビルドに関連する要素は 2 種類あります。テンプレート要素を使用すると、テンプレート要素の ID 属性を参照するだけで、同じアプリケーションの任意の場所で使用するチャネル、サーバーまたはクライアントのチャネル シンク プロバイダ、あるいはサーバーまたはクライアントのチャネル シンク フォーマッタを宣言できます。

メモ   テンプレートの要素内で type 属性を使用して、BinaryFormatter または HttpChannel など、システムによって実装される型を使用する既定の構成を作成する場合には、必ず、バージョン、カルチャ、および厳密な名前を含む完全な型情報を指定する必要があります。この情報は、machine.config ファイルから取得するか、グローバル アセンブリ キャッシュ ユーティリティ Gacutil.exe を使用して取得できます。型が、グローバル アセンブリ キャッシュ内にはないが場所を特定できるアセンブリ内で定義されている場合や、ref 属性を使用できるインスタンス要素で型を参照している場合は、この情報は必要ありません。

したがって、たとえば、"http" とは異なる名称で HttpChannel をビルドし、サーバー アプリケーションに使用する場合は、次のように構築します。

<configuration>
 <system.runtime.remoting>
    <application>
      <service>
        <wellknown 
          type="Type,Assembly" 
          mode="Singleton" 
          objectUri="endpoint"
        />
      </service>
      <channels>
        <channel ref="OtherChannel"/>
      </channel>
    </application>
    <channels>
      <channel 
        id="OtherChannel"
        type="CompleteTypeInformation including versiong and strong-name information"
      />
    </channels>
 </system.runtime.remoting>
</configuration>

参照

構成 | 構成ファイルを使用したリモート オブジェクトの登録 | RemotingConfiguration クラス | .NET リモート処理の概要 | チャネル | チャネルの登録 | サーバー側の登録 | クライアント側の登録 | チャネルの登録