RemotingConfiguration.RegisterActivatedServiceType メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
クライアントからの要求に基づいてアクティブにできる型として、サービス エンドでオブジェクト Type を登録します。
オーバーロード
RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
クライアントからの要求に基づいてアクティブにできる型として、サービス エンドで提供される ActivatedServiceTypeEntry に記録されているオブジェクト型を登録します。 |
RegisterActivatedServiceType(Type) |
クライアントからの要求に基づいてアクティブにできる型として、サービス エンドで指定したオブジェクト型を登録します。 |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
クライアントからの要求に基づいてアクティブにできる型として、サービス エンドで提供される ActivatedServiceTypeEntry に記録されているオブジェクト型を登録します。
public:
static void RegisterActivatedServiceType(System::Runtime::Remoting::ActivatedServiceTypeEntry ^ entry);
public static void RegisterActivatedServiceType (System.Runtime.Remoting.ActivatedServiceTypeEntry entry);
static member RegisterActivatedServiceType : System.Runtime.Remoting.ActivatedServiceTypeEntry -> unit
Public Shared Sub RegisterActivatedServiceType (entry As ActivatedServiceTypeEntry)
パラメーター
クライアント側でアクティブ化される型の構成設定。
例外
コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。
注釈
サーバー上にクライアントでアクティブ化されたオブジェクトのインスタンスを作成するには、その Type インスタンスを認識している必要があり、 メソッドを使用 RegisterActivatedServiceType してサーバー側に登録する必要があります。 クライアントでアクティブ化されたオブジェクトの新しいインスタンスのプロキシを取得するには、クライアントが最初に にチャネルChannelServicesを登録してから、 または Activator.CreateInstanceを呼び出new
してオブジェクトをアクティブ化する必要があります。
キーワードを使用してクライアントでアクティブ化されたオブジェクト型を new
アクティブ化するには、 メソッドを使用して最初にクライアント側でオブジェクト型を登録する RegisterActivatedClientType 必要があります。 メソッドを RegisterActivatedClientType 呼び出すと、リモート処理インフラストラクチャにリモート アプリケーションの場所が与え、リモート アプリケーションの作成が new
試行されます。 一方、 メソッドを使用 CreateInstance してクライアントでアクティブ化されたオブジェクトの新しいインスタンスを作成する場合は、リモート アプリケーションの URL をパラメーターとして指定する必要があるため、クライアント側での事前登録は必要ありません。 オブジェクトを CreateInstance 作成するサーバーの URL を メソッドに指定するには、 クラスのインスタンスに URL をカプセル化する UrlAttribute 必要があります。
クライアントでアクティブ化されたオブジェクトの詳細については、「クライアントの アクティブ化」を参照してください。
こちらもご覧ください
適用対象
RegisterActivatedServiceType(Type)
クライアントからの要求に基づいてアクティブにできる型として、サービス エンドで指定したオブジェクト型を登録します。
public:
static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)
パラメーター
例外
コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。
例
次のコード例では、クライアントによってアクティブ化できる型としてサーバー上のオブジェクト型を登録する方法を示します。 提示されたサーバー コードに対応するクライアント コードについては、 メソッドの例を RegisterActivatedClientType 参照してください。
#using <system.dll>
#using <system.runtime.remoting.dll>
#using "service.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
int main()
{
ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
RemotingConfiguration::RegisterActivatedServiceType( HelloServiceClass::typeid );
Console::WriteLine( "Press enter to stop this process." );
Console::ReadLine();
return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class ServerClass {
public static void Main() {
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServiceClass));
Console.WriteLine("Press enter to stop this process.");
Console.ReadLine();
}
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class ServerClass
Public Shared Sub Main()
ChannelServices.RegisterChannel(New TcpChannel(8082))
RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServiceClass))
Console.WriteLine("Press enter to stop this process.")
Console.ReadLine()
End Sub
End Class
次のコード例は、上記のサンプル コードに登録されているサービス オブジェクトを示しています。
#using <system.dll>
using namespace System;
public ref class HelloServiceClass: public MarshalByRefObject
{
private:
static int n_instance;
public:
HelloServiceClass()
{
n_instance++;
Console::WriteLine( "{0} has been created. Instance # = {1}", this->GetType()->Name, n_instance );
}
~HelloServiceClass()
{
Console::WriteLine( "Destroyed instance {0} of HelloServiceClass.", n_instance );
n_instance--;
}
String^ HelloMethod( String^ name )
{
// Reports that the method was called.
Console::WriteLine();
Console::WriteLine( "Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name );
// Calculates and returns the result to the client.
return String::Format( "Hi there {0}", name );
}
};
using System;
public class HelloServiceClass : MarshalByRefObject {
static int n_instance;
public HelloServiceClass() {
n_instance++;
Console.WriteLine(this.GetType().Name + " has been created. Instance # = {0}", n_instance);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance);
n_instance --;
}
public String HelloMethod(String name) {
// Reports that the method was called.
Console.WriteLine();
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.",
n_instance, name);
// Calculates and returns the result to the client.
return "Hi there " + name + ".";
}
}
Public Class HelloServiceClass
Inherits MarshalByRefObject
Private Shared n_instance As Integer
Public Sub New()
n_instance += 1
Console.WriteLine(Me.GetType().Name + " has been created. Instance # = {0}", n_instance)
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance)
n_instance -= 1
MyBase.Finalize()
End Sub
Public Function HelloMethod(name As [String]) As [String]
' Reports that the method was called.
Console.WriteLine()
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name)
' Calculates and returns the result to the client.
Return "Hi there " + name + "."
End Function 'HelloMethod
End Class
注釈
サーバー上にクライアントでアクティブ化されたオブジェクトのインスタンスを作成するには、その Type インスタンスを認識している必要があり、 メソッドを使用 RegisterActivatedServiceType してサーバー側に登録する必要があります。 クライアントでアクティブ化されたオブジェクトの新しいインスタンスのプロキシを取得するには、クライアントが最初に にチャネルChannelServicesを登録してから、 または Activator.CreateInstanceを呼び出new
してオブジェクトをアクティブ化する必要があります。
キーワードを使用してクライアントでアクティブ化されたオブジェクト型を new
アクティブ化するには、 メソッドを使用して最初にクライアント側でオブジェクト型を登録する RegisterActivatedClientType 必要があります。 メソッドを RegisterActivatedClientType 呼び出すと、リモート処理インフラストラクチャにリモート アプリケーションの場所が与え、リモート アプリケーションの作成が new
試行されます。 一方、 メソッドを使用 CreateInstance してクライアントでアクティブ化されたオブジェクトの新しいインスタンスを作成する場合は、リモート アプリケーションの URL をパラメーターとして指定する必要があるため、クライアント側での事前登録は必要ありません。 オブジェクトを CreateInstance 作成するサーバーの URL を メソッドに指定するには、 クラスのインスタンスに URL をカプセル化する UrlAttribute 必要があります。
クライアントでアクティブ化されたオブジェクトの詳細については、「クライアントの アクティブ化」を参照してください。
こちらもご覧ください
適用対象
.NET