c# - 将数据集从 WCF 服务传递到 Silverlight 应用程序

标签 c# .net wcf silverlight silverlight-4.0

我有一个大约 20,000 行的数据集,我将其转换为 IEnumerable<Dictionary<string, object>>使用此代码:

IEnumerable<Dictionary<string, object>> IEnu = ds.Tables[0]
    .AsEnumerable()
    .Select(r => ds.Tables[0]
        .Columns.Cast<DataColumn>().Select(c => new {
            Column = c.ColumnName,
            Value = r[c]
        }).ToDictionary(
            i => i.Column,
            i => i.Value != DBNull.Value ? i.Value : null
        )
    );

但是IENU对象大小太大(大约 7 到 8 MB)。这是通过服务传递的非常大的尺寸。另一种选择是生成数据集的 XML(大约 1 到 2 MB),但仍然存在一个问题,我无法识别 XML 节点数据的数据类型,我也没有创建任何包含 XML 节点属性的类并创建一个列表,因为我的选择查询是基于条件的,所以在传入 sql 后在客户端生成

那么我如何传递 XML 中的数据类型,或者是否有任何其他方法将数据从 WCF 服务传递到 Silverlight 应用程序?

最佳答案

服务应该返回强类型对象,这些对象被序列化为一个对象或一个对象数组到 SOAP、POX(普通的旧 xml rest)或 json(javascript 对象表示法)中。如果使用 REST,WCF 可以简单地通过为对象赋予 DataContract 属性来返回 XML 或 JSON 格式。

DataSet(或 DataReader)从数据库返回。服务提供了对可能随时间变化的存储机制的抽象。

通过传回序列化对象,silverlight(或任何其他客户端)可以将它们反序列化为更容易处理的对象。

此外,我支持关于不传回 20K 行的评论。找到分页数据的方法(分块请求)。

搜索 REST 和 WCF 或 Web 服务和 WCF。

希望对您有所帮助。

关于c# - 将数据集从 WCF 服务传递到 Silverlight 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214156/

相关文章:

c# - 如何解码谷歌浏览器中的编码网址?

.net - 如何以编程方式区分/控制 Azure 内部流量与出站流量?

.net - 使用传输安全和证书的 WCF 服务出现 SSL 错误。验证

c# - LINQ 实体结果到 List<string>

c# - 如何从路径目录字符串中删除文件名?

c# - 在 C# 中键入右大括号后,如何自动将光标定位在方法大括号之间?

c# - 从 short 中获取前 13 位

.net - 拆箱是否仅返回指向堆上装箱的对象中的值的指针?

.net - 从触发器 (SQL Server) 中调用 Web 服务的最佳做法是什么

.net - 如何在传输级别压缩来自 WCF .NET 的 HTTP 请求?