【问题标题】:Best design pattern for integrating third-party api or services [closed]集成第三方 api 或服务的最佳设计模式 [关闭]
【发布时间】:2013-03-26 14:57:11
【问题描述】:

我正在将一些外部 API 集成到分层应用程序中。像通常的分层应用程序一样,它具有三层,我将这些 API 连接到业务层。 “第三方 API 和服务”是指支付网关、邮政编码查询等。

目前,对于每个 api,我都会创建一个服务契约接口,api 包装器将继承接口类。并且这个接口会被注入到业务类的构造函数中,ioc容器会在应用的入口点解决这个问题。

我想将这些 api 层与业务层解耦,并使它们也可以在其他项目中重用。我的问题是,有没有更好的方法或设计模式来集成外部服务。我非常感谢任何指向指南或代码 sn-ps 的链接。

【问题讨论】:

标签: c# asp.net design-patterns architecture


【解决方案1】:

对于每个第三方 API,我会创建一个接口并将其放入单独的项目中。然后我会为每个接口的实现创建一个新项目。

例如,您的项目结构可能如下所示

YourSolution
  ...
  -Company.Interfaces.ThridPartyAPi1
  -Company.Interfaces.ThridPartyAPi2
  -Company.Interfaces.ThridPartyAPi3

  -Company.Services.ThridPartyAPi1
  -Company.Services.ThridPartyAPi2
  -Company.Services.ThridPartyAPi3
  ...

这将您的代码与 API 代码分离,并将 API 接口与 API 代码分离,这意味着它可以很容易地被模拟/存根以进行测试。

【讨论】:

    【解决方案2】:

    如果您想为您的第三方 API 服务创建一个可插入的框架,您可能需要研究 MEF。这将使您能够创建一种更加不可知的服务供应类型,这意味着您可以从框架中换入/换出服务 - 这可能会使您更容易将当前和未来的外部服务集成到您的应用程序中,而不必产生大量的重构成本。

    http://msdn.microsoft.com/en-us/library/dd460648.aspx

    【讨论】:

    • 非常感谢。我只是检查了该页面上的计算器代码示例,我觉得它有点不适合我的情况。 MEF 更适合扩展而不是集成。在我的应用程序中,业务层负责向支付网关 API 层提供商家数据。我不认为它可以用 MEF 完成。或者可以吗?
    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2010-09-09
    • 2018-06-12
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多