如何在不添加呼叫新参数的情况下将扩展信息添加到.Net Remoting呼叫中?

时间:2011-02-16 00:03:42

标签: remoting .net-remoting

我正在使用大量现有的.Net Remoting服务。需要修改此服务,以便对服务的所有调用都需要其他信息以允许服务正确处理调用。

我希望避免在每个现有函数上添加新参数,并且希望以一种使接口保持不变的方式将扩展信息从客户端传递到服务器,并且仍允许服务正确处理调用

1 个答案:

答案 0 :(得分:2)

这可以使用以下接口来完成: IClientChannelSink,IClientChannelSinkProvider,IServerChannelSink和IServerChannelSinkProvider

使用这些接口,可以创建客户端接收器,它可以将新的全局信息作为标头值添加到每个调用中,并且服务器接收器可以关闭此标头值,并将其存储以供逻辑代码使用。

您可以在http://www.diranieh.com/NETRemoting/ExtendingNET.htm

找到这些内容的高级概述

启用客户端接收器的客户端配置部分是:

<system.runtime.remoting>
  <application>
      <channels>
            <channel ref="tcp" port="0" encryption="EncryptAndSign">
              <clientProviders>
                  <provider 
                   type="Namespace.ClientSinkProvider, dll"/>
              </clientProviders>
          </channel>
      </channels>
  </application>
</system.runtime.remoting>

启用服务器接收器的服务器配置部分是:

<system.runtime.remoting>
      <application>
          <channels>
               <channel ref="tcp" port="0" encryption="EncryptAndSign">
                         <serverProviders>
                              <provider 
                               type="Namespace.ServerSinkProvider, dll" />
                              </serverProviders>
              </channel>
          </channels>
      </application>
</system.runtime.remoting>