我建议允许 Visual Studio 自动生成适当的代理类。然后,我将为每个 Web 服务实现一个包装器类,以便所有包装器类都可以实现相同的接口。例如,您可以创建一个如下所示的通用界面:
Public Interface IPersonBusiness
Sub DeletePerson(personId As String)
End Interface
然后,假设您有两个 Web 服务。第一个,我们称之为它WebService1
,有一个Delete
方法,它需要一个人 ID,然后是删除时间。第二个 Web 服务,我们称之为它WebService2
,有一个DeletePeople
接受人员 ID 数组的方法。我们可以使用上述通用接口包装这两个 Web 服务,如下所示:
Public Class WebService1Wrapper
Implements IPersonBusiness
Public Sub New(proxy As WebService1)
_proxy = proxy
End Sub
Private _proxy As WebService1
Public Sub DeletePerson(personId As String) Implements IPersonBusiness.DeletePerson
_proxy.Delete(personId, Date.Now)
End Sub
End Class
Public Class WebService2Wrapper
Implements IPersonBusiness
Public Sub New(proxy As WebService2)
_proxy = proxy
End Sub
Private _proxy As WebService2
Public Sub DeletePerson(personId As String) Implements IPersonBusiness.DeletePerson
_proxy.DeletePeople({personId})
End Sub
End Classs
除非你真的需要,否则我会避免编写你自己的代理代码。例如,如果您需要根据一些外部设置动态调用任何 Web 服务,这些设置会告诉您要传递的方法名称和参数,或者类似的东西,那么值得研究一下。
我还会避免将调用任何 Web 服务的所有逻辑放入单个包装类中。这样做会使代码变得不必要的丑陋和混乱,特别是如果您将来需要添加额外的 Web 服务。