我有一个宁静的wcf服务。我必须将图像从服务发送到Android应用程序。出于安全原因,我无法使用或提供直接的图像URL下载。图像大小不到2MB。我正在使用ByteArray将图像从WCF服务发送到json中的Android应用程序,如下:
<OperationContract()> _
<WebGet(UriTemplate:="/GetFile", ResponseFormat:=WebMessageFormat.Json, RequestFormat:=WebMessageFormat.Json)> _
Function GetFile(Byval Token as String) As Byte()
GetFile函数返回一个ByteArray图像。我很困惑,因为我经历了很多网站。
字节数组是否转换为 Base64String 。如果是那么Android客户端收到的图片大小将增加约30%。
我的问题是
将图像(小于2MB)从restful wcf发送到Android应用程序而不增加其数据大小的最佳方法是什么。 (没有任何Base64或任何转换)?
将图像作为 Stream 而不是ByteArray发送会给服务器带来开销并使用大量内存吗?
答案 0 :(得分:1)
ByteArray并不是一个好习惯。序列化ByteArray太慢了。为了解决这个问题,建议将ByteArray转换为Base64String。但如果你不想增加尺寸,你可以流式传输图像。 发送流没有开销但你不能用你的流序列化任何其他内容。在你的情况下它可以。