0

团队 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,它会改变什么吗?

4

1 回答 1

1

如果两个团队都使用 .NET,您可以在一个类库项目中定义您的数据对象,并且两个团队将共享同一个库 (DLL)。当您在 .NET 项目中创建对服务的引用时,这几乎就是 Windows Communication Foundation 在幕后所做的事情。因此,就像在您的第一个示例中一样,将对象作为参数传递变得很简单。

由于您有两种语言,因此您肯定需要共同点,这就是 json 或 xml 出现的地方(这是您的第二个示例)。您可以添加某种转换器类来捕获字符串,返回您的对象并将其作为参数传递给您的方法,实现取决于您使用的框架(Spring 让这变得轻而易举)

于 2013-01-02T19:25:14.597 回答