首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将提供程序特定配置传递给不同对象的最佳方法是什么?

将提供程序特定配置传递给不同对象的最佳方法是什么?
EN

Software Engineering用户
提问于 2017-05-27 02:57:51
回答 2查看 137关注 0票数 0

我正在构建一个中间件集成,它将从各种第三方API中提取订单,并将这些订单推入我们的系统,以及同步库存和发送发货。我想以这样一种方式构建它,这样我以后就可以添加各种零售商,而不必修改Core项目。

我已经把它构建成了几个项目:

  • 常见(只是一些常见的事情,如WebClient、序列化、IO等)
  • ERP (这是我们将把这些数据推入的ERP,这里有所有的模型和服务来推送订单等等)
  • Core (这将连接到数据库,以获取已设置的各种集成的列表,加载提供程序DLL,然后提取订单等)
  • Providers.Retailer1 (它们依赖于ERP项目,因为它将返回数据,如来自ERP的模型中的订单)。
  • Providers.Retailer2
  • Providers.Retailer3

目前,我的Core项目在提供程序上有一个项目引用。我想达到这样一点,核心没有硬引用这些提供者-也许他们是动态加载在运行时,检查类是否实现了一个接口。因此,从理论上讲,如果我们想与一家新零售商集成,我们只需构建获取订单/同步库存等的实现。这听起来像一种合理的方法吗?我正在考虑调查MEF的情况,但还不确定这会是什么样子。

我的问题是,例如,Retailer1需要某些配置和服务,如ApiKeyUsernamePassword等,在这些配置和服务中,Retailer2可能需要不同的配置数据。目前,Core项目将从数据库中检索这些详细信息。将这些信息传递给Providers的最佳方法是什么?我是否应该创建一个基本上是配置的键/值对的Configuration对象,并对接口进行编程以接受Configuration对象?并将这些值存储在数据库表中的键/值对中,而不是当前的列中。

目前,我在Core项目中创建依赖项,但这意味着Core项目与Retailer1紧密耦合,例如:

代码语言:javascript
复制
         TheIconic.Services.IApiService iconicApiService = new TheIconic.Services.TheIconicApiService(
            DependencyContainerProvider.Current.Container.Resolve<IWebClient>(),
            instance.IntegrationPartner.ApiUrl,
            instance.IntegrationPartner.ApiKey,
            instance.IntegrationPartner.Username,
            instance.IntegrationPartner.BasicAuthUsername,
            instance.IntegrationPartner.BasicAuthPassword
        );
EN

回答 2

Software Engineering用户

发布于 2017-05-31 03:10:44

我是否应该创建一个基本上是配置的键/值对的配置对象,并对接口进行编程以接受配置对象?

如果配置提供程序所需的全部是键/值对的列表,那么是的,这似乎是一个合理的解决方案。实际上,它是ODBC数据提供程序使用的确切解决方案(通过连接字符串,它是存储在文本blob中的键/值对的列表)。

如果需要更复杂的内容,仍然可以使用字符串,但可能不使用标记/值对,而是可以包含XML或JSON。

票数 1
EN

Software Engineering用户

发布于 2017-05-28 20:45:42

将这些信息传递给提供者的最佳方法是什么?

你为什么不考虑注射DI?为提供者创建任意数量的特定数据工厂,它们使用Core类在内部构建数据,然后通过依赖注入库(如NInject )将这些工厂传递到Providers的构造函数中。这样,您的提供程序就会与核心隔离。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/349681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档