IChannelSender 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供寄件者通道所需的函式和屬性。
public interface class IChannelSender : System::Runtime::Remoting::Channels::IChannel
public interface IChannelSender : System.Runtime.Remoting.Channels.IChannel
[System.Runtime.InteropServices.ComVisible(true)]
public interface IChannelSender : System.Runtime.Remoting.Channels.IChannel
type IChannelSender = interface
interface IChannel
[<System.Runtime.InteropServices.ComVisible(true)>]
type IChannelSender = interface
interface IChannel
Public Interface IChannelSender
Implements IChannel
- 衍生
- 屬性
- 實作
範例
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using <IChannelSender_Share.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Messaging;
using namespace System::Runtime::Remoting::Channels::Http;
int main()
{
try
{
// Create the 'IDictionary' to set the server object properties.
IDictionary^ myDictionary = gcnew Hashtable;
myDictionary->default[ "name" ] = "HttpClientChannel";
myDictionary->default[ "priority" ] = 2;
// Set the properties along with the constructor.
IChannelSender^ myIChannelSender = gcnew HttpClientChannel( myDictionary,gcnew BinaryClientFormatterSinkProvider );
// Register the server channel.
ChannelServices::RegisterChannel( myIChannelSender, false );
MyHelloServer ^ myHelloServer1 = dynamic_cast<MyHelloServer^>(Activator::GetObject( MyHelloServer::typeid, "http://localhost:8085/SayHello" ));
if ( myHelloServer1 == nullptr )
{
Console::WriteLine( "Could not locate server" );
}
else
{
Console::WriteLine( myHelloServer1->myHelloMethod( "Client" ) );
// Get the name of the channel.
Console::WriteLine( "Channel Name :{0}", myIChannelSender->ChannelName );
// Get the channel priority.
Console::WriteLine( "ChannelPriority :{0}", myIChannelSender->ChannelPriority );
String^ myString;
String^ myObjectURI1;
Console::WriteLine( "Parse :{0}{1}", myIChannelSender->Parse( "http://localhost:8085/SayHello", myString ), myString );
// Get the channel message sink that delivers message to specified url.
IMessageSink^ myIMessageSink = myIChannelSender->CreateMessageSink( "http://localhost:8085/NewEndPoint", nullptr, myObjectURI1 );
Console::WriteLine( "Channel message sink used :{0}", myIMessageSink );
Console::WriteLine( "URI of new channel message sink :{0}", myObjectURI1 );
}
}
catch ( Exception^ ex )
{
Console::WriteLine( "Following exception is raised on client side : {0}", ex->Message );
}
}
using System;
using System.Collections;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Remoting.Channels.Http;
using System.Security.Permissions;
public class MyClient
{
public static void Main()
{
try
{
// Create the 'IDictionary' to set the server object properties.
IDictionary myDictionary = new Hashtable();
myDictionary["name"] = "HttpClientChannel";
myDictionary["priority"] = 2;
// Set the properties along with the constructor.
IChannelSender myIChannelSender = new HttpClientChannel(myDictionary,
new BinaryClientFormatterSinkProvider());
// Register the server channel.
ChannelServices.RegisterChannel(myIChannelSender);
MyHelloServer myHelloServer1 = (MyHelloServer)Activator.GetObject(
typeof(MyHelloServer), "http://localhost:8085/SayHello");
if (myHelloServer1 == null)
{
Console.WriteLine("Could not locate server");
}
else
{
Console.WriteLine(myHelloServer1.myHelloMethod("Client"));
// Get the name of the channel.
Console.WriteLine("Channel Name :" + myIChannelSender.ChannelName);
// Get the channel priority.
Console.WriteLine("ChannelPriority :" +
myIChannelSender.ChannelPriority.ToString());
string myString,myObjectURI1;
Console.WriteLine("Parse :" +
myIChannelSender.Parse("http://localhost:8085/SayHello",out myString)
+ myString);
// Get the channel message sink that delivers message to specified url.
IMessageSink myIMessageSink =
myIChannelSender.CreateMessageSink(
"http://localhost:8085/NewEndPoint", null,out myObjectURI1);
Console.WriteLine("Channel message sink used :" + myIMessageSink.ToString());
Console.WriteLine("URI of new channel message sink :" + myObjectURI1);
}
}
catch(Exception ex)
{
Console.WriteLine("Following exception is raised on client side : " + ex.Message);
}
}
}
Imports System.Collections
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Messaging
Imports System.Runtime.Remoting.Channels.Http
Imports System.Security.Permissions
Public Class MyClient
<PermissionSet(SecurityAction.LinkDemand)> _
Public Shared Sub Main()
Try
' Create the 'IDictionary' to set the server object properties.
Dim myDictionary As New Hashtable()
myDictionary("name") = "HttpClientChannel"
myDictionary("priority") = 2
' Set the properties along with the constructor.
Dim myIChannelSender As New HttpClientChannel(myDictionary, _
New BinaryClientFormatterSinkProvider())
' Register the server channel.
ChannelServices.RegisterChannel(myIChannelSender)
Dim myHelloServer1 As MyHelloServer = CType(Activator.GetObject(GetType(MyHelloServer), _
"http://localhost:8085/SayHello"), MyHelloServer)
If myHelloServer1 Is Nothing Then
Console.WriteLine("Could not locate server")
Else
Console.WriteLine(myHelloServer1.myHelloMethod("Client"))
' Get the name of the channel.
Console.WriteLine("Channel Name :" + myIChannelSender.ChannelName)
' Get the channel priority.
Console.WriteLine("ChannelPriority :" + myIChannelSender.ChannelPriority.ToString())
Dim myString As String = ""
Dim myObjectURI1 As String = ""
Console.WriteLine("Parse :" + myIChannelSender.Parse("http://localhost:8085/SayHello", _
myString) + myString)
' Get the channel message sink that delivers message to specified url.
Dim myIMessageSink As IMessageSink = _
myIChannelSender.CreateMessageSink("http://localhost:8085/NewEndPoint", _
Nothing, myObjectURI1)
Console.WriteLine("Channel message sink used :" + CType(myIMessageSink,Object).ToString())
Console.WriteLine("URI of new channel message sink :" + myObjectURI1)
End If
Catch ex As Exception
Console.WriteLine("Following exception is raised on client side : " + ex.Message)
End Try
End Sub
End Class
備註
重要
呼叫實作此介面之類別的方法時,若並用了不信任的資料,會造成安全性上的風險。 呼叫實作此介面之類別的方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入。
通道的傳送端必須公開 IChannelSender 介面。
屬性
ChannelName |
取得通道的名稱。 (繼承來源 IChannel) |
ChannelPriority |
取得通道的優先權。 (繼承來源 IChannel) |
方法
CreateMessageSink(String, Object, String) |
傳回通道訊息接收,其傳遞訊息給指定 URL 或通道資料物件。 |
Parse(String, String) |
將物件 URI 傳回為輸出參數,並將目前通道的 URI 值傳回為傳回值。 (繼承來源 IChannel) |