2011-11-19 109 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,但它不是爲了這個目標而設計的。它旨在用於進程之間的通信。