我正在寻找将图像包含到服务堆栈模型中的好策略(如果可能的话)。我搜索过示例或提示,但没有太多运气。
像
这样的东西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;
}
这可以作为响应的一部分返回并正确显示吗?
答案 0 :(得分:2)
将二进制blob数据直接包含在DTO有效负载中并不是一个好主意。
唯一有意义的格式是使用ServiceStack's支持ProtoBuf或Message Pack格式的二进制格式,这些格式不会因为编码二进制数据而使您受到惩罚。在这种情况下,您可以将图像序列化为DTO上的byte[]
属性。如果您尝试以文本格式执行此操作,则需要使用类似Base64的格式对二进制数据进行编码,不必要地增加有效负载并增加计算开销。
建议的方法是将图像直接嵌入DTO中,而不是仅包含引用图像的Url。 ServiceStack非常支持返回原始二进制或文本数据,您只需返回任何byte[]
,Image
,Stream
,IStreamWriter
,原始strings
等,它将按预期序列化它们。
在新的Image Resizer imgur.servicestack.net或RestFiles示例演示中可以看到一个很好的例子。
以下是有关维基上的自定义HTTP响应的更多信息: