我应该从webservice返回一个强类型数据集吗?

7
我应该从Web服务公开一个强类型数据集并直接在客户端绑定它吗?还是对于asmx Web服务有更明智的方式?我正在进行CRUD操作(创建、读取、更新、删除)。
我发现使用数据集很令人沮丧,例如在其中插入表格时很难使用。当仅向其中一个表格插入一条记录或仅从其中一个表格获取一条记录时,将整个数据集来回传输似乎不合逻辑。
是否有更好的方法?
也许我应该将其转换为对象并在Web服务中使用对象?到处进行转换以获取传递的对象可能同样繁琐?
6个回答

4

这取决于你的互操作性要求。虽然从实际上任何环境处理DataSet XML都是完全可行的,但它可能变得笨重。如果你不需要互操作性,我强烈建议使用类型化数据集路线,因为它非常简单易用,可以在C#中轻松使用,并且“只需运行”。


3
我会建议选择对象,DataSet可能会变得有些混乱。对象可以更加清晰易懂,当然也更容易进行调试。
但是,在使用抽象类型时要小心,因为如果你有基于抽象类/接口的集合,序列化可能会有些麻烦。我过去曾经遇到过这样的问题,不过我找到了解决方案

2
请注意,Dataset 是特定于.NET的。如果您想使API具有互操作性,则应坚持使用基本数据类型和结构(否则,非.NET开发人员可能会感到繁琐)。
然后,Web服务并不是为了在单次传输中传递大型对象而设计的。如果您的数据集包含超过几百KB,考虑到默认设置,您很可能会遇到客户端或服务器端HTTP超时。
对于CRUD操作,我建议直接通过WS公开每个操作。

2
我在使用数据集方面取得了巨大成功(服务器使用并返回强类型数据集,而客户端将其作为标准数据集使用)。正如Tomer所警告的那样,我没有互操作性问题的好处。
关于更新,发送整个数据集是一个不好的主意。DataSet和DataTable对象上都有一个名为GetChanges()的方法,它将返回自AcceptChanges()以来的所有编辑内容。这应该可以帮助您保持网络流量的下降。


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

如果你只是发帖表示同意,为什么不直接点赞呢? - Alex Lyman
好问题,我的大脑不太灵光。抱歉并投票给Joannes - 已完成。 - brock.holum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接