2017-07-02 37 views
-1

假设我们每个租户都有不同的SMS提供者(每个租户都有自己的SMS提供者,希望通过这些提供者发送SMS)我们如何在ASPNetBoilerplate中实现这种情况?如何将短信操作转换为界面?

+0

我想我们必须为每个租户创建一个具有特定接口的DLL并存储在相关的数据库中。但是,在ASPNetBoilerplate模板中加载和注入此DLL的位置在哪里? –

回答

0

如果每个租户只有一个短信提供商,那么您可以在Tenant类上创建一个复杂类型。如果每个租户都有多个SMS提供商,则创建TenantSmsProvider实体。

我不明白你为什么要创建DLL!

0

我想你是要求依赖注入。 您应该创建一个工厂(称为ISmsProviderFactory),该工厂根据租户ID(例如GetProviderByTenantId(int tenantId)创建短信服务提供商(如ISmsProvider)。这是一种常见的软件模式。然后,您可以在需要时根据租户注入ISmsProviderFactory并获得ISmsProviderFactory

您可以使用Castle Windsor的API来注册工厂依赖关系,而不是创建自定义工厂类。因此,您可以直接在您的代码中注入ISmsProvider

现在,问题是如何实施SmsProviderFactory?有不同的方法取决于你的要求。但是这部分不在ABP的范围之内,你可以在网上找到很多文章。

顺便说一句,如果你想利用ABP的插件系统,那么你可以设计它有点不同:每个插件的DLL可以添加一个ISmsProvider到字典(其中字典的关键是租户ID /名称),所以你的工厂可以为特定租户选择注册的提供商。

相关问题