C# 传递列表的最佳方式是什么<;DTO>;是否在WCF中包含图像?

C# 传递列表的最佳方式是什么<;DTO>;是否在WCF中包含图像?,c#,wcf,C#,Wcf,我正在使用通过WCF从后端发送到前端的DTO。 我的DTO的结构如下所示: [DataContract] public class MyDTO { [DataMember] public Guid Id; [DataMember] public string Image; [DataMember] public int? Version; } 如您所见,我们将图像作为字符串处理。当我们从服务中检索字符串时,我们使用StringBuilder在

我正在使用通过WCF从后端发送到前端的DTO。 我的DTO的结构如下所示:

[DataContract]
public class MyDTO
{
    [DataMember]
    public Guid Id;

    [DataMember]
    public string Image;

    [DataMember]
    public int? Version;
}
如您所见,我们将图像作为字符串处理。当我们从服务中检索字符串时,我们使用StringBuilder在UI中显示它以构建html节:

keyboardHtml.Append("'<img class=\"");
keyboardHtml.Append("' src=\"");
keyboardHtml.Append("data:image/png;base64,");
keyboardHtml.Append(image.Image);
keyboardHtml.Append("\"");
keyboardHtml.Append(“'
我们需要同时获得200多个图像,如果我们将所有图像发送到一个列表中,我们将获得超出最大配额的异常

配置文件中的绑定配置包括:

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);
}

for(inti=0;我将研究如何使用字节数组(
byte[[
)和流式处理(或分块)。我还将使用byte[],但没有更好的方法。唯一的另一种可能性是发送路径,如果网站可以访问文件系统,它就可以读取映像。当然,如果您将映像保存在数据库或其他二进制格式中,而不是保存在文件系统中,或者如果您没有进行服务器端处理(如ASP),则这不起作用。