次の方法で共有


HttpChannel.CreateMessageSink メソッド

指定した URL またはチャネル データ オブジェクトにメッセージを配信するチャネル メッセージ シンクを返します。

Public Overridable Function CreateMessageSink( _
   ByVal url As String, _   ByVal remoteChannelData As Object, _   <Out()> ByRef objectURI As String _) As IMessageSink Implements IChannelSender.CreateMessageSink
[C#]
public virtual IMessageSink CreateMessageSink(stringurl,objectremoteChannelData,   out stringobjectURI);
[C++]
public: virtual IMessageSink* CreateMessageSink(String* url,Object* remoteChannelData,   [   Out] String** objectURI);
[JScript]
public function CreateMessageSink(
   url : String,remoteChannelData : Object,objectURI : String) : IMessageSink;

パラメータ

  • url
    新しいシンクがメッセージを配信する先の URL。 null 参照 (Visual Basic では Nothing) でもかまいません。
  • remoteChannelData
    新しいシンクがメッセージを配信する先のリモート ホストのチャネル データ オブジェクト。 null 参照 (Visual Basic では Nothing) でもかまいません。
  • objectURI
    このメソッドが返されるときに、指定した URL またはチャネル データ オブジェクトにメッセージを配信する新しいチャネル メッセージ シンクの URI を格納します。このパラメータは初期化せずに渡されます。

戻り値

指定した URL またはチャネル データ オブジェクトにメッセージを配信するチャネル メッセージ シンク。

実装

IChannelSender.CreateMessageSink

解説

CreateMessageSink メソッドは、指定した URL またはチャネル データ オブジェクトにメッセージを配信するチャネル メッセージ シンクを返します。 uri パラメータが null 参照 (Visual Basic では Nothing) の場合は、シンクの対象として remoteChannelData が使用されます。 url または remoteChannelData のいずれかのパラメータを null 参照 (Nothing) にすることはできますが、両方を null にすることはできません。

チャネル シンクは、そのチャネルを流れている基になるメッセージにアクセスできるようにするプラグイン ポイント、およびリモート オブジェクトにメッセージを送信するために転送機構が使用するストリームを提供します。チャネル シンクは互いにリンクされて ChannelSinkProviders のチェインとなり、すべてのチャネル メッセージはこのシンク チェインを流れた後で、最終的にシリアル化されて転送されます。

使用例

 
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Messaging

Module Module1

   Sub Main()
      ' Create a remotable object.
      Dim channel As New HttpChannel(8085)
      ChannelServices.RegisterChannel(channel)

      Dim WKSTE As New WellKnownServiceTypeEntry(GetType(HelloService), _
                                                 "Service", _
                                                 WellKnownObjectMode.Singleton)
      RemotingConfiguration.RegisterWellKnownServiceType(WKSTE)

      
      RemotingConfiguration.ApplicationName = "TempConverter"

      ' Create a message sink for TempConverter.
      Dim objURI As String
      
      Dim sink As IMessageSink
      sink = channel.CreateMessageSink("https://localhost:8085/TempConverter", _
                                       channel, _
                                       objURI)

      ' Do processing on messsage sink...

[C#] 
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Messaging;

class Class1 {
   static void Main() {
      
      // Create a remotable object.
      HttpChannel channel = new HttpChannel(8085);
      ChannelServices.RegisterChannel(channel);

      WellKnownServiceTypeEntry WKSTE = 
            new WellKnownServiceTypeEntry(typeof(HelloService),
                                          "Service", 
                                          WellKnownObjectMode.Singleton);
      RemotingConfiguration.RegisterWellKnownServiceType(WKSTE);

      RemotingConfiguration.ApplicationName = "HelloServer";

      // Create a message sink for TempConverter.
      string objURI;
      IMessageSink sink = 
         channel.CreateMessageSink("https://localhost:8085/HelloServer",
                                   channel,
                                   out objURI);

      // Do processing on messsage sink...
      
      Console.WriteLine("Press <enter> to exit");
      Console.ReadLine();
   }
}

[C++] 
#using <mscorlib.dll>
#using <system.dll>
#using <system.runtime.remoting.dll>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;
using namespace System::Runtime::Remoting::Messaging;

int main() 
{

    // Create a remotable Object*.
    HttpChannel* channel = new HttpChannel(8085);
    ChannelServices::RegisterChannel(channel);

    WellKnownServiceTypeEntry* WKSTE = new WellKnownServiceTypeEntry(__typeof(HelloService),
        S"Service", 
        WellKnownObjectMode::Singleton);
    RemotingConfiguration::RegisterWellKnownServiceType(WKSTE);

    RemotingConfiguration::ApplicationName = S"HelloServer";

    // Create a message sink for TempConverter.
    String* objURI;
    IMessageSink* sink = 
        channel->CreateMessageSink(S"https://localhost:8085/HelloServer",
        channel, &objURI);

    // Do processing on messsage sink...

    Console::WriteLine(S"Press <enter> to exit");
    Console::ReadLine();

    return 0;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

HttpChannel クラス | HttpChannel メンバ | System.Runtime.Remoting.Channels.Http 名前空間