【问题标题】: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;
}
如果有更好的建议请告诉我。