从主页向控制台程序发送数据的快速方法

时间:2014-02-08 21:08:19

标签: json signalr asp.net-web-api

我使用Web API将数据从MVC-主页传输到af控制台程序,如下所示:

  • 通过Entity Framework从MSSQL获取数据。
  • 将数据序列化为json。
  • 通过Newtonsoft Json。邮编数据。发送到控制台。
  • 解压缩数据。
  • 反序列化数据。
  • 将其读入我的数据模型并使用数据。

我已经退出了大量数据,只需要7秒钟来序列化数据。 是否有更快的方式来处理数据?

也许是xml或通过SignalR?

我已经查看了ServiceStack以序列化json,这应该更快,但我的数据是层次结构,Newtonsoft使用PreserveReferencesHandling处理得非常好。

任何想法都将受到赞赏。

来自肯尼思的亲切问候

1 个答案:

答案 0 :(得分:0)

我决定通过序列化为二进制而不是json来处理这个问题。

它让我从6秒的加载时间降到0.3秒。 我的数据有很多自引用,这对于json序列化来说非常耗时。

现在我用[Serializable]标记了所有对象。

然后我序列化为可以压缩的二进制格式,然后通过API流式传输到我的控制台。

序列化器:

public static byte[] CompressBinary(object value)
{
        byte[] result;
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        using (var stream = new MemoryStream())
        {
            binaryFormatter.Serialize(stream, value);
            stream.Position = 0;
            result = CompressStream(stream);
        }
        return result;
}

请告诉我是否有更好的吸烟。