IpcServerChannel Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует канал сервера для удаленных вызовов, в котором для передачи сообщений используется система межпроцессорного взаимодействия.
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
- Наследование
-
IpcServerChannel
- Реализации
Примеры
В следующем примере кода показано, как использовать IpcServerChannel класс .
#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();
}
}
Приведенный выше код используется для предоставления следующего удаленного объекта.
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++);
} }
}
Пример удаленного использования этого объекта клиентом см. в разделе IpcClientChannel.
Комментарии
Важно!
Вызов методов этого класса для ненадежных данных представляет угрозу безопасности. Вызывайте методы класса только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Каналы используются инфраструктурой удаленного взаимодействия платформа .NET Framework для передачи удаленных вызовов. Когда клиент вызывает удаленный объект, вызов сериализуется в сообщение, которое отправляется клиентским каналом и получается каналом сервера. После получения сообщения оно десериализируется и обрабатывается. Все возвращаемые значения передаются каналом сервера и принимаются клиентским каналом.
Класс IpcServerChannel использует систему межпроцессного взаимодействия Windows (IPC) для передачи сообщений между доменами приложений на одном компьютере. При обмене данными между доменами приложений на одном компьютере канал IPC выполняется гораздо быстрее, чем каналы TCP или HTTP.
Чтобы выполнить дополнительную обработку сообщений на стороне сервера, укажите реализацию IServerChannelSinkProvider интерфейса, через который передаются все сообщения, обработанные IpcServerChannel экземпляром .
Экземпляр IpcServerChannel принимает сообщения, сериализованные в двоичном или soap-формате.
Объект IpcServerChannel имеет связанные свойства конфигурации, которые можно задать во время выполнения в файле конфигурации (путем вызова статического RemotingConfiguration.Configure метода) или программно (путем передачи IDictionary коллекции конструктору IpcServerChannel ). Список этих свойств конфигурации см. в документации по конструктору IpcServerChannel .
Внимание!
При задании свойству exclusiveAddressUse
значения false
в аргументе properties
можно зарегистрировать несколько IpcServerChannel объектов для одного именованного канала. В этом случае запросы могут отправляться в любой из зарегистрированных каналов. Этот параметр считается безопасным, только в том случае, если используются ALC.
Конструкторы
IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
Инициализирует новый экземпляр класса IpcServerChannel с указанными свойствами канала и приемником. |
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
Инициализирует новый экземпляр класса IpcServerChannel с указанными свойствами канала, приемником и дескриптором безопасности. |
IpcServerChannel(String) |
Инициализирует новый экземпляр класса IpcServerChannel с указанным именем порта межпроцессного взаимодействия. |
IpcServerChannel(String, String) |
Инициализирует новый экземпляр класса IpcServerChannel с указанными именем канала и именем порта межпроцессного взаимодействия. |
IpcServerChannel(String, String, IServerChannelSinkProvider) |
Инициализирует новый экземпляр класса IpcServerChannel с указанными именем канала, именем порта межпроцессного взаимодействия и приемником. |
Свойства
ChannelData |
Получает данные, относящиеся к каналу. |
ChannelName |
Получает имя текущего канала. |
ChannelPriority |
Получает приоритет текущего канала. |
IsSecured |
Возвращает или задает логическое значение, позволяющее определить, является ли текущий канал безопасным. |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetChannelUri() |
Возвращает универсальный код ресурса (URI) текущего канала. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetUrlsForUri(String) |
Возвращает массив всех URL-адресов объекта с указанным универсальным кодом ресурса (URI), находящимся в текущем экземпляре IpcChannel. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Parse(String, String) |
Выделяет универсальный код ресурса (URI) канала и универсальный код ресурса (URI) известного удаленного объекта из указанного URL-адреса. |
StartListening(Object) |
Дает текущему каналу команду на отслеживание запросов. |
StopListening(Object) |
Дает текущему каналу команду на прекращение отслеживания запросов. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |