我应该从Web服务返回强类型数据集吗?

时间:2008-09-22 18:07:40

标签: .net data-binding dataset

我是否应该从Web服务公开强类型数据集并将其直接绑定在客户端中?或者是否有更合理的方式来提供asmx Web服务?我正在做CRUD操作(创建,读取,更新,删除)。

我发现使用数据集会让人感到沮丧,并且难以在例如插入其中的表时使用。当仅插入一条记录或仅从数据集中的特定表中获取一条记录时,将整个数据集来回传送似乎不合逻辑。

有更好的方法吗?

我是否应该通过Web服务转换为对象并使用对象?在整个地方进行转换以获取传递的对象可能同样乏味?

6 个答案:

答案 0 :(得分:4)

这取决于您的互操作性要求。虽然完全可以从几乎任何环境处理DataSet XML,但它可能会变得非常难以理解。如果您没有互操作性,我肯定会推荐使用类型化数据集路由,因为从C#中使用它并且“只是工作”非常简单。

答案 1 :(得分:3)

我会说选择对象,DataSet可能会变得有点混乱。查看对象可以更清晰,当然还有调试。

使用抽象类型时要小心,因为如果你有基于抽象类/接口的集合,序列化会有点麻烦。我过去遇到过这方面的问题,但我是found a solution

答案 2 :(得分:2)

请注意Dataset特定于.NET。如果你想让你的API可以互操作,你应该坚持使用基本数据类型和结构(否则,非.NET开发人员的情况可能很麻烦)。

然后,Web服务不是为了在一次旅行中传递大型对象而设计的。如果您的数据集包含的数据量超过几百KB,则可能最终会出现客户端或服务器端HTTP超时(考虑默认设置)。

对于CRUD操作,我只是建议直接通过WS公开每个操作。

答案 3 :(得分:2)

我在DataSet上取得了巨大成功(服务器使用并返回强类型数据集,而客户端将其作为标准数据集使用)。就像Tomer警告的那样,我没有互操作性问题。

关于更新,发送整个数据集是一个坏主意。 DataSet和DataTable对象上都有一个名为GetChanges()的方法,它将返回自调用AcceptChanges()以来的所有编辑。这可以帮助您减少网络流量。

答案 4 :(得分:1)

答案 5 :(得分:0)

我同意Joannes ......坚持使用对象和特定方法来处理您想要公开的操作类型。