我已经在流模式下实现了WCF服务,以通过Internet传输更大的文件。
到目前为止,非常好。
出于统计目的,我想记录传输所需的时间以及传输的大小。尺寸不是问题,但跟踪转移时间有点棘手。
根据我的需要,我实现了一个派生自MemoryStream的DownloadStream类。 这个类有两个事件:第一个由开始阅读触发,第二个由完成阅读触发。它工作正常。 http://www.danflash.com/files/code/DownloadStream.txt
但是如果客户端(WCF客户端)调用WCF方法来获取流,则会发生奇怪的事情。 在客户端,我获得流的引用,并可以顺序读取它。这意味着,我可以在从流中读取之前花费时间,然后获得转移的持续时间。
但是如果我尝试在服务器端执行此操作,则在任何客户端开始从中读取之前,将自动读取整个流。似乎流内容将被复制到内存中。
有没有办法跟踪服务器端的传输时间?
答案 0 :(得分:0)
在传输开始之前,有效负载通常缓存在内存中,以便允许发送正确的内容长度标头,验证整个有效负载,加密有效负载(如果消息加密)启用它在发送有效载荷之前应用;与可以流式传输的传输加密形成对比),应用MTOM(在构建有效载荷之后发生)等转换,并强制实施配额。
您可以使用WCF inspector更好地计算时间。