2

我试图通过深入研究源代码来了解 WCF ChannelFactory 创建的透明代理是如何工作的。CreateTransparentProxyextern关键字和[MethodImplAttribute(MethodImplOptions.InternalCall)]属性标记,这意味着我必须在 CLR 中查看实现,只要我的理解继续。在CLR 源代码中,我发现在某种 c# 到 c++ 代码函数映射文件ecalllist.h中只提到了我需要的函数。所以实现必须位于名为的类RemotingNative中,但在存储库中搜索并没有给我任何结果。

我在 github 上找到了一些旧的 SSCLI 代码,其中包含类似的方法实现但不完全相同。除此之外,我想看看实际的实现。

4

1 回答 1

2

WCF前几天开源了。到目前为止,我发现 WCFServiceChannelProxy现在使用DispatchProxy.Create<T, TProxy>()而不是RemotingServices.CreateTransparentProxy().
因此,看起来如果您想要创建WCF 使用的代理的方法的实际实现,那么DispatchProxyDispatchProxyGenerator就是您要寻找的地方。正如@Christian.K 指出的那样,如果您想要实际实现比 SSCLI 代码可能是一个很好的近似值。RemotingServices.CreateTransparentProxy()

于 2015-06-02T18:51:04.877 回答