HttpChannel Klas

Definitie

Hiermee wordt een clientkanaal geïmplementeerd voor externe aanroepen die gebruikmaken van het HTTP-protocol voor het verzenden van berichten.

public ref class HttpChannel : System::Runtime::Remoting::Channels::BaseChannelWithProperties, System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::IChannelReceiverHook, System::Runtime::Remoting::Channels::IChannelSender
public ref class HttpChannel : System::Runtime::Remoting::Channels::BaseChannelWithProperties, System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::IChannelReceiverHook, System::Runtime::Remoting::Channels::IChannelSender, System::Runtime::Remoting::Channels::ISecurableChannel
public class HttpChannel : System.Runtime.Remoting.Channels.BaseChannelWithProperties, System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.IChannelReceiverHook, System.Runtime.Remoting.Channels.IChannelSender
public class HttpChannel : System.Runtime.Remoting.Channels.BaseChannelWithProperties, System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.IChannelReceiverHook, System.Runtime.Remoting.Channels.IChannelSender, System.Runtime.Remoting.Channels.ISecurableChannel
type HttpChannel = class
    inherit BaseChannelWithProperties
    interface IChannelReceiver
    interface IChannelSender
    interface IChannel
    interface IChannelReceiverHook
type HttpChannel = class
    inherit BaseChannelWithProperties
    interface IChannelReceiver
    interface IChannelSender
    interface IChannel
    interface IChannelReceiverHook
    interface ISecurableChannel
type HttpChannel = class
    inherit BaseChannelWithProperties
    interface IChannelReceiver
    interface IChannel
    interface IChannelSender
    interface IChannelReceiverHook
    interface ISecurableChannel
Public Class HttpChannel
Inherits BaseChannelWithProperties
Implements IChannelReceiver, IChannelReceiverHook, IChannelSender
Public Class HttpChannel
Inherits BaseChannelWithProperties
Implements IChannelReceiver, IChannelReceiverHook, IChannelSender, ISecurableChannel
Overname
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een HttpClientChannel externe server en de bijbehorende client kunt instellen. Het voorbeeld bevat drie onderdelen:

  • Een server

  • Een client

  • Een extern object dat wordt gebruikt door de server en de client

In het volgende codevoorbeeld ziet u een server.

#using <System.dll>
#using <System.Runtime.Remoting.dll>
#using "common.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;

void main()
{
   // Create the server channel.
   HttpServerChannel^ serverChannel = gcnew HttpServerChannel( 9090 );
   
   // Register the server channel.
   ChannelServices::RegisterChannel( serverChannel );
   
   // Expose an object for remote calls.
   RemotingConfiguration::RegisterWellKnownServiceType( RemoteObject::typeid, L"RemoteObject.rem", WellKnownObjectMode::Singleton );
   
   // Wait for the user prompt.
   Console::WriteLine( L"Press ENTER to exit the server." );
   Console::ReadLine();
   Console::WriteLine( L"The server is exiting." );
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class Server
{
    public static void Main(string[] args)
    {
        // Create the server channel.
        HttpServerChannel serverChannel = new HttpServerChannel(9090);

        // Register the server channel.
        ChannelServices.RegisterChannel(serverChannel);

        // Expose an object for remote calls.
        RemotingConfiguration.RegisterWellKnownServiceType(
            typeof(RemoteObject), "RemoteObject.rem",
            WellKnownObjectMode.Singleton);

        // Wait for the user prompt.
        Console.WriteLine("Press ENTER to exit the server.");
        Console.ReadLine();
        Console.WriteLine("The server is exiting.");
    }
}

In het volgende codevoorbeeld ziet u een client voor deze server.

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

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;
void main()
{
   // Create the channel.
   HttpClientChannel^ clientChannel = gcnew HttpClientChannel;

   // Register the channel.
   ChannelServices::RegisterChannel( clientChannel );

   // Register as client for remote object.
   WellKnownClientTypeEntry^ remoteType = gcnew WellKnownClientTypeEntry( RemoteObject::typeid,L"http://localhost:9090/RemoteObject.rem" );
   RemotingConfiguration::RegisterWellKnownClientType( remoteType );

   // Create a message sink.
   String^ objectUri;
   System::Runtime::Remoting::Messaging::IMessageSink^ messageSink = clientChannel->CreateMessageSink( L"http://localhost:9090/RemoteObject.rem", nullptr,  objectUri );
   Console::WriteLine( L"The URI of the message sink is {0}.", objectUri );
   if ( messageSink != nullptr )
   {
      Console::WriteLine( L"The type of the message sink is {0}.", messageSink->GetType() );
   }

   // Display the channel's properties using Keys and Item.
   for each(String^ key in clientChannel->Keys)
   {
       Console::WriteLine("clientChannel[{0}] = <{1}>", key, clientChannel[key]);
   }

   // Parse the channel's URI.
   String^ objectUrl = L"http://localhost:9090/RemoteObject.rem";
   String^ channelUri = clientChannel->Parse( objectUrl,  objectUri );
   Console::WriteLine( L"The object URL is {0}.", objectUrl );
   Console::WriteLine( L"The object URI is {0}.", objectUri );
   Console::WriteLine( L"The channel URI is {0}.", channelUri );

   // Create an instance of the remote object.
   RemoteObject^ service = gcnew RemoteObject;
   
   // Invoke a method on the remote object.
   Console::WriteLine( L"The client is invoking the remote object." );
   Console::WriteLine( L"The remote object has been called {0} times.", service->GetCount() );
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class Client
{
    public static void Main(string[] args)
    {
        // Create the channel.
        HttpClientChannel clientChannel = new HttpClientChannel();

        // Register the channel.
        ChannelServices.RegisterChannel(clientChannel);

        // Register as client for remote object.
        WellKnownClientTypeEntry remoteType =
            new WellKnownClientTypeEntry(typeof(RemoteObject),
            "http://localhost:9090/RemoteObject.rem");
        RemotingConfiguration.RegisterWellKnownClientType(remoteType);

        // Create a message sink.
        string objectUri;
        System.Runtime.Remoting.Messaging.IMessageSink messageSink =
            clientChannel.CreateMessageSink(
            "http://localhost:9090/RemoteObject.rem",
            null, out objectUri);
        Console.WriteLine(
            "The URI of the message sink is {0}.",
            objectUri);
        if (messageSink != null)
        {
            Console.WriteLine("The type of the message sink is {0}.",
                messageSink.GetType().ToString());
        }

        // Display the channel's properties using Keys and Item.
        foreach(string key in clientChannel.Keys)
        {
            Console.WriteLine(
                "clientChannel[{0}] = <{1}>",
                key, clientChannel[key]);
        }

        // Parse the channel's URI.
        string objectUrl = "http://localhost:9090/RemoteObject.rem";
        string channelUri = clientChannel.Parse(objectUrl, out objectUri);
        Console.WriteLine("The object URL is {0}.", objectUrl);
        Console.WriteLine("The object URI is {0}.", objectUri);
        Console.WriteLine("The channel URI is {0}.", channelUri);

        // Create an instance of the remote object.
        RemoteObject service = new RemoteObject();

        // Invoke a method on the remote object.
        Console.WriteLine("The client is invoking the remote object.");
        Console.WriteLine("The remote object has been called {0} times.",
            service.GetCount());
    }
}

In het volgende codevoorbeeld ziet u het externe object dat wordt gebruikt door de server en de client.

#using <System.dll>
using namespace System;
using namespace System::Runtime::Remoting;

// Remote object.
public ref class RemoteObject: public MarshalByRefObject
{
private:
   static int callCount = 0;

public:
   int GetCount()
   {
      Console::WriteLine( L"GetCount was called." );
      callCount++;
      return (callCount);
   }

};
using System;
using System.Runtime.Remoting;

// Remote object.
public class RemoteObject : MarshalByRefObject
{
    private int callCount = 0;

    public int GetCount()
    {
        Console.WriteLine("GetCount was called.");
        callCount++;
        return(callCount);
    }
}

Opmerkingen

Important

Het aanroepen van methoden uit deze klasse met niet-vertrouwde gegevens is een beveiligingsrisico. Roep de methoden van deze klasse alleen aan met vertrouwde gegevens. Zie Alle invoergegevens validerenvoor meer informatie.

Kanalen transporteren berichten over externe grenzen (bijvoorbeeld tussen computers of toepassingsdomeinen). De HttpChannel klasse transporteert berichten met behulp van het HTTP-protocol.

Kanalen worden gebruikt door de externe infrastructuur van het .NET Framework voor het transport van externe aanroepen. Wanneer een client een aanroep naar een extern object doet, wordt de aanroep geserialiseerd in een bericht dat wordt verzonden door een clientkanaal en wordt ontvangen door een serverkanaal. Het wordt vervolgens gedeserialiseerd en verwerkt. Geretourneerde waarden worden verzonden door het serverkanaal en ontvangen door het clientkanaal.

Een HttpChannel object heeft configuratie-eigenschappen die tijdens runtime kunnen worden ingesteld in een configuratiebestand (door de statische RemotingConfiguration.Configure methode aan te roepen) of programmatisch (door een IDictionary verzameling door te geven aan de HttpChannel constructor). Zie Eigenschappen voor kanaal- en opmaakconfiguratie voor een lijst met deze configuratie-eigenschappen.

Constructors

Name Description
HttpChannel()

Initialiseert een nieuw exemplaar van de HttpChannel klasse.

HttpChannel(IDictionary, IClientChannelSinkProvider, IServerChannelSinkProvider)

Initialiseert een nieuw exemplaar van de HttpChannel klasse met de opgegeven configuratie-eigenschappen en sinks.

HttpChannel(Int32)

Initialiseert een nieuw exemplaar van de HttpChannel klasse met een serverkanaal dat luistert op de opgegeven poort.

Velden

Name Description
SinksWithProperties

Geeft de bovenste kanaalsink in de kanaalsinkstack aan.

(Overgenomen van BaseChannelWithProperties)

Eigenschappen

Name Description
ChannelData

Haalt de kanaalspecifieke gegevens op.

ChannelName

Hiermee haalt u de naam van het huidige kanaal op.

ChannelPriority

Hiermee krijgt u de prioriteit van het huidige kanaal.

ChannelScheme

Hiermee wordt het type listener opgehaald dat moet worden gekoppeld (bijvoorbeeld 'http').

ChannelSinkChain

Hiermee haalt u de kanaalsinkketen op die door het huidige kanaal wordt gebruikt.

Count

Hiermee wordt het aantal eigenschappen opgehaald dat is gekoppeld aan het kanaalobject.

(Overgenomen van BaseChannelObjectWithProperties)
IsFixedSize

Hiermee wordt een waarde opgehaald die aangeeft of het aantal eigenschappen dat in het kanaalobject kan worden ingevoerd, is opgelost.

(Overgenomen van BaseChannelObjectWithProperties)
IsReadOnly

Hiermee wordt een waarde opgehaald die aangeeft of de verzameling eigenschappen in het kanaalobject alleen-lezen is.

(Overgenomen van BaseChannelObjectWithProperties)
IsSecured

Hiermee wordt een Booleaanse waarde opgehaald of ingesteld die aangeeft of het huidige kanaal veilig is.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de woordenlijst van kanaalobjecteigenschappen wordt gesynchroniseerd.

(Overgenomen van BaseChannelObjectWithProperties)
Item[Object]

Retourneert de opgegeven kanaaleigenschap.

Keys

Hiermee haalt u een ICollection aantal sleutels op waaraan de kanaaleigenschappen zijn gekoppeld.

Properties

Hiermee haalt u een IDictionary van de kanaaleigenschappen op die zijn gekoppeld aan het huidige kanaal.

SyncRoot

Hiermee haalt u een object op dat wordt gebruikt om de toegang tot de BaseChannelObjectWithProperties.

(Overgenomen van BaseChannelObjectWithProperties)
Values

Hiermee haalt u een ICollection van de waarden op van de eigenschappen die zijn gekoppeld aan het kanaalobject.

(Overgenomen van BaseChannelObjectWithProperties)
WantsToListen

Hiermee wordt een Booleaanse waarde opgehaald die aangeeft of het huidige exemplaar wil worden gekoppeld aan de externe listenerservice.

Methoden

Name Description
Add(Object, Object)

Gooit een NotSupportedException.

(Overgenomen van BaseChannelObjectWithProperties)
AddHookChannelUri(String)

Hiermee voegt u een URI toe waarop de kanaalhook moet luisteren.

Clear()

Gooit een NotSupportedException.

(Overgenomen van BaseChannelObjectWithProperties)
Contains(Object)

Retourneert een waarde die aangeeft of het kanaalobject een eigenschap bevat die is gekoppeld aan de opgegeven sleutel.

(Overgenomen van BaseChannelObjectWithProperties)
CopyTo(Array, Int32)

Gooit een NotSupportedException.

(Overgenomen van BaseChannelObjectWithProperties)
CreateMessageSink(String, Object, String)

Retourneert een kanaalberichtsink die berichten levert aan de opgegeven URL of het opgegeven kanaalgegevensobject.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een IDictionaryEnumerator opsomming van alle eigenschappen die zijn gekoppeld aan het kanaalobject.

(Overgenomen van BaseChannelObjectWithProperties)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetUrlsForUri(String)

Retourneert een matrix van alle URL's voor een object met de opgegeven URI, gehost op de huidige HttpChannel.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Parse(String, String)

Extraheert de kanaal-URI en de externe bekende object-URI uit de opgegeven URL.

Remove(Object)

Gooit een NotSupportedException.

(Overgenomen van BaseChannelObjectWithProperties)
StartListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te beginnen met luisteren naar aanvragen.

StopListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te stoppen met luisteren naar aanvragen.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
IEnumerable.GetEnumerator()

Retourneert een IEnumerator opsomming van alle eigenschappen die zijn gekoppeld aan het kanaalobject.

(Overgenomen van BaseChannelObjectWithProperties)

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Zie ook