Silverlight 数据访问

标签 silverlight data-access

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

到目前为止,我有一个 Web 服务,它将我的数据分成 1000 个组,然后将它们发送回给我。我需要 3000 多条记录,这需要对 Web 服务进行大约 4 次调用,每次调用 2 秒。不用说,它比我想要的要慢。

我目前已经设置了这些:


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

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

最佳答案

(部分基于 earlier question )听起来带宽是问题所在;我会认真考虑尝试 protobuf-net; Google 设计的“ Protocol Buffer ”格式非常高效(比默认的 DataContractSerializer 高效得多),并且可以在 .NET 中非常方便地使用。非常适合与带宽相关的场景。唯一的问题是,目前 WCF Hook 无法与 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)。

关于Silverlight 数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462452/

相关文章:

silverlight - DataTrigger 未在 Silverlight 中使用 GoToStateAction

vb.net - 如何在 Textblock 中输入制表符?

matlab - 如何从另一个程序访问 MATLAB(插值)样条曲线?

.net - Visual Studio 2010 ADO.NET 数据模型与 Linq to SQL

java - 数据访问层和数据访问对象有什么区别?

c# - 如何放大和缩小WP7中的图片?

c# - MVVM 将如何用于游戏?

silverlight - Silverlight 4 应用程序中的 DLR 脚本

database - 无法构造类型数据库。您必须配置容器以提供此值 (EntLib 5 + ODP.NET)

C# 静态数据库类?