架构问题:服务

时间:2010-12-17 18:38:32

标签: c# nhibernate architecture repository-pattern

VS2K8,C#。我目前有一个包含以下项目的解决方案:

核心 - POCO域对象和数据接口

数据 - 存储库模式。实现Core中定义的接口。还有Fluent NHibernate的映射类。

Infrastructure - 用于依赖注入,配置nhibernate等。

测试 - 测试[测试核心,数据等]

Web - MVC2 Web项目

现在,话虽如此,我正在尝试确定添加以下内容的最佳方法:加入邮件列表,提交联系信息等。

我不相信这些应该在网上。我不认为他们需要放在数据中,除非保存邮件列表信息和联系信息,fwiw。

听起来这应该放在Core级别。话虽如此,如果放在Core中,它将依赖于保存到数据库。我对这个地方以及如何设计它感到有点困惑。你们采取什么样的路线?

这是否就像使用名为JoinMailingList(emailAddress)的方法在Core级别上创建一个名为MailingList的接口一样简单,然后在Data上实现该接口?这听起来不是最好的路线,因为它是一个商业问题。想法?

1 个答案:

答案 0 :(得分:3)

添加服务库并在核心库中包含服务接口。

public interface IMailingListService
{
  void Subscribe(string email);
  void Unsubscribe(string email);
}

public interface IMailingListRepository
{
  MailingList LoadMailingList();
  void SaveMailingList(MailingList list);
}

public class MailingListService: IMailingListService
{
  private IMailingListRepository _repository;

  public MailingList(IMailingListRepository repository)
  {
    _repository = repository;
  }

  public void Subscribe(string email)
  {
    var list = _repository.LoadMailingList();
    list.Subscribe(email);
    _repository.SaveMailingList(list); 
  }
}
相关问题