我正在使用 .asmx 网络服务从Windows Mobile应用程序上传SQL Server CE压缩数据库文件。我将数据库分成1MiB块,重新组装服务器上的数据库。一旦服务器处理完数据库,就会使用移动应用程序驱动的类似过程将其传输回设备。这种方法效果很好,但有些用户的ADSL连接只允许~700Kb的上传速度。我想优化块大小,以确保这些用户可以获得最佳的上传体验。 ADSL是否有最佳的块大小?
答案 0 :(得分:5)
不同的DSL链接具有different packet sizes,具体取决于提供商,网络,用户的偏好以及其他因素。从服务器端预测用户将拥有什么是不可能的,让他们告诉你很麻烦。
只需通过TCP发送数据。该协议针对客户端和服务器设计为self-adjust to the optimal packet size。
如果您将数据削减到(大)块以支持恢复上传,那么您可以计算出客户在必须重新发送块时会丢失多少时间(例如,如果上传被中断)。因此,如果它们在传输1MiB块期间被中断,并且它们具有700Kib上行链路,那么如果它们必须重新传输整个块,则它们会丢失一秒钟。您可以使用它和您测量的完整TCP连接失败的概率 - 套接字关闭和需要重新传输的块 - 来计算每个文件的预期重新传输开销。
由于TCP故障非常罕见(通常它只是缓冲并等待在移动连接出现时等待发送其余数据),除非您有实时控制循环,否则罕见的1秒故障可能无法察觉。可能是整个数据库的上传不是。