-1

假设我们为每个租户提供不同的 SMS 提供程序(每个租户都有自己的 SMS 提供程序,希望通过这些提供程序发送 SMS)我们如何在 ASPNetBoilerplate 中实现这种情况?

4

2 回答 2

0

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

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

于 2017-07-03T05:44:13.477 回答
0

我想你是在要求依赖注入。您应该创建一个工厂(例如),通过租户 ID(例如)ISmsProviderFactory创建短信提供商(例如)。这是一种常见的软件模式。然后,您可以在需要时根据租户注入和获取。ISmsProviderGetProviderByTenantId(int tenantIdISmsProviderFactoryISmsProviderFactory

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

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

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

于 2017-07-03T05:45:30.717 回答