2014-01-28 57 views
0

我在C#中創建了一個Web服務,其中我使用了一個C#實體類作爲輸入傳遞給Web服務作爲輸入,通過序列化此類和Web服務我已反序列化它我的Web這裏的方法是我的序列化代碼創建C#API的Web服務客戶端

string xmlText; 
var msg = new System.Xml.Serialization.XmlSerializer(obj.GetType()); 
var ms = new MemoryStream(); 
using (var xmlTextWriter = new XmlTextWriter(ms, Encoding.ASCII) { Formatting = Formatting.Indented }) 
{ 
    msg.Serialize(xmlTextWriter, obj); 
    ms = (MemoryStream)xmlTextWriter.BaseStream; 
    xmlText = new UTF8Encoding().GetString(ms.ToArray()); 
    ms.Dispose(); 
} 
return xmlText; 

我得到這個類的XML,我把它傳遞給我的web方法,我只是反序列化,並使用這個類。 現在我想將這個Web方法公開給所有的客戶端。客戶端可以是Java,PHP或任何其他編程語言。我將如何向這些客戶提供此類? 我已經在谷歌搜索那裏找到創建wsdl文件。如何將我的實體類轉換爲wsdl文件?

任何幫助將不勝感激。 此致敬禮。

+0

爲什麼要先序列化它?你不需要那樣做。 –

回答

-1

我認爲最好的方法就是你已經在做的事情:將你的對象序列化爲XML或Json並將這些字符串傳遞給你的客戶。這些客戶端將不得不重新創建對象(例如,使用特定的方法,例如用於PHP的json_decode)。 WSDL文件描述了Web服務的公共方法。它會幫助你創建你的客戶,但它不會幫助你序列化和反序列化對象。

+0

但Java和PHP客戶端如何獲得我的c#實體類以及它們將如何使用我的Web服務?我應該擔心這些客戶嗎?或者我必須創建這個類並將其用於序列化和反序列化我的類?我的方法是否正確? – Jahangeer

+0

我是否必須使用字符串輸入創建Web方法,並且客戶端將在那裏輸入時發送xml?我必須寫我的XML解析器代碼,而不是序列化和反序列化? – Jahangeer

+0

由於客戶端不能在.NET上運行,因此無法爲它們提供.NET對象。對象最多被轉換爲字符串,客戶端必須從這些字符串構建對象。我在談論的解決方案是這樣的:您的webservices發送轉換爲XML/JASON字符串的對象,並且所有客戶端都收到這些字符串。然後,他們必須使用某種工具(例如XSD.EXE,但這是.NET)或代碼(請參閱JAVA:http://bit.ly/Mty19R)重新創建字符串中的對象。您應該記錄您的服務將提供的XML/JASON:某些客戶端可能需要它們來解析文件。歡呼 – SRO