我正在Visual Studio 2010中创建一个Web服务。如果它返回一个DataSet(强类型),那么来自另一个平台的人是否可以访问此端点并根据需要使用XML,或者它看起来像垃圾呢?
我的替代方案是什么?
编辑:如果我退回了DataTable怎么办?由于某种原因,我已阅读微软推荐反对此支持DataSet
答案 0 :(得分:0)
是的,跨平台编码器仍然可以读取XML,但它不是最好的选择。 Scott Hanselman says:
从WebServices返回数据集是撒旦的产生并代表世界上所有真正的邪恶
这是为包含1个表的简单DataSet生成的XML,包含2列和2个记录:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table1>
<Column1>hello</Column1>
<Column2>world</Column2>
</Table1>
<Table1>
<Column1>hello</Column1>
<Column2>greg</Column2>
</Table1>
</NewDataSet>
您的跨平台编码器需要解析XML,这可能变得非常麻烦,尤其是在数据很复杂的情况下。
DataSet实际上是关于表示数据库 - 在设计良好的分层应用程序中,它们只应在数据访问层中使用。然后应将它们变换为强类型域/模型对象,这些对象对数据库一无所知。
更好的选择是使用自定义对象。有关如何在Ryan Farleys blog上执行此操作的示例。
使用自定义对象的主要优点是: 1.它们是完全可互操作的 他们是强类型的 3.消费者不负责解析/反序列化XML 4.分离数据存储和消费者之间的关注点。
<强>侧面说明:强>
我应该指出,网络服务正在变得过时。如果您正在创建新的Web服务,那么您真的应该使用WCF。这需要一些学习,但它是一个更丰富,更灵活的平台。