目前我正在研究.Net Remoting,我来到主题代理,我了解到有两种代理
我想知道它们之间有什么区别。请帮我看一下C#代码中的一些简单示例。
我非常感谢你。
答案 0 :(得分:2)
来自MSDN: -
TransparentProxy 是一个无法替换的内部类或 延长。另一方面,RealProxy和ObjRef类是 公共,可以在必要时进行扩展和定制。该 RealProxy 类是执行负载平衡的理想选择 例如,因为它处理远程对象上的所有函数调用。 调用Invoke时,从RealProxy派生的类可以获得加载 有关网络上服务器的信息,并将呼叫路由到 适当的服务器只需要一个MessageSink就可以获得所需的信息 来自Channel的ObjectURI并调用SyncProcessMessage或 AsyncProcessMessage将调用转发到所需的远程对象。 当调用返回时,RealProxy自动处理返回 参数。
这是一个代码片段,展示了如何使用派生的RealProxy类。
MyRealProxy proxy = new MyRealProxy(typeof(Foo));
Foo obj = (Foo)proxy.GetTransparentProxy();
int result = obj.CallSomeMethod();
上面获得的 TransparentProxy 可以转发给其他人 应用领域。当第二个客户端尝试调用方法时 在代理上,远程处理框架将尝试创建一个 MyRealProxy的实例,如果程序集可用,则所有调用 将通过此实例进行路由。如果组装不是 可用,呼叫将通过默认远程路由进行路由 RealProxy。
通过提供替代品,可以轻松定制ObjRef 默认ObjRef属性TypeInfo,EnvoyInfo和ChannelInfo。该 以下代码显示了如何做到这一点。
public class ObjRef {
public virtual IRemotingTypeInfo TypeInfo
{
get { return typeInfo;}
set { typeInfo = value;}
}
public virtual IEnvoyInfo EnvoyInfo
{
get { return envoyInfo;}
set { envoyInfo = value;}
}
public virtual IChannelInfo ChannelInfo
{
get { return channelInfo;}
set { channelInfo = value;}
}
}
答案 1 :(得分:0)
Google中的简单搜索会产生许多有趣的内容,包括MSDN文章:http://msdn.microsoft.com/en-us/library/ms973857.aspx