处理varbinary(max)和C#Web API的策略

时间:2014-04-07 20:48:59

标签: c# json entity-framework

我有一个应用程序将实体推送到Web服务,其中一些实体包含byte [],它们存储为varbinary(max)。文件本身并不是非常大,通常是100KB左右,但一次推送通常只有10到20个。在我看到性能方面的潜在改进时,整个实体被编码为JSON并被推高。对于byte [] / varbinary字段,这会使JSON对象非常大而且速度很慢 - 发送5个图像实体的幅度超过3分钟。我没有找到很多关于是否是这种序列化/序列化和消息大小导致这样的问题的东西。我曾经想到的是将图像实体作为直接二进制数据发送。我还没有真正看到其他建议,所以我很好奇是否有人有这样或那样的关于表现的更好的想法或论点。

2 个答案:

答案 0 :(得分:0)

我会切换压缩(除非你已经这样做了)。

这是一个提示:

What header should be used for sending GZIP compressed JSON from Android Client to Server?

答案 1 :(得分:0)

我在最近的项目中使用了Web API,并使用 MultipartMemoryStreamProvider 来流式传输二进制对象(图像/文件等),我的代码来自类似于 - >的示例。 this

我的API签名,传递与二进制相关的任何数据,在本例中只是一个int:

    [HttpPost]
    public async Task<HttpResponseMessage> CreateAttachment(int componentId)
    {

        /* Code for reading stream and storing goes here */
        /* Very similar to code in link above */

    }