HttpServerChannel 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 sunucu kanalı uygular.
public ref class HttpServerChannel : System::Runtime::Remoting::Channels::BaseChannelWithProperties, System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::IChannelReceiverHook
public class HttpServerChannel : System.Runtime.Remoting.Channels.BaseChannelWithProperties, System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.IChannelReceiverHook
type HttpServerChannel = class
inherit BaseChannelWithProperties
interface IChannelReceiver
interface IChannel
interface IChannelReceiverHook
Public Class HttpServerChannel
Inherits BaseChannelWithProperties
Implements IChannelReceiver, IChannelReceiverHook
- Devralma
- Uygulamalar
Örnekler
Aşağıdaki kod örneğinde uzaktan HttpServerChannel iletişim sunucusu ve istemcisi ayarlamak için bir nesnenin nasıl kullanılacağı 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;
int main()
{
// Create the server channel.
HttpServerChannel^ serverChannel = gcnew HttpServerChannel( 9090 );
// Register the server channel.
ChannelServices::RegisterChannel( serverChannel );
// Display the channel's scheme.
Console::WriteLine( L"The channel scheme is {0}.", serverChannel->ChannelScheme );
// Display the channel's URI.
Console::WriteLine( L"The channel URI is {0}.", serverChannel->GetChannelUri() );
// Expose an object for remote calls.
RemotingConfiguration::RegisterWellKnownServiceType(
RemoteObject::typeid, L"RemoteObject.rem", WellKnownObjectMode::Singleton );
// Get the channel's sink chain.
IServerChannelSink^ sinkChain = serverChannel->ChannelSinkChain;
Console::WriteLine( L"The type of the server channel's sink chain is {0}.", sinkChain->GetType() );
// See if the channel wants to listen.
bool wantsToListen = serverChannel->WantsToListen;
Console::WriteLine( L"The value of WantsToListen is {0}.", wantsToListen );
// Parse the channel's URI.
array<String^>^ urls = serverChannel->GetUrlsForUri( L"RemoteObject.rem" );
if ( urls->Length > 0 )
{
String^ objectUrl = urls[ 0 ];
String^ objectUri;
String^ channelUri = serverChannel->Parse( objectUrl, objectUri );
Console::WriteLine( L"The object URI is {0}.", objectUri );
Console::WriteLine( L"The channel URI is {0}.", channelUri );
Console::WriteLine( L"The object URL is {0}.", objectUrl );
}
// 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);
// Display the channel's scheme.
Console.WriteLine("The channel scheme is {0}.",
serverChannel.ChannelScheme);
// Display the channel's URI.
Console.WriteLine("The channel URI is {0}.",
serverChannel.GetChannelUri());
// Expose an object for remote calls.
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemoteObject), "RemoteObject.rem",
WellKnownObjectMode.Singleton);
// Get the channel's sink chain.
IServerChannelSink sinkChain = serverChannel.ChannelSinkChain;
Console.WriteLine(
"The type of the server channel's sink chain is {0}.",
sinkChain.GetType().ToString());
// See if the channel wants to listen.
bool wantsToListen = serverChannel.WantsToListen;
Console.WriteLine(
"The value of WantsToListen is {0}.",
wantsToListen);
// Parse the channel's URI.
string[] urls = serverChannel.GetUrlsForUri("RemoteObject.rem");
if (urls.Length > 0)
{
string objectUrl = urls[0];
string objectUri;
string channelUri =
serverChannel.Parse(objectUrl, out objectUri);
Console.WriteLine("The object URI is {0}.", objectUri);
Console.WriteLine("The channel URI is {0}.", channelUri);
Console.WriteLine("The object URL is {0}.", objectUrl);
}
// 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^ channel = gcnew HttpClientChannel;
// Register the channel.
ChannelServices::RegisterChannel( channel );
// Register as client for remote object.
WellKnownClientTypeEntry^ remoteType = gcnew WellKnownClientTypeEntry(
RemoteObject::typeid,L"http://localhost:9090/RemoteObject.rem" );
RemotingConfiguration::RegisterWellKnownClientType( remoteType );
// 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 channel = new HttpClientChannel();
// Register the channel.
ChannelServices.RegisterChannel(channel);
// Register as client for remote object.
WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(
typeof(RemoteObject),"http://localhost:9090/RemoteObject.rem");
RemotingConfiguration.RegisterWellKnownClientType(remoteType);
// 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 namespace System;
using namespace System::Runtime::Remoting;
// Remote object.
public ref class RemoteObject: public MarshalByRefObject
{
private:
static int callCount = 0;
public:
int GetCount()
{
callCount++;
return (callCount);
}
};
using System;
using System.Runtime.Remoting;
// Remote object.
public class RemoteObject : MarshalByRefObject
{
private int callCount = 0;
public int GetCount()
{
callCount++;
return(callCount);
}
}
Açıklamalar
Kanallar iletileri uzaktan iletişim sınırları arasında (örneğin, uygulama etki alanlarındaki bilgisayarlar arasında) taşır. sınıfı, HttpServerChannel 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.
sunucu tarafında iletilerin ek işlenmesini gerçekleştirmek için, tarafından IServerChannelSinkProvider işlenen tüm iletilerin HttpServerChannel geçirildiği bir uygulamasını belirtebilirsiniz.
ikili HttpServerChannel veya SOAP biçiminde seri hale getirilmiş iletileri kabul eder.
Nesne HttpServerChannel , 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 HttpServerChannel sahiptir. Bu yapılandırma özelliklerinin listesi için HttpServerChannelbelgelerine bakın.
Oluşturucular
| Name | Description |
|---|---|
| HttpServerChannel() |
HttpServerChannel sınıfının yeni bir örneğini başlatır. |
| HttpServerChannel(IDictionary, IServerChannelSinkProvider) |
Belirtilen kanal özellikleri ve havuz ile sınıfının yeni bir örneğini HttpServerChannel başlatır. |
| HttpServerChannel(Int32) |
Belirtilen bağlantı noktasını dinleyen sınıfın HttpServerChannel yeni bir örneğini başlatır. |
| HttpServerChannel(String, Int32, IServerChannelSinkProvider) |
Belirtilen bağlantı noktasında belirtilen bağlantı noktasında sınıfının yeni bir örneğini HttpServerChannel başlatır ve belirtilen bağlantı noktasını dinler ve belirtilen havuzu kullanır. |
| HttpServerChannel(String, Int32) |
Belirtilen ada sahip ve belirtilen bağlantı noktasını dinleyen sınıfın yeni bir örneğini HttpServerChannel 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) |
| 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) |
| WantsToListen |
Dış dinleyici hizmetine bağlanmak isteyip istemediğinizi IChannelReceiverHook 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) |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetChannelUri() |
Geçerli kanalın URI'sini döndürür. |
| 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. |