1

我正在寻找一种将图像包含到服务堆栈模型中的好策略(如果可能的话)。我已经搜索了示例或提示,但运气不佳。

就像是

class House
{
    string Address;
    //Image could be anything as long as it can be returned and viewed as a picture in a  
      browser.     
    Image Picture;
}

这可以作为响应的一部分返回并正确显示吗?

4

1 回答 1

2

将二进制 blob 数据直接包含在 DTO 有效负载中很少是一个好主意。

发送二进制格式的二进制数据

唯一有意义的格式是使用二进制格式,如ServiceStackProtoBufMessage Pack格式的支持,它们不会因编码二进制数据而受到惩罚。在这种情况下,您会将图像序列化为byte[]DTO 上的属性。如果您尝试以文本格式执行此操作,则需要使用类似 Base64 的格式对二进制数据进行编码,从而不必要地使有效负载膨胀并增加计算开销。

将 url 嵌入到图像或二进制文件中

推荐的方法不是直接在 DTO 中嵌入图像,而是只包含一个引用图像的 Url。ServiceStack 非常支持返回原始二进制或文本数据,您可以简单地返回任何byte[], Image, Stream, IStreamWriter, rawstrings等,它会按预期序列化它们。

ServiceStack 对原始二进制或文本响应的支持

一个很好的例子可以在新的 Image Resizer imgur.servicestack.netRestFiles示例演示中看到。

以下是有关 wiki 上自定义 HTTP 响应的更多信息:

于 2013-04-19T17:43:57.920 回答