[英]How to load large models(Above 50mb) on Unity3d using AR toolkit from autodesk forge
[英]How to transfer a large Zip file (50MB) using a WCF Service through SOAP to any client?
我有一个WCF服务,它返回一个带有Zip文件(50MB)的字节数组给任何请求它的客户端。 如果Zip非常小(比如1MB),则SOAP响应来自WCF,其中嵌入了字节数组。 但即使对于1MB的文件,响应大小也非常大。 如果我尝试传输50MB文件,服务会挂起并抛出内存不足异常,因为SOAP响应变得非常大。
当我发回一个字节数组时,WCF / Web服务可用于传输大文件(主要是ZIP格式)的最佳选项是什么。 是否有任何好方法而不是发回文件?
WCF / Web服务是否是将大型文件传输到任何客户端的最佳方式,还是有其他更好的选项/技术可用,以便实现10,000个用户的互操作性和可扩展性?
我的Ccode如下:
String pathfordownload = @"D:\New Folder.zip";
FileStream F2D = new FileStream(pathfordownload, FileMode.Open,FileAccess.Read);
BinaryReader binReader = new BinaryReader(F2D);
binReader.BaseStream.Position = 0;
byte[] binFile = binReader.ReadBytes(Convert.ToInt32 (binReader.BaseStream.Length));
binReader.Close();
return binFile;
一份工作/真实的信息将非常有用,因为我正在努力应对Google提供的所有数据,并且上周没有取得好成绩。
我遇到了完全相同的问题。 内存不足是不可避免的,因为您使用的是Byte数组。
我们所做的是刷新硬盘驱动器上的数据,因此不受虚拟内存的限制,并发事务的容量就是高清空间。
然后为了转移,我们将文件放在另一台计算机上。 当然,在我们的例子中,它是服务器到服务器文件传输。 如果要从对等体中解除分离,可以使用http中的文件下载。
因此,您的服务可以使用http url响应文件位置,而不是使用文件进行响应。 然后,当客户端使用标准HttpRequest或WebClient成功下载服务器时,它会调用删除文件的方法。 在SOAP中可以是Delete(字符串url),在REST中,它将是资源上的delete方法。
我希望这对你有意义。 最重要的部分是了解在可扩展的软件中,特别是如果您正在查看10000个客户端(并发?),您可能不会使用有限的资源,如内存流或字节数组。 而是依赖于大型且易于扩展的资源,例如硬盘驱动器分区,最终可以在SAN上运行,IT可以根据需要增加分区。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.