繁体   English   中英

Silverlight数据访问

[英]Silverlight data access

我正在开发一个silverlight报告工具,它根据客户数据绘制各种奇特的图形。 我现在遇到的问题是将我需要的所有数据从数据库获取到我的silverlight应用程序的好方法。

Sofar我有一个Web服务,将我的数据分成1000个组并将它们发回给我。 我需要超过3000条记录,这需要大约4次调用Web服务,每秒2秒。 不用说,它比我想要的慢。

我目前有这些设置:


binding.MaxBufferSize = 2147483647;
binding.MaxReceivedMessageSize = 2147483647;

我确信有人有更好的方法来获取更快的数据库数据。 至少,这种方式可以让我一次性获取所有数据。

它(部分基于前面的问题 )听起来像带宽是问题; 我会认真考虑尝试protobuf-net; 该“协议缓冲区”格式由谷歌设计是非常有效的( 使默认DataContractSerializer ),它可以非常方便地从.NET使用。 适用于与带宽相关的场景。 唯一的问题是目前WCF挂钩不能与Silverlight一起使用(所以你不能只添加一个属性/配置条目),但你可以很容易地将数据作为byte[]传递(只需返回byte[]一个方法)。

例如; 如果你有一个像这样的记录:

[ProtoContract]
public class MyRecord {
    [ProtoMember(1)]
    public int Id {get;set;}

    [ProtoMember(2)]
    public string Description {get;set;}

    // etc
}

List<MyRecord> ,那么你应该可以使用:

byte[] result;
using(MemoryStream ms = new MemoryStream()) {
    Serializer.Serialize(ms, list); // or maybe (list, ms) ;-p
    result = ms.ToArray();
}

我也看到有人在操作合约上返回一个Stream (而不是byte[] ) - 这似乎与MTOM一起工作得更好(提示:如果可能的话,你在传递原始二进制文件时肯定想启用MTOM)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM