设计支持多个供应商的“Text Messaging”.NET组件

时间:2014-04-08 12:38:00

标签: .net design-patterns architecture

我有一个.NET Web应用程序,需要实现文本消息传递网关功能;即,使用第三方供应商发送文本消息。 Web应用程序当前部署到多个国家/地区,每个国家/地区具有相同的代码库和不同的web.config。

用于创建业务组件的最佳架构策略和设计模式是什么,它将支持不同的文本消息传递网关提供商/供应商,并考虑以下因素:

  1. 理想情况下,每个国家/地区都有自己的短信网关供应商。
  2. 每个供应商都提供自己调用API的特定方式;即参数,api位置,安全性......等。
  3. 一个国家/地区能够以最小的开销和修改随时更改其文本消息传递网关供应商。
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在此处使用Strategy pattern。创建一个类似于以下内容的界面:

public interface ITextMessageStrategy{
    void Send(TextMessage message)
}

您将为每个供应商提供具体的实施方案。您提到每个供应商的API都有不同的参数。实现这项工作的关键是传递一个对象(在我的示例中为TextMessage),该对象包含任何供应商可能需要的所有数据。您的配置会将国家/地区映射到它将使用的实现的完整类名。然后,您将使用反射来动态实例化正确的文本消息传递策略。如果某些TextMessageStrategy实现在使用之前需要构造函数参数或其他一些复杂的设置,请考虑结合使用Factory method pattern。你经常看到这两种模式。