IpcServerChannel 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
針對遠端呼叫實作使用 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
- 繼承
-
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
時,可以針對相同的具名管道註冊數 IpcServerChannel 個 properties
物件。 在這種情況下,要求可以移至任何已註冊的通道。 只有在也使用 ALC 時,才會將此設定視為安全。
建構函式
IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
使用指定的通道屬性和接收,初始化 IpcServerChannel 類別的新執行個體。 |
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
使用指定的通道屬性、接收 (Sink) 和安全性描述元 (Security Descriptor),初始化 IpcServerChannel 類別的新執行個體。 |
IpcServerChannel(String) |
使用指定的 IPC 連接埠名稱,初始化 IpcServerChannel 類別的新執行個體。 |
IpcServerChannel(String, String) |
使用指定的通道名稱和 IPC 連接埠名稱,初始化 IpcServerChannel 類別的新執行個體。 |
IpcServerChannel(String, String, IServerChannelSinkProvider) |
使用指定的通道名稱、IPC 連接埠名稱和接收 (Sink),初始化 IpcServerChannel 類別的新執行個體。 |
屬性
ChannelData |
取得通道特定資料。 |
ChannelName |
取得目前通道的名稱。 |
ChannelPriority |
取得目前通道的優先權。 |
IsSecured |
取得或設定指出目前通道是否安全的布林值。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetChannelUri() |
傳回目前通道的 URI。 |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
GetUrlsForUri(String) |
傳回具有指定 URI 之物件的所有 URL 陣列,裝載於目前 IpcChannel 執行個體上。 |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
Parse(String, String) |
從指定的 URL 擷取通道 URI 和遠端已知物件 URI。 |
StartListening(Object) |
指示目前通道開始接聽要求。 |
StopListening(Object) |
指示目前通道停止接聽要求。 |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |