2012-11-14 149 views
0

我必須在3.5開發一個WCF應用程序。輸入將以XML的形式發送,響應也將以XML的形式發送。 ASP.NET應用程序將使用WCF並以XML格式發送/接收數據。根據我的理解,現在,當從ASP.NET應用程序中使用WCF時,我們只需添加對服務的引用,創建服務的對象,將所有必需的數據(WCF中的數據成員)打包到輸入對象(Data Contract的對象)並調用必要的函數。什麼是處理XML發送到WCF的最佳方式3.5

恰巧ASP.NET應用程序正在由一個單獨的開發團隊開發,並且他們正在以XML格式接收和發送數據。我可以從中看到,WCF將把XML字符串(單個數據成員字符串類型)作爲輸入,併發出一個XML字符串(同樣是一個Data Member字符串類型)作爲輸出。我早些時候創建了WCF應用程序,當它被jQuery ajax調用使用時,請求和響應以XML/JSON格式發送出去。在這些情況下,XML標籤會自動映射到定義的不同數據成員。

我應該在這種情況下采取什麼方法?我應該只是將一個字符串作爲輸入(基本上是XML字符串),或者有什麼方法可以讓WCF/.NET 3.5自動將XML標記與數據成員映射爲請求和響應,而我不需要單獨解析XML字符串?

+0

從我所知道的情況來看,你處於爲尚未寫入的客戶開發服務的幸運位置。我會正常使用DataContracts,然後將它們交給一個自動生成的WSDL文檔以通過'svcutil'運行。他們可以感謝你讓他們的工作更容易後來:)我一直在這個公式的客戶端對*服務*,其單個調用接受並返回一個字符串參數編碼爲XML,必須手動解碼。所有包裹在SOAP信封中:P – shambulator

+1

通常人們以這種方式指定Web服務或客戶端,因爲他們實際上並不瞭解他們正在使用的技術。我對這種事感到非常強烈 - 這是一場血腥的鬧劇! –

回答

1

總之,沒有。

但是,您可以'殼''DataContractSerializer自己的實例來反序列化/序列化您的調用者想要的XML字符串的實際對象。然後,您仍然可以自由地在您的末端寫入數據協定類型,以反映調用者想要使用的那些類型。

但是,如果他們希望您能夠將其納入服務的WSDL中,那麼他們會吼出錯誤的樹 - 您需要分別發佈這些類型的模式(您可以使用XsdDataContractExporter要做到這一點)。

另一個說明 - 這是深深令人不安的是,這些傢伙希望你開發一個WCF服務,它只是簡單地夾住XML字符串。鑑於WCF將使用XML作爲消息格式,所有這些XML將不得不作爲裸體(編碼或CDATA)文本發送,因此不會對XML進行消息級驗證。無論提供的XML字符串是否爲gobbledegook,您的代碼都會收到請求。這非常令人難以置信。

0

在正常的配置中,WCF將通過XML格式發送數據,所以你不需要做任何事情。據我所知,該方有一些與XML有關的文字,並希望直接將其傳遞給您,並且他們希望直接從您那裏接收XML。發送由XML包裝的XML數據將會相當尷尬。這樣你的服務代碼將不得不解析XML而不是直接使用對象圖。我會給他們一個手指,告訴他們如果他們想直接使用XML而不是他們的問題。他們正試圖使這個問題成爲你的問題,這是不公平的。你只需堅持良好的開發實踐。

相關問題