DDD基于实体类型连接到不同的服务

时间:2014-01-21 21:05:55

标签: c# domain-driven-design

我需要帮助理解DDD方法以解决以下问题。我一直在互联网上搜索好几天了,不确定我是否理解术语,但似乎根本没有讨论类似的问题。

我有一个界面,用户可以在其中添加项目列表,让我们称之为消息。应定期从外部源(如文件,Web API或其他)更新消息内容。因此,在创建新消息时,用户可以选择连接器类型(即FileConnector)并输入所需的配置,如文件路径或URL。每种连接器类型都有不同的参数。同样,未来新类型的可能性很大。

目前我的域名模型如下:

public class Message
{
  public string Content { get; set; }
  public Connector Connector { get; set; }

  public void Update()
  {
    this.Content = this.Connector.ReadData();
  }
}

public abstract class Connector
{
  public Device Device { get; set; }
  public abstract string ReadData();
}

public class FileConnector : Connector
{
  public string Path { get; set; }

  public override string ReadData()
  {
    //read the file and return its content
  }
}

public class WebConnector : Connector
{
  public string URI { get; set; }
  public string Username { get; set; }
  public string Password { get; set; }

  public override string ReadData()
  {
    //connect to Web API and return the result
  }
}

这里将使用某种调度程序作业执行Message.Update()。

问题在于我无法直接从域中实现与文件或Web API的连接。我想将这样的实现提取到像服务这样的东西。但这是否意味着我必须为每种连接类型提供不同的服务?如果是这样,我应该如何在域内使用它们?也就是说,在Message对象上执行Update()方法时,如何根据连接器类型注入正确的服务?我还有其他选择吗?

另外,我很想知道在这种情况下是否有替代继承。

P.S。域持久性将使用Entity Framework完成。

0 个答案:

没有答案