体系结构问题:服务
VS2K8,C#。我目前有以下项目的解决方案:体系结构问题:服务
核心 - POCO域对象和数据接口
数据 - Repository模式。实现Core中定义的接口。还有Fluent NHibernate的映射类。
基础设施 - 用于依赖注入,配置NHibernate的,等
测试 - 测试[测试为核心,数据等]
网 - MVC2 web项目
现在,与据说,我试图确定添加诸如以下内容的最佳行为:加入邮件列表,提交联系信息等。
我不相信这些应该在网络中。我不认为他们需要被放置在数据中,除了保存邮件列表信息和联系信息fwiw时。
听起来这应该放在核心层面。据说,如果放在Core中,它将依赖于保存到数据库。我有点困惑于何处以及如何设计它。什么路线你们采取什么?
这是一件简单的事情,只需在名为MailingList的Core级别上创建一个名为JoinMailingList(emailAddress)的接口,然后在Data上实现该接口?这听起来不像是最佳路线,因为这是一个商业问题。思考?
添加服务库并将服务接口包含在核心库中。
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);
}
}
感谢您的快速回复。你要走这条路:1.使用邮件列表服务(IMailingListService)界面创建Services项目/库。 2.在Core中创建邮件列表存储库接口。 3.在Core中实现邮件列表服务。 4.在Data中实现邮件列表存储库(通过NHibernate,我们的例子)。是? – StephenPAdams 2010-12-17 18:53:45
还指出,它应该引用你的核心库,但不是你的数据库。您应该在您的网站上连接DI容器,它应该引用数据库和服务库,以便容器可以为您处理依赖关系。 – NerdFury 2010-12-17 18:55:31
关闭,服务实现在服务库中。接口(IMailingListService)与您的存储库合同一起进入核心。我倾向于在我的Core库DataContracts和ServiceContracts中为各个接口创建两个文件夹。 – NerdFury 2010-12-17 19:06:27
建筑问题属于程序员.stackexchange.com http://blog.stackoverflow.com/2010/12/introducing-programmers-stackexchange-com/ ....让混乱开始!我们从不需要第一个地方的其他网站。 – Shoban 2010-12-17 18:43:34
让我们试着在这里解决它。毕竟它是一个编程相关的问题。 – Pradeep 2010-12-17 18:47:02
我认为这是放置在stackoverflow.com上是安全的。这是一个编程相关的问题,我们将在这里看到代码。它肯定有一些更高层次的架构问题,但没有什么奇怪的。 – StephenPAdams 2010-12-17 18:58:49