2009-12-10 72 views
1

我是新來的WCF.NET WCF - 接收和發送XML

我要創建接收純XML(不SOAP)的WCF服務,做一些處理,然後發送應答消息發送回純XML。我沒有發送XML的問題,我只需要一些提示,從哪裏開始。我熟悉使用SOAP在.Net中使用Web服務創建Web服務...我將定義要基於SOAP請求調用的函數。

如果我發送簡單的XML到WCF服務(沒有像我用SOAP那樣定義特定的功能)......它打的是什麼功能?我需要進行設置,以便發送到我的WCF的所有XML請求都會發起特定的功能......但是如何實現?他們有沒有什麼好的例子可以做到這一點? (我搜索的鏈接在WCF中收到簡單的XML,但沒有發現任何對於初學者WCF)

回答

4

這個問題確實有兩個單獨的部分。

  1. 您希望公開您的服務的協議是什麼? HTTP?如果是這樣,你應該看看WebHttpBinding,它是爲REST(或至少POX)服務構建的。對於更復雜的場景,您可能需要使用不強制SOAP消息的自定義綁定。

  2. 如何在服務端表示該XML。例如,對於WebHttpBinding,最簡單的方案是仍然使用DataContracts,並讓WCF負責序列化XML文本表示。但是,您可能希望以某種方式提供原始XML,並且在這種情況下,您當然可以使用僅使用System.ServiceModel.Channels.Message對象的更原始合同,並自己處理序列化過程。

+0

我們將在HTTPS上公開該服務。我認爲我想用的是WebHttpBinding和消息合約 – 2009-12-10 19:11:34

0

您可以創建一個接收和返回字符串的操作合同。 一旦你得到字符串 - 使用普通的網絡xml函數來解析它,並做任何需要的。

好起點是閱讀Juval Lowey關於WCF的書。爲了回答下半部分 - 您不需要將XML發送到服務 - 您需要創建一個合同(功能) 無論它是通用合同(單個「功能」 - 方法)還是許多「功能」,都需要創建合同(功能) (方法)。

+0

可怕的解決方案。是的,易於實施,但非常低效。 – tomasr 2009-12-10 18:03:20

+0

DotNet效率低下,但比C++花費的時間少30%,所以每個人都使用它。如果你想快速得到結果 - 你從簡單的事情開始,然後改進它。 – Dani 2009-12-10 18:12:51

+0

你仍然可以保持簡單,而不是在WCF中這樣做。沒有理由這樣破解它。 – tomasr 2009-12-10 18:42:33

1

您可能需要檢查使用的WebHttpBinding的例子(或其他綁定與非SOAP/WS-消息的消息類型)和例如使用WebMessageFormal.Xml作爲請求/響應類型的WebGet屬性。

+0

他們將發佈,所以我不認爲Webget會工作 – 2009-12-10 19:22:51

+0

在這種情況下,WebInvokeAttribute可能是你想要的。 http://msdn.microsoft.com/en-us/library/system.servicemodel.web.webinvokeattribute.aspx – Brian 2009-12-10 19:38:27