IpcClientChannel Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует канал клиента для удаленных вызовов, в котором для передачи сообщений используется протокол межпроцессного взаимодействия.
public ref class IpcClientChannel : System::Runtime::Remoting::Channels::IChannelSender, System::Runtime::Remoting::Channels::ISecurableChannel
public class IpcClientChannel : System.Runtime.Remoting.Channels.IChannelSender, System.Runtime.Remoting.Channels.ISecurableChannel
type IpcClientChannel = class
interface IChannelSender
interface IChannel
interface ISecurableChannel
Public Class IpcClientChannel
Implements IChannelSender, ISecurableChannel
- Наследование
-
IpcClientChannel
- Реализации
Примеры
Приведенный ниже пример кода показывает, как использовать класс IpcClientChannel.
#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 Client
{
public:
void ClientTest()
{
IpcClientChannel^ clientChannel = gcnew IpcClientChannel;
ChannelServices::RegisterChannel( clientChannel );
RemotingConfiguration::RegisterWellKnownClientType( Counter::typeid, L"ipc://remote/counter" );
Counter^ counter = gcnew Counter;
Console::WriteLine( L"This is call number {0}.", counter->Count );
}
};
int main()
{
Client^ c = gcnew Client;
c->ClientTest();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
public class Client
{
public static void Main ()
{
IpcClientChannel clientChannel = new IpcClientChannel();
ChannelServices.RegisterChannel(clientChannel);
RemotingConfiguration.RegisterWellKnownClientType( typeof(Counter) , "ipc://remote/counter" );
Counter counter = new Counter();
Console.WriteLine("This is call number {0}.", counter.Count);
}
}
В предыдущем коде используется следующий удаленный объект.
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++);
} }
}
Пример сервера, который удаленно предоставляет этот объект, см. в разделе IpcServerChannel.
Комментарии
Важно!
Вызов методов этого класса для ненадежных данных представляет угрозу безопасности. Вызывайте методы класса только для надежных данных. Дополнительные сведения см. в разделе "Проверка всех входных данных".
Каналы используются инфраструктурой удаленного взаимодействия the.NET Framework для передачи удаленных вызовов. Когда клиент вызывает удаленный объект, вызов сериализуется в сообщение, которое отправляется клиентским каналом и получается каналом сервера. После получения сообщения он десериализуется и обрабатывается. Все возвращаемые значения передаются каналом сервера и получаются клиентским каналом.
Класс IpcClientChannel использует систему Windows межпроцессного взаимодействия (IPC) для передачи сообщений между доменами приложений на одном компьютере. При обмене данными между доменами приложений на одном компьютере канал IPC намного быстрее, чем каналы TCP или HTTP.
Чтобы выполнить дополнительную обработку сообщений на стороне клиента, можно указать реализацию IClientChannelSinkProvider интерфейса, через который будут передаваться все сообщения, обработанные IpcClientChannel объектом.
По умолчанию IpcClientChannel класс использует двоичный модуль форматирования для сериализации всех сообщений.
Объект IpcClientChannel имеет связанные свойства конфигурации, которые можно задать во время выполнения в файле конфигурации (путем вызова статического RemotingConfiguration.Configure метода) или программным способом (путем передачи IDictionary коллекции конструктору IpcClientChannel ). Список этих свойств конфигурации см. в документации по конструктору IpcClientChannel .
Конструкторы
IpcClientChannel() |
Инициализирует новый экземпляр класса IpcServerChannel. |
IpcClientChannel(IDictionary, IClientChannelSinkProvider) |
Инициализирует новый экземпляр класса IpcClientChannel с указанными свойствами конфигурации и приемником. |
IpcClientChannel(String, IClientChannelSinkProvider) |
Инициализирует новый экземпляр класса IpcClientChannel с указанным именем и приемником. |
Свойства
ChannelName |
Получает имя текущего канала. |
ChannelPriority |
Получает приоритет текущего канала. |
IsSecured |
Возвращает или задает логическое значение, позволяющее определить, является ли текущий канал безопасным. |
Методы
CreateMessageSink(String, Object, String) |
Возвращает приемник сообщений канала, который доставляет сообщения объекту данных канала или по указанному URL-адресу. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Parse(String, String) |
Выделяет универсальный код ресурса (URI) канала и универсальный код ресурса (URI) известного удаленного объекта из указанного URL-адреса. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |