我对使用 WCF 完全陌生,但已经被安排到一个需要它的项目中。虽然没有作为要求给出,但我希望该服务能够与任何客户端无缝协作,无论它是用什么技术编写的(例如 Java)。
基本上,客户端会向我发送一个 XML block ,我将对其进行验证和处理。如果一切顺利,我将返回一个包含 2 个字段(退出代码和消息)的 XML 文档。
如果我使用 DataContracts(具有 1 个只写属性和 2 个只读属性),这会起作用,还是有比我看到的更多的东西。
非常感谢!
粘土
请您参考如下方法:
数据合约不是“解决方案”; DC 是一种可能的消息序列化方法。是否要使用 DC 取决于 XML 必须是什么样子或可以是什么样子,以及您想要或需要如何从程序内存中的对象映射到消息(xml 文档或片段)。
特别是,如果您想要或需要消息中的 xml 属性,那么 DataContracts 可能不是最佳选择。
DC可以支持这种输入消息:
<request>
<flavor>7</flavor>
<param>eiueuie</param>
</request>
注意所有数据都存储为 xml 元素。 DataContract 不适用于此类消息:
<request flavor='7'>
<param>eiueuie</param>
</request>
...其中任何消息数据都存储在 xml 属性中。如果您想使用 XML 属性,那么您可能需要使用 XML 序列化程序。如果你不关心其中一种方式,那么 DC 可能就没问题。
但是,Xml 序列化程序无法将私有(private)字段或属性映射到 XML 元素,而 DC 可以。因此,如果您的对象模型需要这样做,那么您不能使用 XML Serializer,而应该使用 DC。
要了解有关 DC 和 XMLS 之间权衡的更多信息,read this .
<小时 />话虽如此,是否使用 DC 的决定只是设计的一部分。您还需要决定是否需要完整的 SOAP Envelope 支持(允许消息签名等),或者是否需要更简单的“REST”消息格式(可能更适合称为“普通旧 XML”)。
然后还有实例化、托管和激活(使用 IIS 还是自托管?)、日志记录/审核、安全性(身份验证和授权)等。
因此,WCF 可以为您工作,适用于任何类型的客户端,但选择是否使用 DataContracts 只是难题的一小部分。