3

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

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

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

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

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

与往常一样,感谢您抽出宝贵的时间阅读并提供任何建议。

4

1 回答 1

2

这个问题在细节上有点模糊,但我会尝试提供一些建议。

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

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

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


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

我首先设计我作为客户认为对域通用且易于使用的东西。

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

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

C# 有大量的语言特性使这种方法成为可能,但我认为只使用一个简单的接口就可以满足您的需求。没有必要让它变得更难。

于 2013-02-10T21:55:05.427 回答