我试图通过深入研究源代码来了解 WCF ChannelFactory 创建的透明代理是如何工作的。CreateTransparentProxy由extern
关键字和[MethodImplAttribute(MethodImplOptions.InternalCall)]
属性标记,这意味着我必须在 CLR 中查看实现,只要我的理解继续。在CLR 源代码中,我发现在某种 c# 到 c++ 代码函数映射文件ecalllist.h中只提到了我需要的函数。所以实现必须位于名为的类RemotingNative
中,但在存储库中搜索并没有给我任何结果。
我在 github 上找到了一些旧的 SSCLI 代码,其中包含类似的方法实现但不完全相同。除此之外,我想看看实际的实现。
问问题
296 次
1 回答
2
WCF前几天开源了。到目前为止,我发现 WCFServiceChannelProxy
现在使用DispatchProxy.Create<T, TProxy>()
而不是RemotingServices.CreateTransparentProxy()
.
因此,看起来如果您想要创建WCF 使用的代理的方法的实际实现,那么DispatchProxy和DispatchProxyGenerator就是您要寻找的地方。正如@Christian.K 指出的那样,如果您想要实际实现比 SSCLI 代码可能是一个很好的近似值。RemotingServices.CreateTransparentProxy()
于 2015-06-02T18:51:04.877 回答