A队创建WebServiceA。它将使用类型Person。当人员通过WebServiceA中的电话注册时,还必须通知其他系统(通过调用由B队创建的WebServiceB传递注册人员)。
然后,当在系统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 WebService,而B队正在使用Java。 如果两个团队都在使用.NET,它会改变什么吗?
答案 0 :(得分:1)
如果两个团队都使用.NET,您可以在一个类库项目中定义数据对象,两个团队将共享同一个库(DLL)。当您在.NET项目中创建对服务的引用时,这就是Windows Communication Foundation在幕后所做的事情。因此,将对象作为参数传递变得简单,就像在第一个示例中一样。
由于你有两种语言,你肯定需要共同点,这就是json或xml到位的地方(这是你的第二个例子)。您可以添加一些转换器类来捕获字符串,返回您的对象并将其作为参数传递给您的方法,实现取决于您使用的框架(Spring使这变得轻而易举)