为什么从WCF服务操作返回DataTables是一种不好的做法?

Pan*_*lis 2 wcf

我知道在WCF中序列化复杂类型的首选方法是使用DataContracts,但为什么会这样呢?

如果我从服务操作返回DataTable而不是DataContract,WCF是否使用XmlSerializer类而不是默认的DataContractSerializer?

最后,在本主题中:svcutil - WCF服务不接受DataTable

您是否认为问题在于返回DataTable时CLR类型无法正确映射到XSD架构定义?

GTG*_*GTG 7

在服务合同中使用DataTable的主要问题不是技术问题,而是设计问题.如果您的服务在合同中使用DataTable,那么您违反了使用标准化合同和松散耦合的SOA设计原则.
这是因为如果服务返回DataTable,则合同不会指定DataTable包含的列.这将迫使服务使用者了解服务提供者的内部工作,使系统紧密耦合.