2

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

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

最后,在本主题中:DataTable not accepted by svcutil - WCF Service

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

4

1 回答 1

7

在服务合同中使用 DataTable 的主要问题不是技术问题,而是设计问题。如果您的服务在契约中使用 DataTable,那么您就违反了使用标准化契约和松耦合的 SOA 设计原则。
这是因为如果服务返回 DataTable,则合同不会指定 DataTable 包含哪些列。这将迫使服务消费者对服务提供者的内部运作有一定的了解,从而使系统紧密耦合。

于 2012-04-10T11:12:38.587 回答