Aracılığıyla paylaş


RemotingConfiguration.RegisterActivatedServiceType Yöntem

Tanım

Hizmet ucundaki bir nesneyi istemciden istek üzerine etkinleştirilebilen bir nesne Type olarak kaydeder.

Aşırı Yüklemeler

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Hizmet ucunda sağlanan ActivatedServiceTypeEntry öğesine kaydedilen bir nesne türünü, bir istemciden gelen istek üzerine etkinleştirilebilen bir nesne türü olarak kaydeder.

RegisterActivatedServiceType(Type)

Belirtilen nesne türünü bir istemciden istek üzerine etkinleştirilebilen bir tür olarak hizmet ucuna kaydeder.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Hizmet ucunda sağlanan ActivatedServiceTypeEntry öğesine kaydedilen bir nesne türünü, bir istemciden gelen istek üzerine etkinleştirilebilen bir nesne türü olarak kaydeder.

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)

Parametreler

entry
ActivatedServiceTypeEntry

İstemci tarafından etkinleştirilen tür için yapılandırma ayarları.

Özel durumlar

Çağrı yığınındaki en üstteki arayanlardan en az birinin uzaktan iletişim türlerini ve kanallarını yapılandırma izni yoktur.

Açıklamalar

Sunucuda istemci tarafından etkinleştirilmiş bir nesnenin örneğini oluşturmak için, nesnesini Type bilmeniz ve yöntemini kullanarak RegisterActivatedServiceType sunucu ucuna kaydedilmesi gerekir. İstemci tarafından etkinleştirilen nesnenin yeni bir örneği için ara sunucu elde etmek için, istemcinin önce ile ChannelServices bir kanal kaydetmesi ve ardından veya Activator.CreateInstanceçağırarak new nesnesini etkinleştirmesi gerekir.

İstemci tarafından etkinleştirilmiş bir nesne türünü anahtar sözcüğüyle new etkinleştirmek için, önce yöntemini kullanarak nesne türünü istemci ucuna RegisterActivatedClientType kaydetmeniz gerekir. yöntemini çağırmak RegisterActivatedClientType uzaktan iletişim altyapısına uzak uygulamanın konumunu verir ve new bu konumu oluşturma girişiminde bulunur. Öte yandan, istemci tarafından etkinleştirilen nesnenin yeni bir örneğini oluşturmak için yöntemini kullanırsanız CreateInstance , uzak uygulamanın URL'sini parametre olarak sağlamanız gerekir, bu nedenle istemci ucunda önceden kayıt yapılması gerekmez. CreateInstance yöntemini, nesnesini oluşturmak istediğiniz sunucunun URL'sini sağlamak için URL'yi sınıfın UrlAttribute bir örneğinde kapsüllemeniz gerekir.

İstemci tarafından etkinleştirilen nesnelerin ayrıntılı açıklaması için bkz. İstemci Etkinleştirme.

Ayrıca bkz.

Şunlara uygulanır

RegisterActivatedServiceType(Type)

Belirtilen nesne türünü bir istemciden istek üzerine etkinleştirilebilen bir tür olarak hizmet ucuna kaydeder.

public:
 static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)

Parametreler

type
Type

Type Kaydedilecek nesnenin.

Özel durumlar

Çağrı yığınındaki en üstteki arayanlardan en az birinin uzaktan iletişim türlerini ve kanallarını yapılandırma izni yoktur.

Örnekler

Aşağıdaki kod örneği, sunucudaki bir nesne türünün istemci tarafından etkinleştirilebilen bir tür olarak kaydını gösterir. Sunulan sunucu koduna karşılık gelen istemci kodu için yöntemi örneğine RegisterActivatedClientType bakın.

#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

Aşağıdaki kod örneği, yukarıdaki örnek kodda kayıtlı hizmet nesnesini gösterir.

#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

Açıklamalar

Sunucuda istemci tarafından etkinleştirilmiş bir nesnenin örneğini oluşturmak için, nesnesini Type bilmeniz ve yöntemini kullanarak RegisterActivatedServiceType sunucu ucuna kaydedilmesi gerekir. İstemci tarafından etkinleştirilen nesnenin yeni bir örneği için ara sunucu elde etmek için, istemcinin önce ile ChannelServices bir kanal kaydetmesi ve ardından veya Activator.CreateInstanceçağırarak new nesnesini etkinleştirmesi gerekir.

İstemci tarafından etkinleştirilmiş bir nesne türünü anahtar sözcüğüyle new etkinleştirmek için, önce yöntemini kullanarak nesne türünü istemci ucuna RegisterActivatedClientType kaydetmeniz gerekir. yöntemini çağırmak RegisterActivatedClientType uzaktan iletişim altyapısına uzak uygulamanın konumunu verir ve new bu konumu oluşturma girişiminde bulunur. Öte yandan, istemci tarafından etkinleştirilen nesnenin yeni bir örneğini oluşturmak için yöntemini kullanırsanız CreateInstance , uzak uygulamanın URL'sini parametre olarak sağlamanız gerekir, bu nedenle istemci ucunda önceden kayıt yapılması gerekmez. CreateInstance yöntemini, nesnesini oluşturmak istediğiniz sunucunun URL'sini sağlamak için URL'yi sınıfın UrlAttribute bir örneğinde kapsüllemeniz gerekir.

İstemci tarafından etkinleştirilen nesnelerin ayrıntılı açıklaması için bkz. İstemci Etkinleştirme.

Ayrıca bkz.

Şunlara uygulanır