團隊A創建WebServiceA。它將使用Person類型。當在WebServiceA中通過調用註冊人員時,還必須通知其他系統(通過調用由Team B通過註冊人員創建的WebServiceB)。如何共享Web服務之間的類型
然後,當在系統B中編輯人時,修改必須遷移到系統A(通過調用WebServiceA傳遞修改後的人)。
問題是如何使WebServices使用相同的類型? 我們可以將xml作爲字符串發送,然後將其序列化或反序列化爲每個WebService端的對象,以便我們不必使用xml,但我很好奇它是否更容易。
我想有這樣的:
WebServiceA
Webmethod - RegisterPerson(Person person)
calls WebServiceB.PersonRegistered(person)
WebMethod - PersonModified(Person person)
WebSericeB
WebMethod - PersonRegistered(Person person)
WebMethod - ModifyPerson(Person person)
calls WebServiceA.PersonModified(person)
,而不是這個
WebServiceA
Webmethod - RegisterPerson(Person person)
calls WebServiceB.PersonRegistered(person.SerializeToXml())
WebMethod - PersonModified(string person) - deserialize to WebServiceA.Person
WebSericeB
WebMethod - PersonRegistered(string person) - deserialize to WebServiceB.Person
WebMethod - ModifyPerson(Person person)
calls WebServiceA.PersonModified(person.SerializeToXml())
我們在A隊使用ASP.NET Web Service與B隊是用Java。 如果兩個團隊都使用.NET,它會改變什麼嗎?
如果我們使用web服務而不是wcf服務?有沒有辦法在.NET中編寫的兩個Web服務之間共享對象?我認爲你在答案中犯了一個小錯誤。我在第一個例子中傳遞對象,而不是第二個例子。在第二次我傳遞字符串。 –
@Peri您仍然可以創建代理類(使用「Web引用」)。請參閱http://msdn.microsoft.com/en-us/library/d9w023sx(v=vs.90).aspx。我相信WCF是Web服務的推薦方式,雖然(順便說一句,我糾正我的參考您的例子)。 – Ulises
是的,我知道我可以創建代理類:)但是,當您添加Web引用時,即使WebServiceB引用了與WebService相同的類庫,此類庫中的類型也會與代理一起重新生成並位於不同的名稱空間中。因此,如果WebServiceB在WebServiceA中具有方法PersonRegistered(ClassLibrary.Person person),它將作爲PersonRegistered(WebService2.Person person)可見。 –