HttpClientChannel Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İletileri iletmek için HTTP protokolunu kullanan uzak çağrılar için bir istemci kanalı uygular.
public ref class HttpClientChannel : System::Runtime::Remoting::Channels::BaseChannelWithProperties, System::Runtime::Remoting::Channels::IChannelSender
public ref class HttpClientChannel : System::Runtime::Remoting::Channels::BaseChannelWithProperties, System::Runtime::Remoting::Channels::IChannelSender, System::Runtime::Remoting::Channels::ISecurableChannel
public class HttpClientChannel : System.Runtime.Remoting.Channels.BaseChannelWithProperties, System.Runtime.Remoting.Channels.IChannelSender
public class HttpClientChannel : System.Runtime.Remoting.Channels.BaseChannelWithProperties, System.Runtime.Remoting.Channels.IChannelSender, System.Runtime.Remoting.Channels.ISecurableChannel
type HttpClientChannel = class
inherit BaseChannelWithProperties
interface IChannelSender
interface IChannel
type HttpClientChannel = class
inherit BaseChannelWithProperties
interface IChannelSender
interface IChannel
interface ISecurableChannel
Public Class HttpClientChannel
Inherits BaseChannelWithProperties
Implements IChannelSender
Public Class HttpClientChannel
Inherits BaseChannelWithProperties
Implements IChannelSender, ISecurableChannel
- Devralma
- Uygulamalar
Örnekler
Aşağıdaki kod örneğinde uzaktan iletişim sunucusu ve istemcisini ayarlamak için nasıl kullanılacağı HttpClientChannel gösterilmektedir. Örnekte üç bölüm bulunur:
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üvenilir 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ı, HttpClientChannel 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 iletide seri hale getirilir. 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.
İstemci tarafında iletilerin ek işlenmesini gerçekleştirmek için, tarafından HttpClientChannel işlenen tüm iletilerin IClientChannelSinkProvider geçirildiği bir uygulamasını belirtebilirsiniz.
Varsayılan olarak, HttpServerChannel tüm iletileri seri hale getirmek için bir SOAP biçimlendirici kullanır.
Bir HttpClientChannel nesnenin çalışma zamanında 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 ) ayarlanabilen HttpClientChannel ilişkili yapılandırma özellikleri vardır. Bu yapılandırma özelliklerinin listesi için bkz. Kanal ve Biçimlendirici Yapılandırma Özellikleri.
Oluşturucular
HttpClientChannel() |
HttpClientChannel sınıfının yeni bir örneğini başlatır. |
HttpClientChannel(IDictionary, IClientChannelSinkProvider) |
Belirtilen yapılandırma özellikleri ve havuz ile sınıfının yeni bir örneğini HttpClientChannel başlatır. |
HttpClientChannel(String, IClientChannelSinkProvider) |
Belirtilen ad ve havuz ile sınıfının yeni bir örneğini HttpClientChannel başlatır. |
Alanlar
SinksWithProperties |
Kanal havuzu yığınındaki en üst kanal havuzu gösterir. (Devralındığı yer: BaseChannelWithProperties) |
Özellikler
ChannelName |
Geçerli kanalın adını alır. |
ChannelPriority |
Geçerli kanalın önceliğini 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 |
İstemci kanalının güvenli olup olmadığını 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 kanal nesnesiyle ilişkili kanal özelliklerinden birini IDictionary alır. (Devralındığı yer: BaseChannelWithProperties) |
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) |
Yöntemler
Add(Object, Object) |
Bir NotSupportedExceptionoluşturur. (Devralındığı yer: BaseChannelObjectWithProperties) |
Clear() |
Bir NotSupportedExceptionoluşturur. (Devralındığı yer: BaseChannelObjectWithProperties) |
Contains(Object) |
Kanal nesnesinin belirtilen anahtarla ilişkilendirilmiş bir özellik içerip içermediğini gösteren bir değer döndürür. (Devralındığı yer: BaseChannelObjectWithProperties) |
CopyTo(Array, Int32) |
Bir NotSupportedExceptionoluşturur. (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() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
Parse(String, String) |
Belirtilen URL'den kanal URI'sini ve uzak iyi bilinen nesne URI'sini ayıklar. |
Remove(Object) |
Bir NotSupportedExceptionoluşturur. (Devralındığı yer: BaseChannelObjectWithProperties) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
IEnumerable.GetEnumerator() |
Kanal nesnesiyle ilişkili tüm özellikleri numaralandıran bir IEnumerator döndürür. (Devralındığı yer: BaseChannelObjectWithProperties) |
Uzantı Metotları
Cast<TResult>(IEnumerable) |
öğesinin IEnumerable öğelerini belirtilen türe atar. |
OfType<TResult>(IEnumerable) |
Öğesinin IEnumerable öğelerini belirtilen türe göre filtreler. |
AsParallel(IEnumerable) |
Sorgunun paralelleştirilmesini etkinleştirir. |
AsQueryable(IEnumerable) |
bir IEnumerable öğesini öğesine IQueryabledönüştürür. |