如何在Web服务之间共享类型

时间:2013-01-02 19:11:38

标签: asp.net web-services

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

1 个答案:

答案 0 :(得分:1)

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

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

相关问题