Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在两台计算机之间传递大量数据_Java_Wcf_Web Services - Fatal编程技术网

Java 如何在两台计算机之间传递大量数据

Java 如何在两台计算机之间传递大量数据,java,wcf,web-services,Java,Wcf,Web Services,将大量数据从一台计算机传输到另一台计算机(不在同一局域网内)的可能选项有哪些。数据量约为100Mb解压和2Mb压缩?另一个要求是,当我使用C#创建服务器时,Java客户端应该能够使用它 WCF支持这样的东西吗?但如果Java客户端无法使用它,我就不感兴趣了 这里还有什么其他策略 在C语言中,您可以将对象序列化为XML并传输,另一端可以将XML反序列化回对象 就文件大小而言,您可以使用zipped或7z..进行传输,并在解析xml之前在客户端对其进行解压缩。我只会使用HTTP或FTP之类的常用工

将大量数据从一台计算机传输到另一台计算机(不在同一局域网内)的可能选项有哪些。数据量约为100Mb解压和2Mb压缩?另一个要求是,当我使用C#创建服务器时,Java客户端应该能够使用它

  • WCF支持这样的东西吗?但如果Java客户端无法使用它,我就不感兴趣了
  • 这里还有什么其他策略
在C语言中,您可以将对象序列化为XML并传输,另一端可以将XML反序列化回对象


就文件大小而言,您可以使用zipped或7z..进行传输,并在解析xml之前在客户端对其进行解压缩。

我只会使用HTTP或FTP之类的常用工具,因为将有大量现有库进行传输,而且您几乎可以保证不会出现兼容性问题。2MB对于这些协议来说并不是一个不合理的大数据量。

WCF支持SOAP,并包括用于XHTTP的可选JSON序列化。还有其他机制,但它们是面向MS的。您将能够轻松地使用您创建的服务。但是,您将不得不考虑如何以非二进制数据友好的方式(XML/JSON)对数据进行编码。p>
您可能希望创建一个简单的http处理程序,该处理程序可以使用适当的mime头等直接以zip格式返回数据。然后,您应该能够使用Java客户机直接返回数据。

XMPP是另一个选项。您需要另一台服务器,但这可能是一个优势:客户端不需要知道服务器的IP地址,服务器和客户端只需连接到XMPP服务器即可交换消息和文件

相关链接(适用于Java):


您没有提到要发送什么类型的数据。为了简单起见,我假设您有可以转换为字节数组的数据流。流的内容必须采用C#和Java都能理解的格式

最好的选择是使用GZip流压缩数据流。Java上应该支持Gzip。然后,您可以将转换为字节数组的流作为WCF服务操作的响应发送。可以使用默认文本编码,将字节数组转换为Base64编码字符串。如果您的java客户机支持MTOM(这是java支持的标准),那么您可以使用MTOM编码,它使用较小的消息


如果您没有具有众所周知的内容格式的流,那么您就有某种自定义数据。对于自定义数据,必须使用可互操作的传输格式,即XML。使用XML将进一步增加数据的大小。在这种情况下,你应该考虑把你的数据传输分成几个调用。您还可以尝试在IIS 7.x中托管WCF服务,并利用其内置的动态内容压缩功能。如果您的Java客户机在HTTP Accept Encoding头设置为compress的情况下调用该服务,gzip将自动压缩响应。请注意,只有.NET 4.0 WCF客户端可以使用此类服务

这是一个有趣的问题。这个问题很容易回答。但有趣的是,这种问题是新的,它们以前不存在。让我解释一下,但首先我要回答你的问题:

您应该使用老式的TCP流创建服务器和客户端。为了避免您需要以某种方式压缩流,这里使用您能找到的最常见的压缩算法之一(有人说Zip吗?)。现在您有了一个独立于语言的协议。任何语言的客户都可以工作,任务完成。另外,为了保持跨平台,不要选择最好的压缩,而是选择最常见的压缩(这样就足够了)

现在来看看为什么这类问题很有趣,它们展示了大规模的OOP。人们理解并使用大型框架,并询问这个或那个框架是否可以为他们执行这个或那个简单的任务。在这里,我们失去了根,我们失去了事物的内部运作,它不是用锤子而是用核导弹击中钉子。这超出了目标,将产生巨大的应用程序,占用大量空间,而且性能往往很差


我相信,自从OOP被完全采用以来,这个问题的数量增加了。就像新的程序员只想学习这些新的大框架,而这个框架模糊了世界的视野。大框架绝对没有错,它们很棒,但我相信在掌握基础知识之前就开始使用它们是错误的。这就像学习使用NASA航天飞机而不是塞斯纳私人飞机的学校版本飞行一样。

HTTP支持gzip请求吗?当然,您可以在将数据包含在请求正文之前对其进行gzip处理。(但我不认为您可以在请求中使用
内容编码
头。)互联网管道应该完成这项工作