0

在这里挣扎着,我发现许多文档都是以CF 1.0为中心的,并且讨论了2.0的变化,以允许泛型和在CF 2.0上键入DS'es。好吧,CF 2.0已经走了,MS仍然没有更新就显示出来。Web服务,泛型,键入DS,Compact Framework 2.0,当前(2009)最佳实践?

我还没有准备好跳入WCF,我的客户有很多旧的小型框架 2.0机器。我很幸运,因为这些Web服务是私密的,非常封闭。

所以,我的问题:

1)类型化数据集或仿制药使用vb.net CF 2.0支持?据我所知,它们不是或者部分不是被序列化为一个数组,这是一件坏事吗?

2)在发送和返回小的数据集,不超过20行,我有一些老的方法,字符串数组,发送比数据集小得多的信封。这仍然是一种很好的工作方式,或者有更好的方法吗?我在字符串数组中传递5-6个元素并获得合理的性能。这些缺点是将数据从数据读取器或数据集预处理成字符串数组。

3)使用ds作为车辆,我发现编码非常快速和容易。我正在使用getchanges方法并一次发送很少的行。如果我的信封在150K以下,我是这样做的罪犯吗?

谢谢!

回答

0

1).NET Compact Framework 2.0支持泛型,但我不确定输入的数据集。我可以告诉你,由于性能的原因,不推荐在.NET Compact Framework上使用无类型的数据集,与其他方法(如通用列表)相比,它们处理速度很慢并占用大量内存。

2)您必须权衡将数据转换为字符串所需的时间与将数据集转换为XML以通过线路发送所需的时间。最终,当通过Web服务发送时,所有内容都将以XML格式结束。一个序列化为XML的数据集将比一个简单的字符串数组占用更多的字节......这会导致您的第三个问题。

3)我不会说这是犯罪,但你多久发送一次数据? 150k是通过无线或单元数据连接发送的大量数据,对于CPU和内存有限的设备来说,它们的数据量也很大,以便定期序列化和发送数据。 XML序列化/反序列化在具有大型数据集的.NET CF中是缓慢的。另一方面,如果这是每天发生一次,我会说没什么大不了的。

+0

谢谢,回复。我有泛型工作,但它不会将一个类或一个类的列表与多个成员序列化。字符串列表工作在顶部,但类型CustClass的列表不会在CF端序列化。所以,除了短名单之外,这个名单已经出来了。我认为阵列最适合这种情况。一系列类型似乎序列化好。 我很幸运,这个应用程序特别是一个WiFi应用程序,我们有500kb/s的所有地方,除了塔下和建筑物后。 – Davery 2009-11-05 17:11:59

+0

关于保存,我发现了一个有趣的方法来取得一个DS,用“getchanges()”拉出变化,然后删除除了我的重要列(除去笔记等)。这在数据被保存时通过,然后通过WS重新集成。不错,但我希望我可以发送一个轻量级对象。 – Davery 2009-11-05 17:12:31

+0

嗯,我已经能够在Web服务中序列化和反序列化项目的通用列表 - 这不应该成为.NET 2.0 ASMX Web服务中的问题。你的CustClass标记为[Serializable]吗?另外,有些类型不能被序列化,例如字典,流等,所以你必须忽略这些属性。 – jspru 2009-11-05 18:37:57