我试图通过深入了解源代码,了解WCF ChannelFactory创建的透明代理是如何工作的。CreateTransparentProxy被标记为extern关键字和[MethodImplAttribute(MethodImplOptions.InternalCall)]属性,这意味着只要我理解,就必须在CLR中查看实现。在CLR源代码中,我只发现了在某种c#到c++代码函数映射文件ecalllist.h中需要的函数。因此,实现必须位于名为RemotingNative的类中,但存储库中的搜索不会给出任何结果。
我在github上找到了一些旧的SSCLI代码,其中包含相似方法实现,但不完全相同。除此之外,我还想看看实际的实现情况。
发布于 2015-06-02 18:51:04
前几天,WCF变成了开源。到目前为止,我发现WCF ServiceChannelProxy现在使用的是DispatchProxy.Create<T, TProxy>()而不是RemotingServices.CreateTransparentProxy()。
因此,如果您想要创建WCF使用的代理的方法的实际实现,那么DispatchProxy和DispatchProxyGenerator是您需要的地方。如果您想要RemotingServices.CreateTransparentProxy()的实际实现,而不是SSCLI代码,可能是一个很好的近似,如@Christian.K .K指出的。
https://stackoverflow.com/questions/30516640
复制相似问题