Java 如何在两台计算机之间传递大量数据
将大量数据从一台计算机传输到另一台计算机(不在同一局域网内)的可能选项有哪些。数据量约为100Mb解压和2Mb压缩?另一个要求是,当我使用C#创建服务器时,Java客户端应该能够使用它Java 如何在两台计算机之间传递大量数据,java,wcf,web-services,Java,Wcf,Web Services,将大量数据从一台计算机传输到另一台计算机(不在同一局域网内)的可能选项有哪些。数据量约为100Mb解压和2Mb压缩?另一个要求是,当我使用C#创建服务器时,Java客户端应该能够使用它 WCF支持这样的东西吗?但如果Java客户端无法使用它,我就不感兴趣了 这里还有什么其他策略 在C语言中,您可以将对象序列化为XML并传输,另一端可以将XML反序列化回对象 就文件大小而言,您可以使用zipped或7z..进行传输,并在解析xml之前在客户端对其进行解压缩。我只会使用HTTP或FTP之类的常用工
- WCF支持这样的东西吗?但如果Java客户端无法使用它,我就不感兴趣了
- 这里还有什么其他策略
就文件大小而言,您可以使用zipped或7z..进行传输,并在解析xml之前在客户端对其进行解压缩。我只会使用HTTP或FTP之类的常用工具,因为将有大量现有库进行传输,而且您几乎可以保证不会出现兼容性问题。2MB对于这些协议来说并不是一个不合理的大数据量。WCF支持SOAP,并包括用于XHTTP的可选JSON序列化。还有其他机制,但它们是面向MS的。您将能够轻松地使用您创建的服务。但是,您将不得不考虑如何以非二进制数据友好的方式(XML/JSON)对数据进行编码。p>
您可能希望创建一个简单的http处理程序,该处理程序可以使用适当的mime头等直接以zip格式返回数据。然后,您应该能够使用Java客户机直接返回数据。XMPP是另一个选项。您需要另一台服务器,但这可能是一个优势:客户端不需要知道服务器的IP地址,服务器和客户端只需连接到XMPP服务器即可交换消息和文件 相关链接(适用于Java):
如果您没有具有众所周知的内容格式的流,那么您就有某种自定义数据。对于自定义数据,必须使用可互操作的传输格式,即XML。使用XML将进一步增加数据的大小。在这种情况下,你应该考虑把你的数据传输分成几个调用。您还可以尝试在IIS 7.x中托管WCF服务,并利用其内置的动态内容压缩功能。如果您的Java客户机在HTTP Accept Encoding头设置为compress的情况下调用该服务,gzip将自动压缩响应。请注意,只有.NET 4.0 WCF客户端可以使用此类服务 这是一个有趣的问题。这个问题很容易回答。但有趣的是,这种问题是新的,它们以前不存在。让我解释一下,但首先我要回答你的问题: 您应该使用老式的TCP流创建服务器和客户端。为了避免您需要以某种方式压缩流,这里使用您能找到的最常见的压缩算法之一(有人说Zip吗?)。现在您有了一个独立于语言的协议。任何语言的客户都可以工作,任务完成。另外,为了保持跨平台,不要选择最好的压缩,而是选择最常见的压缩(这样就足够了) 现在来看看为什么这类问题很有趣,它们展示了大规模的OOP。人们理解并使用大型框架,并询问这个或那个框架是否可以为他们执行这个或那个简单的任务。在这里,我们失去了根,我们失去了事物的内部运作,它不是用锤子而是用核导弹击中钉子。这超出了目标,将产生巨大的应用程序,占用大量空间,而且性能往往很差
我相信,自从OOP被完全采用以来,这个问题的数量增加了。就像新的程序员只想学习这些新的大框架,而这个框架模糊了世界的视野。大框架绝对没有错,它们很棒,但我相信在掌握基础知识之前就开始使用它们是错误的。这就像学习使用NASA航天飞机而不是塞斯纳私人飞机的学校版本飞行一样。HTTP支持gzip请求吗?当然,您可以在将数据包含在请求正文之前对其进行gzip处理。(但我不认为您可以在请求中使用
内容编码头。)互联网管道应该完成这项工作