【发布时间】:2011-02-16 00:03:42
【问题描述】:
我正在使用现有的大型 .Net Remoting 服务。需要修改此服务,使对服务的所有调用都需要附加信息以允许服务正确处理调用。
我希望避免在每个现有函数上添加新参数,并且希望以一种保持接口不变且仍允许服务正确处理调用的方式将扩展信息从客户端传递到服务器.
【问题讨论】:
我正在使用现有的大型 .Net Remoting 服务。需要修改此服务,使对服务的所有调用都需要附加信息以允许服务正确处理调用。
我希望避免在每个现有函数上添加新参数,并且希望以一种保持接口不变且仍允许服务正确处理调用的方式将扩展信息从客户端传递到服务器.
【问题讨论】:
这可以使用以下接口来完成: 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>
【讨论】: