经典技术文章翻译(2)Does WCF use or Supports IOCP?WCF是否支持或者使用了IOCP完成端口

  • 时间:
  • 浏览:2

参考资料:

reflector来查看WCF channel的相关类库。

   此外,对于超过性能(吞储量或规模性)几滴 的并发客户端,你都都能不能 使用限流配置(相似会话,实例和并发模式)。

2.原帖子:

  Hi, Yong,

     我是一有另四个开发者,知道.net framework 或 Window APIs封装了这俩很棒的模型和算法。让其他同学让其他同学都时需不时需任何考虑就直接调用。

确实非常的方便。有之前 对于其他人学习来说,你都都能不能 弄清楚细节,尽管这是一有另四个别人问我问题。我对你这俩问题也非常感兴趣,

就说 有你都都能不能 花费那末 多的时间来求证它。

     实际上,在我查找资料和与别人讨论的过程中,我也学习到就说 有东西。

     你爱不爱我你这俩问题也会帮助你这俩学习WCF的人。

     仅仅是我每每其他人的学习态度。。

     谢谢。

  ---------------------------------------------------------------------------------

  30009年7月15日 4:15Frank Xu Lei  

  0Hi,All

    Thanks a lot ,anyone who replyed or payed attention to  this question~

  0Hi Frank,

 --------------------------------------------------------------------------------------

  30009年7月12日 8:08Frank Xu Lei  

  0Hi,Rodrigo.

    我有之前 查看多System.ServiceModel.Channels.IOThreadScheduler的代码。发现它定义了一有另四个私有的类CriticalHelper。

它有四个法子:

   1.private static void CompletionCallback(object state);

  2.public static void ScheduleCallback(WaitCallback callback, object state, 

  bool flow, bool lowPri);

  3.IOCompletionCallback,

    顺便说一下,我也发现了另外一有另四个驻留的TYPE:private class 

  ScheduledOverlapped.new  IOCompletionCallback(this.IOCallback)),它是WCF使用IOCP模型的来改善大规模并发客户端的证据。

正如完后 的Windows API一样,让其他同学让其他同学也使用IOCP模型。

   我这里一阵一阵疑惑:

  

 public unsafe ScheduledOverlapped(WaitCallback callback)

              {

                  this.nativeOverlapped = new Overlapped(0, 0, IntPtr.Zero, 

  null).UnsafePack(DiagnosticUtility.Utility.ThunkCallback(new 

  IOCompletionCallback(this.IOCallback)), null);

                  this.callback = callback;

              }

-----------------------------------------------------------------------------------

------------------------------------------------------------------------------------

  30009年7月13日 6:47Steven Cheng - MSFTMSFT, 版主 

    我不选泽 你这俩是有无明确的文档化过,有之前 WCF使用IO系统系统进程和IOCP。

    你都都能不能 通过调用系统系统进程池来查看IO系统系统进程的使用情况汇报。从你操作里获取可用系统系统进程。也都时需查看关于使用IO begin/end操作的

AsyncPattern = true 属性设置的文(相似:Stream.BeginRead)。

----------------------------------------------------------------------------------------

  30009年7月10日 21:28rfreire  

   实际上,WCF使用了IOCP。确实那末 关于此的文档,但那个她 都时需通过

System.ServiceModel.Channels.IOThreadScheduler类来调度和队列话系统系统进程。

   为了确认IOCP的使用。。。你应该使用反射器打开你这俩类。。。在这俩驻留的类里,你都都能不能 发现它使用

IOCompletionCallback委托来接受来自系统系统进程池上的IO操作输出。

Windows 网络编程,2版

1.原问题:

   这是一有另四个帖子的翻译,每每其他人感觉不错,对于就说 有学习WCF编程的人来说是个不错问题。一阵一阵是想了解WCF底层的系统系统进程模型实现机制的有所帮助。由冰红茶提出,问题每每其他人花费2周多时间,查阅资料,你这俩帖子是我发到WCF英文论坛的帖子,包括数位外国男友 的回复,这里做个派发和翻译,供让其他同学让其他同学参考。

  翻译如下:

Does WCF use or Supports IOCP?

  30009年7月7日 11:33Frank Xu Lei  

    让其他同学让其他同学好,

    我有一有另四个关于WCF的问题?WCF在数据通信过程中使用有之前 支持IOCP模型吗?IOCP是并都在针对几滴 并发客户请求改善性能的法子。

现在对于WCF来说都在处理几滴 并发客户端的问题。就说 有别问我更多关于WCF和IOCP的细节,WCF在数据通信过程中使用有之前 支持IOCP模型吗?

是有无有关于你这俩问题的你这俩官方的文档有之前 文章?

    谢谢。

------------------------------------------------------------------------------------

答案

  30009年7月8日 4:09Dominick BaierMVP

 本文转自 frankxulei 51CTO博客,原文链接:http://blog.51cto.com/frankxulei/320513,如需转载请自行联系原作者

1.http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/1f035ee4-0b7c-47d8-9595-f99d87dafac8/;

统计信息

  发起日期: 30009/7/7上次回复: 30009/7/15认为此贴有帮助的投票: 0

  回复次数: 16

  查看次数: 179

    Hi,

  I have one question for WCF ?Does WCF use or  Supports IOCP in Data Communication?as we know,IOCP supplies a   solution to improve pefermance of  the Data communicatioin for a lot of cocurrent clients.There is the same problem 

for WCF like too many cocurrent clients.So I like to know more detail about IOCP  and WCF.Does WCF use or  Supports IOCP?Is there any offical docs or aticles for this question?

  Thanks a lot.

    作为一有另四个开发者,底层的通道层的系统系统进程模型是并都在实现细节,你不应该不要 依赖它。

有之前 有一天Windows平台上的IOCP模型或许不什么都那末那末 的高效。

(相似Windows核心开发团队里的大牛,发明权家 了并都在新的算法来调服IO操作,有之前 让其他同学让其他同学重构了并都在新的机制API来处理IO系统系统进程),

不论WCF使用哪种系统系统进程模型,就说 管类型怎样改变,这俩都时需选泽 的是,WCF都都能不能 提供连续的API去包装你这俩特征。

这就说 使用高级别API的好处。

  另外,知道WCF使用IO完成系统系统进程做异步IO操作暂且能使你成为更出色的WCF开发者。

  

----------------------------------------------------------------------------------

  Hi, 

   你好,非常感谢你的回复,我猜测WCF传输(WCF运行时)使用了完成端口。有之前 关于你这俩问题的资料不要 。

下面本论坛的连接是关于你这俩问题的有帮助的主题:

--------------------------------------------------------------------------------------------------

  30009年7月13日 16:37Frank Xu Lei  

  0Hi,

     我阅读了这本书:Windows网络编程,2版。它介绍了所有的Windows IO模型:blocking, select, WSAAsyncSelect, 

  WSAEventSelect, overlapped I/O, 和 completion port。我在第8章里找到这俩对你这俩问题有用的描述:

1.重叠IO:重叠IO模型的设计允许你的应用系统系统进程使用重叠数据特征发送一有另四个有之前 多个异步IO请求。

2.本质上说,IOCP模型时需你创建一有另四个Windows 完成端口对象来管理重叠IO请求,它使用一定数量的系统系统进程来处理完成重叠IO请求。

3.完成端口是目前讨论的模型里提供了最好的可扩展性的模型之一。你这俩模型非常适合处理数百乃至数千的sockets.

   

    根本上说,IOCP利用了Windows重叠IO机制(更多细节你都都能不能 在那个书里找到)。

    现在你都都能不能 选泽 的是:WCF确实使用了IOCP模型来处理几滴 并发用户请求。System.ServiceModel.Channels.IOThreadScheduler类的

代码实现都时需证明你这俩点。

----------------------------------------------------------------------------------------

  30009年7月14日 5:23Frank Xu Lei 

   是的,WCF在服务端结构使用了IOCP来处理并发请求。.NET 系统系统进程池结构实现了IOCP,更细节的东西那末 公开。然而,你都都能不能 使用

  2.http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/1f035ee4-0b7c-47d8-9595-f99d87dafac8/ 

  ;

  3.http://blogs.msdn.com/wenlong/archive/30008/04/21/wcf-request-throttling-and-server-scalability.aspx;

  4.http://winterdom.com/30007/04/wcfchannellisteners in the 3rd one.作者说使用debugger都时需找到更多细节:

System.ServiceModel.Diagnostics.Utility+IOCompletionThunk.UnhandledExceptionFrame(UInt32, 

  UInt32, System.Threading.NativeOverlapped*)+0x2f 01fbf744 79e7c74b 

  mscorlib_ni!System.Threading._IOCompletionCallback.PerformIOCompletionCallback 

    你这俩是证据吗?我不选泽 。

Frank Xu Lei :