C# 为什么不是';在webservice响应中发送datatable和dataset不是一个好的做法

C# 为什么不是';在webservice响应中发送datatable和dataset不是一个好的做法,c#,asp.net,web-services,C#,Asp.net,Web Services,我收到了一个需要集成到代码中的web服务,但是我得到的这些方法的响应是一个DataTable。请帮助我理解为什么不遵循这一做法。简而言之,在web服务上返回数据表或数据集是不好的做法的主要原因是,通常web服务可以由多个源(内部或外部)使用,例如,如果您将一个数据表返回到一个ajax调用,您将面临一堆更大的问题,因为数据表对象通常包含额外的数据变量,如果您可能已经接收到最终的对象,这只是调用的额外带宽 返回数据表甚至数据集的方法(如果是内部调用)应移动到应用程序的数据库层,以便在业务层希望构建最

我收到了一个需要集成到代码中的web服务,但是我得到的这些方法的响应是一个DataTable。请帮助我理解为什么不遵循这一做法。

简而言之,在web服务上返回数据表或数据集是不好的做法的主要原因是,通常web服务可以由多个源(内部或外部)使用,例如,如果您将一个数据表返回到一个ajax调用,您将面临一堆更大的问题,因为数据表对象通常包含额外的数据变量,如果您可能已经接收到最终的对象,这只是调用的额外带宽

返回数据表甚至数据集的方法(如果是内部调用)应移动到应用程序的数据库层,以便在业务层希望构建最终对象以返回接口层以发送到响应或对其进行处理时调用


在为web服务构造响应时,通常最好已经返回强类型对象或动态的结构化列表(如果您发送可缩放类型的数据)

在你的标题中,你会问这是否是一个好的做法。在你的问题中,你需要解释为什么这不是一个好的做法。不清楚你在问什么,没有更多的细节,答案充其量是“可能”。如果这是一个内部使用的服务,那么返回一个数据表可能非常容易,如果这是一个外部服务,可能并不理想。我喜欢将我的契约(请求/响应)从底层结构中分离出来——在本例中,我假设您的数据表是实际数据库记录的镜像。在紧急情况下,这是一种快速的方法,尽管您不应该使用dataTable或DataSet发送响应,因为通常创建Web服务是为了全局使用,因此如果您将使用dataTable或DataSet,那么除.net之外的其他平台将无法使用您的Web服务。。。