【问题标题】:Fast way to send data from homepage to console program将数据从主页发送到控制台程序的快速方法
【发布时间】:2014-02-10 19:29:17
【问题描述】:

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

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

我已经退出了很多数据,序列化数据需要 7 秒。 有更快的数据交易方式吗?

也许是 xml 或通过 SignalR?

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

任何想法都会受到赞赏。

肯尼斯的问候

【问题讨论】:

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


    【解决方案1】:

    我决定通过序列化为二进制而不是 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;
    }
    

    如果有更好的建议请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2011-04-28
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多