Silverlight页面绑定到数据集(设计问题)

时间:2009-06-04 12:00:54

标签: silverlight data-binding dataset

我有一个传统的dot net应用程序(现已迁移到.net 2.0)。

我们需要将此应用程序转换为silverlight。

这里的问题是数据层。 全部数据层中的方法返回数据集。 整个Web应用程序正在使用数据集进行数据绑定。

现在的问题是:

  1. 我是否也可以为silverlight页面使用相同的数据集?
  2. 或者我是否必须在数据层周围创建一个包装器?
  3. 或者我是否必须更改整个数据层架构(如返回集合等)?
  4. 请建议最佳方式。

    谢谢, SNA

2 个答案:

答案 0 :(得分:1)

不幸的是,Silverlight 2不支持DataSet(并且afaik不会出现在Silverlight 3中)。

我将假设您当前的数据层具有返回DataSet的GetTopCustomers方法,然后客户端应用程序可以修改该数据并将其重新提交到UpdateCustomers等数据层函数,该函数将DataSet作为参数并且然后将更改提交到数据库。如果是这种情况,我认为你在编写包装器时会遇到困难,因为你将独自执行参照完整性并跟踪客户端的更改。这当然是可能的,但我认为它会比它的价值更痛苦。因此,在数据层周围创建包装器等同于更改整个数据层架构以返回集合等。

数据层最好的选择是.NET RIA服务,该服务在Silverlight 3时间框架中发布。这是对当前技术ADO.NET Data Services的一次巨大飞跃,它为客户端添加了变更跟踪和类似DataSet的“上下文”。它还允许在ASP.NET(或完整.NET Framework的任何部分)和Silverlight之间直接共享代码,因此您的业务规则可以在客户端和服务器端运行。重写你的数据层可能听起来不太吸引人,但我认为它会给你带来很大的痛苦,如果选择.NET RIA Services,你将获得丰厚的回报。如果该选择不合适则另一种选择是使用ADO.NET数据服务来回传送数据(与当前数据层的包装器结合)或编写自己的自定义WCF服务以提供CRUD操作(再次在当前数据层上使用包装器。)

祝你好运!

答案 1 :(得分:0)

如果转换的目标是创建应用程序的Silverlight版本,并且对业务逻辑层的更改量最小,那么包装就是您的答案。

您可能知道,Silverlight V2中有很多工作要做。 If you'd like some detail, here's a blog post。您将最终滚动自己的序列化/反序列化/ zip /编码层,以将数据传输到Silverlight应用程序。

Silverlight 3尚未发布,但接近谣言。这个功能出现在V3中(据我所知)。