确定 .NET CF 中 Web 服务调用的传输数据大小

Posted

技术标签:

【中文标题】确定 .NET CF 中 Web 服务调用的传输数据大小【英文标题】:Determine transfered data size for a web service call in .NET CF 【发布时间】:2010-10-12 16:31:02 【问题描述】:

我正在开发一个 .NET CF 客户端应用程序并使用 Web 服务进行数据传输。我正在使用 SharpZipLib 压缩传输的数据集,因此我知道传输的字节数组的大小。

我想知道是否有一种简单的方法可以确定单个调用的完整请求大小(html 标头、soap 信封和真实数据)。我真的想尽量减少 GPRS 连接成本。

谢谢...

【问题讨论】:

【参考方案1】:

关于整体问题;抱歉,我不知道使用网络跟踪器...

但是;我可以谦虚地建议数据集和 SOAP 并不总是带宽受限设备的最佳选择吗?压缩做得很好,但并不总是理想的。除非您需要所提供的功能,否则可以使用更简单的协议(例如 POX,可能使用内置协议压缩 (GZIP/Deflate))。

另一方面...如果您可以将事物表述为消息,那么像protobuf-net 这样的序列化程序可能会很有用(结合原始二进制帖子);它们的数据非常密集(因此尝试使用压缩不可避免地会增加大小)。但是,您需要在客户端进行自己的数据/更改跟踪,并且 RPC 堆栈尚不完整(我有工作原型代码,但我还没有提交它,因为我还在单元测试它)。服务器也将有所不同(即不是 asmx 或其他 - 可能是操纵的处理程序或 MVC 控制器)。

作为另一种选择 - ADO.NET 数据服务可能会受到关注,尤其是在 JSON 模式下(对于带宽,再次使用协议压缩)。

【讨论】:

你是对的,可能 Web 服务不是一个好的选择,但我认为我没有时间改变所有的结构。我还在支持服务器-客户端类型通信的客户端设备上使用 db4o,但我不确定它是否支持压缩。【参考方案2】:

WCF 支持消息跟踪,可以让您查看生成的 SOAP+消息的大小。您可以使用这些跟踪文件来确定您要查找的内容,尽管对您的通信进行压缩,发送的字节数将不那么明显。对于实际的电线尺寸,wireshark 将是一个不错的选择。或者,您可以压缩从 WCF 跟踪中提取的消息并大致了解一下。

【讨论】:

【参考方案3】:

Wireshark 是著名的协议分析工具。但是,这可能超出您的需求。

也结帐Fiddler。这更容易,它可以让您监控来自模拟器的流量。

tcpmon 是一个可以位于服务器和客户端之间的 Java 实用程序。您需要在应用程序中编辑端点以连接到 tcpmon 并配置 tcpmon 以将所有请求代理到实际的 Web 服务。它不应该花费超过 10 分钟 - 这是一个非常简单的实用程序。然后您可以在 tcpmon 中监控原始请求或使用 Fiddler 捕获流量。

【讨论】:

我以前用过 Fiddler,但从未尝试过 Wireshark。从通过 Activesync Fiddler 连接到 Internet 的 WM Emulator 不会捕获流量。不过谢谢提醒这两个人。

以上是关于确定 .NET CF 中 Web 服务调用的传输数据大小的主要内容,如果未能解决你的问题,请参考以下文章

SignalR IOS 客户端,Web 套接字传输无法从服务器调用方法

调用 .NET Web 服务的 ColdFusion 代码

计算机网络复习笔记

计算机网络复习笔记

.Net中指标API应用

如何使用 ASP.NET C# 在使用 ajax 完成 Web 服务时生成警报