设计C#SOAP API客户端/包装器

时间:2013-02-10 11:41:34

标签: c# api soap webservice-client

背景
我正在使用C#与SOAP Web服务连接。我在Visual Studio中工作,并已成功设置服务引用,并可以在我的代码中使用Web服务。

考虑到C#作为一种语言的强大功能,我的问题与设计API的客户端/包装器的“最佳”有关。

中央“请求”类
我想到了创建一个整体类来处理对服务的请求,从而处理API特定错误的所有各种排列(有很多),并且优雅地降级。这个类也可能是API客户端的“控制器”,它还提供内部调用和外部世界/代码之间的整体接口。

然后我注意到每个API调用所需的各种数据类型并且可以返回。当然这意味着这个“请求”功能不能一般地处理(并且必须在每种特定类型的请求中实施 - 例如身份验证,车辆位置,工作/订单)?

或者如果可以,C#如何作为一种语言,帮助我以抽象的方式处理类型?

与往常一样,感谢您抽出阅读时间以及您可以提供的任何建议。

1 个答案:

答案 0 :(得分:2)

问题在细节上有点模糊,但我会尽力提出一些建议。

首先,我认为在外部API上创建包装器是明智的。我将使用外部电子邮件提供商的示例来尝试回答您的问题。

想象一下,我们有第三方电子邮件API,我们希望围绕它做一个包装。

我首先要制作一个包装器,其行为方式与我希望电子邮件API的工作方式相同。应该有这样的方法:


public EmailResponse SendEmail(EmailRequest request) { }
public User GetUser(string email) { }
public void OptOut(string email) { }

我首先设计的是我作为客户认为对于域都是通用的 - 并且易于使用。

然后,您将实现直接映射到第三方API的包装器接口。在上面的示例中,可能需要两次外部API调用才能发送电子邮件,但使用您的包装器的人不会知道这一点。

在我看来,如果你将它们与特定的实现绑定得过于紧密,那么包装器就毫无价值。

C#有很多语言功能可以使这种方法成为可能,但我认为只使用简单的接口就能满足您的需求。不需要让它变得更难。