从Web Service获取DataGrid数据的最佳实践

时间:2010-10-18 10:45:02

标签: c# wpf

我有WPF DataGrid从Web服务获取他的数据。最终用户可以在DataGrid中自定义可见列。

第一种方法:

我在xml中获取此数据,并在将xml转换为dataTable后将其提供给DataGrid的ItemsSource。

第二种方法:

此外,我可以从服务中获取类数组(例如Customer [])

问题:

我使用第一种方法进行额外步骤,目的是不从服务中获取冗余数据。 在第二种方法中,如果用户在DataGrid中只看到两列(类中一个属性的一列),他将获得具有所有填充属性(冗余数据)的所有类。在第一种方法中,他只获得数据xml,这将在UI中的数据网格中可见。

但我在我的项目中使用MVMM方法,我不想使用xml和dataTable方法。我想我必须使用第二种方法,但在这种情况下我得到了冗余数据

3 个答案:

答案 0 :(得分:1)

  

在第二种方法中,如果用户在DataGrid中只看到两列(类中一个属性的一列),他将获得所有具有所有填充属性的类(冗余数据)

如果以上是唯一阻止您使用第二种方法的东西,那么C#v4.0具有Named and Optional Arguments功能。这适用于

Console.WriteLine(Calculate(weight: 123, height: 64));

即使实际的Calculate()有99个参数,with any order

请注意,我认为,冗余是指不需要的数据。

答案 1 :(得分:0)

我会采用第二种方法,即使这可能会传输更多的数据。如果你真的想要控制哪些字段被提取,这可能会使你的应用程序变得更复杂,然后是必要的。

您是否确认第二种方法存在性能问题?

答案 2 :(得分:0)

这是我们在开发软件时经常遇到的另一种权衡。

在您的具体情况下,

通过不使用强类型数据方法,通过在网络和灵活性上传输更少(不确定是否真的很多)数据,第一种方法具有性能优势。

从长远来看,第二种方法更易于管理和轻松开发。

要选择正确的方法,您应该考虑并加权非功能性需求,例如性能,可扩展性,可管理性等。