我正在使用通过WCF从后端发送到前端的DTO。 我的DTO的结构是这样的:
[DataContract]
public class MyDTO
{
[DataMember]
public Guid Id;
[DataMember]
public string Image;
[DataMember]
public int? Version;
}
如您所见,我们将Image作为字符串处理。当我们从服务中检索字符串时,我们使用StringBuilder在UI中显示它以构建一个html部分:
keyboardHtml.Append("'<img class=\"");
keyboardHtml.Append("' src=\"");
keyboardHtml.Append("data:image/png;base64,");
keyboardHtml.Append(image.Image);
keyboardHtml.Append("\"");
如果我们将所有图像发送到一个列表中,我们需要同时获得200多张图像。 MyDTO&gt;我们得到超出最大配额的例外。
在配置文件中,绑定配置为:
maxBufferPoolSize =“524288”
maxBufferSize =“655360”
maxReceivedMessageSize = “655360”
为了避免这个错误,我们使用迭代器以20个图像块的形式调用服务:
for (int i = 0; i <= numberOfImages; i += 20)
{
List<MyDTO> listIncomplete = communicator.SendCommand<int, List<MyDTO> ("GetImagesRange", i);
resultList.AddRange(listIncomplete);
}
我确信这完全没有用。我想问一下:
1。)可以使用哪种数据类型代替字符串来发送图像以提高效率?
2.。)哪种其他方法可用于优化这种图像检索方式?
附加说明 - 这些图像存储在数据库中。 提前致谢。任何帮助将非常感激。