Aracılığıyla paylaş


HttpChannel Sınıf

Tanım

İletileri iletmek için HTTP protokolunu kullanan uzak çağrılar için bir istemci kanalı uygular.

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
Devralma
Uygulamalar

Örnekler

Aşağıdaki kod örneğinde uzaktan iletişim sunucusunu ve istemcisini ayarlamak için nasıl kullanılacağı HttpClientChannel gösterilmektedir. Örnekte üç bölüm bulunur:

  • Bir sunucu

  • İstemci

  • Sunucu ve istemci tarafından kullanılan uzak nesne

Aşağıdaki kod örneğinde bir sunucu gösterilmektedir.

#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.");
    }
}

Aşağıdaki kod örneğinde bu sunucu için bir istemci gösterilmektedir.

#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());
    }
}

Aşağıdaki kod örneği, sunucu ve istemci tarafından kullanılan uzak nesneyi gösterir.

#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);
    }
}

Açıklamalar

Önemli

Güvenilmeyen verilerle bu sınıftan yöntemleri çağırmak bir güvenlik riskidir. Bu sınıftaki yöntemleri yalnızca güvenilen verilerle çağırın. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

Kanallar iletileri uzaktan iletişim sınırları (örneğin, bilgisayarlar veya uygulama etki alanları arasında) taşır. sınıfı, HttpChannel HTTP protokolunu kullanarak iletileri taşır.

Kanallar, uzaktan çağrıları taşımak için .NET Framework uzaktan iletişim altyapısı tarafından kullanılır. İstemci uzak bir nesneye çağrı yaptığında, çağrı bir istemci kanalı tarafından gönderilen ve bir sunucu kanalı tarafından alınan bir ileti halinde serileştirilir. Daha sonra seri durumdan çıkarılır ve işlenir. Döndürülen değerler sunucu kanalı tarafından iletilir ve istemci kanalı tarafından alınır.

Nesne HttpChannel , bir yapılandırma dosyasında (statik RemotingConfiguration.Configure yöntemi çağırarak) veya program aracılığıyla (bir koleksiyonu oluşturucuya geçirerek IDictionary ) çalışma zamanında ayarlanabilen ilişkili yapılandırma özelliklerine HttpChannel sahiptir.

Oluşturucular

Name Description
HttpChannel()

HttpChannel sınıfının yeni bir örneğini başlatır.

HttpChannel(IDictionary, IClientChannelSinkProvider, IServerChannelSinkProvider)

Belirtilen yapılandırma özellikleri ve havuzları ile sınıfının yeni bir örneğini HttpChannel başlatır.

HttpChannel(Int32)

Belirtilen bağlantı noktasını dinleyen bir sunucu kanalıyla sınıfının yeni bir örneğini HttpChannel başlatır.

Alanlar

Name Description
SinksWithProperties

Kanal havuzu yığınındaki en üst kanal havuzu gösterir.

(Devralındığı yer: BaseChannelWithProperties)

Özellikler

Name Description
ChannelData

Kanala özgü verileri alır.

ChannelName

Geçerli kanalın adını alır.

ChannelPriority

Geçerli kanalın önceliğini alır.

ChannelScheme

Bağlanacak dinleyici türünü alır (örneğin, "http").

ChannelSinkChain

Geçerli kanalın kullandığı kanal havuzu zincirini alır.

Count

Kanal nesnesiyle ilişkili özelliklerin sayısını alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
IsFixedSize

Kanal nesnesine girilebilen özelliklerin sayısının sabit olup olmadığını gösteren bir değer alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
IsReadOnly

Kanal nesnesindeki özellik koleksiyonunun salt okunur olup olmadığını gösteren bir değer alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
IsSecured

Geçerli kanalın güvenli olup olmadığını belirten bir Boole değeri alır veya ayarlar.

IsSynchronized

Kanal nesnesi özelliklerinin sözlüğün eşitlenip eşitlenmediğini gösteren bir değer alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
Item[Object]

Belirtilen kanal özelliğini döndürür.

Keys

Kanal özelliklerinin ilişkili olduğu anahtarlardan birini ICollection alır.

Properties

Geçerli kanalla ilişkili kanal özelliklerinden birini IDictionary alır.

SyncRoot

erişimi BaseChannelObjectWithPropertieseşitlemek için kullanılan bir nesnesi alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
Values

Kanal nesnesiyle ilişkili özelliklerin değerlerinin bir ICollection değerini alır.

(Devralındığı yer: BaseChannelObjectWithProperties)
WantsToListen

Geçerli örneğin dış dinleyici hizmetine bağlanmayı isteyip istemediğini gösteren bir Boole değeri alır.

Yöntemler

Name Description
Add(Object, Object)

Bir NotSupportedExceptionatar.

(Devralındığı yer: BaseChannelObjectWithProperties)
AddHookChannelUri(String)

Kanal kancasının dinlemesi gereken bir URI ekler.

Clear()

Bir NotSupportedExceptionatar.

(Devralındığı yer: BaseChannelObjectWithProperties)
Contains(Object)

Kanal nesnesinin belirtilen anahtarla ilişkili bir özellik içerip içermediğini gösteren bir değer döndürür.

(Devralındığı yer: BaseChannelObjectWithProperties)
CopyTo(Array, Int32)

Bir NotSupportedExceptionatar.

(Devralındığı yer: BaseChannelObjectWithProperties)
CreateMessageSink(String, Object, String)

İletileri belirtilen URL'ye veya kanal veri nesnesine teslim eden bir kanal ileti havuzu döndürür.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetEnumerator()

Kanal nesnesiyle ilişkili tüm özellikleri numaralandıran bir IDictionaryEnumerator döndürür.

(Devralındığı yer: BaseChannelObjectWithProperties)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
GetUrlsForUri(String)

Belirtilen URI'ye sahip bir nesne için geçerli HttpChannelüzerinde barındırılan tüm URL'lerden oluşan bir dizi döndürür.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
Parse(String, String)

Kanal URI'sini ve uzak iyi bilinen nesne URI'sini belirtilen URL'den ayıklar.

Remove(Object)

Bir NotSupportedExceptionatar.

(Devralındığı yer: BaseChannelObjectWithProperties)
StartListening(Object)

Geçerli kanala istekleri dinlemeye başlamasını sağlar.

StopListening(Object)

Geçerli kanala istekleri dinlemeyi durdurmasını emreder.

ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

Name Description
IEnumerable.GetEnumerator()

Kanal nesnesiyle ilişkili tüm özellikleri numaralandıran bir IEnumerator döndürür.

(Devralındığı yer: BaseChannelObjectWithProperties)

Uzantı Metotları

Name Description
AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

bir IEnumerable öğesine IQueryabledönüştürür.

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe yazar.

OfType<TResult>(IEnumerable)

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

Şunlara uygulanır