团队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)可见。 –