IpcServerChannel Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Implementuje kanál serveru pro vzdálená volání, která k přenosu zpráv používá systém IPC.
public ref class IpcServerChannel : System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::ISecurableChannel
public class IpcServerChannel : System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.ISecurableChannel
type IpcServerChannel = class
interface IChannelReceiver
interface IChannel
interface ISecurableChannel
Public Class IpcServerChannel
Implements IChannelReceiver, ISecurableChannel
- Dědičnost
-
IpcServerChannel
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak používat IpcServerChannel třídu.
#using <system.runtime.remoting.dll>
#using <System.dll>
#using <Counter.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Ipc;
public ref class IpcServer
{
public:
void IpcServerTest()
{
// Create and register an IPC channel
IpcServerChannel^ serverChannel = gcnew IpcServerChannel( L"remote" );
ChannelServices::RegisterChannel( serverChannel );
// Expose an object
RemotingConfiguration::RegisterWellKnownServiceType( Counter::typeid, L"counter", WellKnownObjectMode::Singleton );
// Wait for calls
Console::WriteLine( L"Listening on {0}", serverChannel->GetChannelUri() );
Console::ReadLine();
}
};
int main()
{
IpcServer^ is = gcnew IpcServer;
is->IpcServerTest();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
public class IpcServer
{
public static void Main ()
{
// Create and register an IPC channel
IpcServerChannel serverChannel = new IpcServerChannel("remote");
ChannelServices.RegisterChannel(serverChannel);
// Expose an object
RemotingConfiguration.RegisterWellKnownServiceType( typeof(Counter), "counter", WellKnownObjectMode.Singleton );
// Wait for calls
Console.WriteLine("Listening on {0}", serverChannel.GetChannelUri());
Console.ReadLine();
}
}
Předchozí kód se používá ke zveřejnění následujícího vzdáleného objektu.
using namespace System;
public ref class Counter: public MarshalByRefObject
{
private:
int count;
public:
Counter()
{
count = 0;
}
property int Count
{
int get()
{
return (count)++;
}
}
};
using System;
public class Counter : MarshalByRefObject {
private int count = 0;
public int Count { get {
return(count++);
} }
}
Příklad klienta, který tento objekt používá vzdáleně, najdete v tématu IpcClientChannel.
Poznámky
Důležité
Volání metod z této třídy s nedůvěryhodnými daty představuje bezpečnostní riziko. Metody z této třídy volejte pouze s důvěryhodnými daty. Další informace najdete v tématu Ověření všech vstupů.
Kanály se používají v infrastruktuře vzdálené komunikace rozhraní .NET Framework k přenosu vzdálených volání. Když klient volá vzdálený objekt, volání se serializuje do zprávy, která je odeslána klientským kanálem a přijata kanálem serveru. Po přijetí zprávy se deserializuje a zpracuje. Všechny vrácené hodnoty jsou přenášeny kanálem serveru a přijaty klientským kanálem.
Třída IpcServerChannel používá systém IPC (Interprocess communication) systému Windows k přenosu zpráv mezi doménami aplikace ve stejném počítači. Při komunikaci mezi doménami aplikace na stejném počítači je kanál IPC mnohem rychlejší než kanály TCP nebo HTTP.
Chcete-li provést další zpracování zpráv na straně serveru, zadejte implementaci IServerChannelSinkProvider rozhraní, přes které jsou předány všechny zprávy zpracovávané IpcServerChannel instancí.
Instance IpcServerChannel přijímá zprávy serializované v binárním nebo SOAP formátu.
Objekt IpcServerChannel má přidružené vlastnosti konfigurace, které lze nastavit za běhu buď v konfiguračním souboru (vyvoláním statické RemotingConfiguration.Configure metody), nebo programově (předáním IDictionary kolekce konstruktoru IpcServerChannel ). Seznam těchto vlastností konfigurace najdete v dokumentaci k konstruktoru IpcServerChannel .
Upozornění
Při nastavení exclusiveAddressUse
vlastnosti na false
v argumentu properties
lze pro stejný pojmenovaný kanál zaregistrovat několik IpcServerChannel objektů. V takovém případě můžou žádosti přejít na některý z registrovaných kanálů. Toto nastavení je považováno za bezpečné pouze v případě, že se používají také alC.
Konstruktory
IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
Inicializuje novou instanci IpcServerChannel třídy se zadanými vlastnostmi kanálu a jímkou. |
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
Inicializuje novou instanci IpcServerChannel třídy se zadanými vlastnostmi kanálu, jímkou a popisovačem zabezpečení. |
IpcServerChannel(String) |
Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem portu IPC. |
IpcServerChannel(String, String) |
Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem kanálu a názvem portu IPC. |
IpcServerChannel(String, String, IServerChannelSinkProvider) |
Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem kanálu, názvem portu IPC a jímkou. |
Vlastnosti
ChannelData |
Získá data specifická pro kanál. |
ChannelName |
Získá název aktuálního kanálu. |
ChannelPriority |
Získá prioritu aktuálního kanálu. |
IsSecured |
Získá nebo nastaví logickou hodnotu, která označuje, zda je aktuální kanál zabezpečený. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetChannelUri() |
Vrátí identifikátor URI aktuálního kanálu. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
GetUrlsForUri(String) |
Vrátí pole všech adres URL objektu se zadaným identifikátorem URI hostovaným v aktuální IpcChannel instanci. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Parse(String, String) |
Extrahuje identifikátor URI kanálu a vzdálený dobře známý identifikátor URI objektu ze zadané adresy URL. |
StartListening(Object) |
Dá aktuálnímu kanálu pokyn, aby začal naslouchat žádostem. |
StopListening(Object) |
Dá aktuálnímu kanálu pokyn, aby přestal naslouchat žádostem. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |