Partilhar via


IChannelDataStore Interface

Definição

Armazena dados de canal para os canais de comunicação remota.

public interface class IChannelDataStore
public interface IChannelDataStore
[System.Runtime.InteropServices.ComVisible(true)]
public interface IChannelDataStore
type IChannelDataStore = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type IChannelDataStore = interface
Public Interface IChannelDataStore
Derivado
Atributos

Exemplos

#using <System.Runtime.Remoting.dll>
#using <System.dll>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
using namespace System::Runtime::Remoting::Services;

// Marshal ByRef Object class.
public ref class MyServiceClass: public MarshalByRefObject
{
public:
   String^ HelloWorld()
   {
      return "Hello World";
   }
};

int main()
{
   TcpChannel^ myChannel = gcnew TcpChannel( 8085 );
   ChannelServices::RegisterChannel( myChannel );
   MyServiceClass^ myService = gcnew MyServiceClass;
   
   // After the channel is registered, register the object
   // with remoting infrastructure by calling Marshal method.
   ObjRef^ myObjRef = RemotingServices::Marshal( myService, "TcpService" );
   
   // Get the information contributed by active channel.
   IChannelInfo^ myChannelInfo = myObjRef->ChannelInfo;
   IChannelDataStore^ myIChannelData;
   System::Collections::IEnumerator^ myEnum = myChannelInfo->ChannelData->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ myChannelData = safe_cast<Object^>(myEnum->Current);
      if ( dynamic_cast<IChannelDataStore^>(myChannelData) )
      {
         myIChannelData = dynamic_cast<IChannelDataStore^>(myChannelData);
         System::Collections::IEnumerator^ myEnum1 = myIChannelData->ChannelUris->GetEnumerator();
         while ( myEnum1->MoveNext() )
         {
            String^ myUri = safe_cast<String^>(myEnum1->Current);
            Console::WriteLine( "Channel Uris are -> {0}", myUri );
         }
         String^ myKey = "Key1";
         myIChannelData[ myKey ] = "My Data";
         Console::WriteLine( myIChannelData[ myKey ] );
      }
   }
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Services;
using System.Security.Permissions;

public class ServerProcess
{
   public static void Main()
   {

      TcpChannel myChannel = new TcpChannel(8085);
      ChannelServices.RegisterChannel(myChannel);

      MyServiceClass myService  = new MyServiceClass();

      // After the channel is registered, register the object
      // with remoting infrastructure by calling Marshal method.
      ObjRef myObjRef = RemotingServices.Marshal(myService,"TcpService");

      // Get the information contributed by active channel.
      IChannelInfo myChannelInfo = myObjRef.ChannelInfo;
      IChannelDataStore myIChannelData;
      foreach(object myChannelData in myChannelInfo.ChannelData)
      {
         if(myChannelData is IChannelDataStore)
         {
            myIChannelData = (IChannelDataStore)myChannelData;
            foreach(string myUri in myIChannelData.ChannelUris)
               Console.WriteLine("Channel Uris are -> " + myUri);
            // Add custom data.
            string myKey = "Key1";
            myIChannelData[myKey] = "My Data";
            Console.WriteLine(myIChannelData[myKey].ToString());
         }
      }

   }
}

// Marshal ByRef Object class.
public class MyServiceClass : MarshalByRefObject
{
   public string HelloWorld()
   {
      return "Hello World";
   }
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Imports System.Runtime.Remoting.Services
Imports System.Security.Permissions

Public Class ServerProcess
   <PermissionSet(SecurityAction.LinkDemand)> _
   Public Shared Sub Main()
      Dim myChannel As New TcpChannel(8085)
      ChannelServices.RegisterChannel(myChannel)

      Dim myService As New MyServiceClass()

      ' After the channel is registered, register the object
      ' with remoting infrastructure by calling Marshal method.
      Dim myObjRef As ObjRef = RemotingServices.Marshal(myService, "TcpService")

      ' Get the information contributed by active channel.
      Dim myChannelInfo As IChannelInfo = myObjRef.ChannelInfo
      Dim myIChannelData As IChannelDataStore
      Dim myChannelData As Object
      For Each myChannelData In  myChannelInfo.ChannelData
         If TypeOf myChannelData Is IChannelDataStore Then
            myIChannelData = CType(myChannelData, IChannelDataStore)
            Dim myUri As String
            For Each myUri In  myIChannelData.ChannelUris
               Console.WriteLine("Channel Uris are -> " + myUri)
            Next myUri ' Add custom data.
            Dim myKey As String = "Key1"
            myIChannelData(myKey) = "My Data"
            Console.WriteLine(myIChannelData(myKey).ToString())
         End If
      Next myChannelData
   End Sub
End Class

' Marshal ByRef Object class.
Public Class MyServiceClass
   Inherits MarshalByRefObject

   Public Function HelloWorld() As String
      Return "Hello World"
   End Function 'HelloWorld
End Class

Comentários

Os canais que desejam usar a arquitetura do coletor de canal devem implementar essa interface em seu ChannelData objeto.

Propriedades

ChannelUris

Obtém uma matriz de URIs de canal para a qual o canal atual é mapeado.

Item[Object]

Obtém ou define o objeto de dados associado com a chave especificada para o canal de implementação.

Aplica-se a