如何将SMS动作转换为界面?

时间:2017-07-02 07:35:42

标签: web-services aspnetboilerplate

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

顺便说一句,如果你想利用ABP的插件系统,那么你可以设计一点不同:每个插件dll都可以将select d.*, p.Page_Id from Doctors as d left join PageTable as p on (d.Region = COALESCE(p.target_region,'NULL') and COALESCE(d.Country,'NULL') = COALESCE(p.targer_countries,'NULL') and COALESCE(d.Doctor_Category,'NULL') = COALESCE(p.targer_categories,'NULL')) 添加到字典中(其中字典的键是租户id / name )所以你的工厂可以选择给定租户的注册供应商。