WellKnownServiceTypeEntry クラス

サーバー側でアクティブ化される型オブジェクト (単一の呼び出しまたはシングルトン) としてサービス エンドに登録されたオブジェクト型の値を保持します。

この型のすべてのメンバの一覧については、WellKnownServiceTypeEntry メンバ を参照してください。

System.Object
   System.Runtime.Remoting.TypeEntry
      System.Runtime.Remoting.WellKnownServiceTypeEntry

Public Class WellKnownServiceTypeEntry
   Inherits TypeEntry
[C#]
public class WellKnownServiceTypeEntry : TypeEntry
[C++]
public __gc class WellKnownServiceTypeEntry : public TypeEntry
[JScript]
public class WellKnownServiceTypeEntry extends TypeEntry

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

サーバー側でアクティブ化されるオブジェクト型には、単一の呼び出しまたはシングルトンがあります。オブジェクト型が単一の呼び出しの場合は、クライアントからの呼び出しがあるたびに新しいインスタンスが作成されます。シングルトン オブジェクトへのすべての呼び出しは、そのオブジェクトの 1 つのインスタンスによって処理されます。

このオブジェクトの URI を知っているすべてのクライアントは、 ChannelServices で優先するチャネルを登録し、New または Activator.GetObject を呼び出してそのオブジェクトをアクティブにすることにより、このオブジェクト用にプロキシを取得できます。

登録処理によって、リモート オブジェクト自体は作成されないことに注意してください。これはクライアントがオブジェクト上のメソッドを呼び出そうとしたり、クライアント側からオブジェクトをアクティブにしたりする場合にだけ発生します。

サーバー側でアクティブ化されるオブジェクトとリモート オブジェクト アクティベーションの詳細については、「 アクティベーション 」を参照してください。

使用例

 
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http

Public Class MyServer
   
   Public Shared Sub Main()
      ' Create a 'HttpChannel' object and register it with the 
      ' channel services.
      ChannelServices.RegisterChannel(New HttpChannel(8086))
      ' Record the 'HelloServer' type as 'Singleton' well-known type.
      Dim myWellKnownServiceTypeEntry As New WellKnownServiceTypeEntry(GetType(HelloServer), _ 
                                                 "SayHello", WellKnownObjectMode.Singleton)
      ' Register the remote object as well-known type.
      RemotingConfiguration.RegisterWellKnownServiceType(myWellKnownServiceTypeEntry)
      ' Retrieve object types registered on the service end 
      ' as well-known types.
      Dim myWellKnownServiceTypeEntryCollection As WellKnownServiceTypeEntry() = _ 
                                      RemotingConfiguration.GetRegisteredWellKnownServiceTypes()
      Console.WriteLine("The 'WellKnownObjectMode' of the remote object : " + _
                                        myWellKnownServiceTypeEntryCollection(0).Mode.ToString())
      Console.WriteLine("The 'WellKnownServiceTypeEntry' object: " + _ 
                                             myWellKnownServiceTypeEntryCollection(0).ToString())
      Console.WriteLine("Started the Server, Hit <enter> to exit...")
      Console.ReadLine()
   End Sub 'Main
End Class 'MyServer

[C#] 
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class MyServer 
{
   public static void Main() 
   {
      // Create a 'HttpChannel' object and register it with the 
      // channel services.
      ChannelServices.RegisterChannel(new HttpChannel(8086));
      // Record the 'HelloServer' type as 'Singleton' well-known type.
      WellKnownServiceTypeEntry myWellKnownServiceTypeEntry= 
          new WellKnownServiceTypeEntry(typeof(HelloServer),
                                        "SayHello",
                                        WellKnownObjectMode.Singleton);
      // Register the remote object as well-known type.
      RemotingConfiguration.RegisterWellKnownServiceType(
                                          myWellKnownServiceTypeEntry);
      // Retrieve object types registered on the service end 
      // as well-known types.
      WellKnownServiceTypeEntry [] myWellKnownServiceTypeEntryCollection = 
            RemotingConfiguration.GetRegisteredWellKnownServiceTypes();
      Console.WriteLine("The 'WellKnownObjectMode' of the remote object : "
                       +myWellKnownServiceTypeEntryCollection[0].Mode);
      Console.WriteLine("The 'WellKnownServiceTypeEntry' object: "+
                  myWellKnownServiceTypeEntryCollection[0].ToString());
      Console.WriteLine("Started the Server, Hit <enter> to exit...");
      Console.ReadLine();
   }
}

[C++] 
#using <mscorlib.dll>
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using <WellKnownServiceTypeEntry_Share.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;

int main() 
{
   // Create a 'HttpChannel' object and register it with the 
   // channel services.
   ChannelServices::RegisterChannel(new HttpChannel(8086));
   // Record the 'HelloServer' type as 'Singleton' well-known type.
   WellKnownServiceTypeEntry* myWellKnownServiceTypeEntry= 
      new WellKnownServiceTypeEntry(__typeof(HelloServer),
                                    S"SayHello",
                                    WellKnownObjectMode::Singleton);
   // Register the remote object as well-known type.
   RemotingConfiguration::RegisterWellKnownServiceType(myWellKnownServiceTypeEntry);
   // Retrieve object types registered on the service end 
   // as well-known types.
   WellKnownServiceTypeEntry* myWellKnownServiceTypeEntryCollection[] = 
      RemotingConfiguration::GetRegisteredWellKnownServiceTypes();
   Console::WriteLine(S"The 'WellKnownObjectMode' of the remote object : {0}", __box(myWellKnownServiceTypeEntryCollection[0]->Mode));
   Console::WriteLine(S"The 'WellKnownServiceTypeEntry' object: {0}", myWellKnownServiceTypeEntryCollection[0]);
   Console::WriteLine(S"Started the Server, Hit <enter> to exit...");
   Console::ReadLine();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Runtime.Remoting

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

WellKnownServiceTypeEntry メンバ | System.Runtime.Remoting 名前空間 | RegisterWellKnownServiceType | サーバー アクティベーション