我正在将一些外部API集成到分层应用程序中。与通常的分层应用程序一样,它有三层,我将这些API连接到业务层。通过“Thrid party API和服务”,我的意思是支付网关,邮政编码查找等。
目前,对于每个api,我创建一个服务契约接口,api包装器将继承接口类。此接口将注入到业务类的构造函数中,ioc容器将在应用程序的入口点解析它。
我想将这些api层与业务层分离,并使它们在其他项目中也可以重复使用。我的问题是,有没有更好的方法或任何设计模式用于集成外部服务。我非常感谢指南或代码片段的任何链接。
答案 0 :(得分:3)
如果要为第三方API服务创建可插入框架,可能需要查看MEF。这将使您能够创建一种更加不可知的服务供应类型,这意味着您可以从框架中交换/退出服务 - 这可以使您更轻松地将当前和未来的外部服务集成到您的应用程序中,而不必承担显着的重构成本。
答案 1 :(得分:3)
对于每个第三方API,我会创建一个接口,将其放在一个单独的项目中。然后我将为每个接口的实现创建一个新项目。
例如,您的项目结构可能类似于
YourSolution
...
-Company.Interfaces.ThridPartyAPi1
-Company.Interfaces.ThridPartyAPi2
-Company.Interfaces.ThridPartyAPi3
-Company.Services.ThridPartyAPi1
-Company.Services.ThridPartyAPi2
-Company.Services.ThridPartyAPi3
...
这将您的代码与API代码分离,并将API接口与API代码分离,这意味着可以轻松地对其进行模拟/存根以进行测试。