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) |