我试图通过挖掘源代码来深入了解WCF ChannelFactory创建的透明代理的工作原理。 CreateTransparentProxy标有extern
关键字和[MethodImplAttribute(MethodImplOptions.InternalCall)]
属性,这意味着只要我理解,我必须在CLR中查看实现。在CLR source codes中,我发现在某些c#到c ++代码函数映射文件ecalllist.h中只需要提到一些我需要的函数。因此,实现必须位于名为RemotingNative
的类中,但在存储库中搜索并不会给我任何结果。
我在github上发现了一些旧的SSCLI代码,其中包含similar method implementation但不完全相同。除此之外,我想看看实际的实施情况。
答案 0 :(得分:2)
WCF前几天成为open sourced。到目前为止我发现的是WCF ServiceChannelProxy
现在使用DispatchProxy.Create<T, TProxy>()
而不是RemotingServices.CreateTransparentProxy()
。所以看起来如果你想要实际的方法实现创建由WCF 使用的代理,而不是DispatchProxy和DispatchProxyGenerator是您要查找的地方。如果你想要{em>实际实现RemotingServices.CreateTransparentProxy()
而不是SSCLI代码可能是一个很好的近似,正如@ Christian.K所指出的那样。