2011-11-19 113 views
1

我刚刚开始真正使用WCF和Web服务。我对他们背后的目的以及他们的工作方式有非常坚定的理解,但是我想知道如果您希望返回除文本之外的东西,那么他们的功能是什么?如直线HTML表单或图像。WCF返回不同类型的数据

我已经做了一些简单的搜索,但唉,我可以找到的是如何处理从表单传递的数据,而不是如何返回表单。

我希望有人能给我一个很好的起点,我应该看什么。我看了一个线程,指出看WCF Streaming,但看起来有点过分,想知道是否有人可以给我一些一般的建议和意见。

非常感谢, 罗纳德。

回答

0

它可能取决于实际的绑定,但为了简单起见,假设你通过http绑定了你的WCF服务。然后,您传递给服务器的所有内容都应以某种方式转换为字符串。简单的类型,整数,焦耳,字符串很容易转换。复合类型 - 同样,因为它们由简单类型组成。当涉及到特定的类型,如图像或HTML形式,你总是试图找到一种方式来转换他们在一边,并转换回另一边。在许多情况下,序列化程序可以为您执行此操作,例如,如果返回byte[],则数据将被编码为base64字符串。如果序列化程序出于某种原因失败,则必须找到自己的方式来传递特定的类型。也请记住,WCF,它是你选择特定的串行:

http://nirajrules.wordpress.com/2009/08/26/wcf-serializers-xmlserializer-vs-datacontratserializer-vs-netdatacontractserializer/

1

WCF服务可以返回运行时可以分配的任何对象。我们在服务中返回自定义对象没有问题,只要它是一个使用它们的.NET客户端。其他语言可能需要更加努力才能对复杂对象进行反序列化。 (这意味着你必须编写更多的代码,因为非Visual Studio IDE可能不知道如何自动生成所需的客户端代码。)

+0

不确定ISerializable是否准确:或者说,它依赖于序列化程序,因此取决于绑定/配置。 DataContractSerializer不需要,例如 - 它会想要DataContract类型,或者什么的IXmlSerializable –

+0

我认为你是对的。稍作修改。 – David

0

WCF的目的是建立使用标准或自定义协议的Web API。如果使用默认配置,WCF将输出使用SOAP序列化的对象,但是也可以使用JSON。

WCF肯定能够输出纯HTML,但它不是为了这个目标而设计的。它旨在用于进程之间的通信。