2010-12-17 208 views
2

VS2K8,C#。我目前有以下項目的解決方案:體系結構問題:服務

核心 - POCO域對象和數據接口

數據 - Repository模式。實現Core中定義的接口。還有Fluent NHibernate的映射類。

基礎設施 - 用於依賴注入,配置NHibernate的,等

測試 - 測試[測試爲核心,數據等]

網 - MVC2 web項目

現在,與據說,我試圖確定添加諸如以下內容的最佳行爲:加入郵件列表,提交聯繫信息等。

我不相信這些應該在網絡中。我不認爲他們需要被放置在數據中,除了保存郵件列表信息和聯繫信息fwiw時。

聽起來這應該放在覈心層面。據說,如果放在Core中,它將依賴於保存到數據庫。我有點困惑於何處以及如何設計它。什麼路線你們採取什麼?

這是一件簡單的事情,只需在名爲MailingList的Core級別上創建一個名爲JoinMailingList(emailAddress)的接口,然後在Data上實現該接口?這聽起來不像是最佳路線,因爲這是一個商業問題。思考?

+1

建築問題屬於程序員.stackexchange.com http://blog.stackoverflow.com/2010/12/introducing-programmers-stackexchange-com/ ....讓混亂開始!我們從不需要第一個地方的其他網站。 – Shoban 2010-12-17 18:43:34

+0

讓我們試着在這裏解決它。畢竟它是一個編程相關的問題。 – Pradeep 2010-12-17 18:47:02

+1

我認爲這是放置在stackoverflow.com上是安全的。這是一個編程相關的問題,我們將在這裏看到代碼。它肯定有一些更高層次的架構問題,但沒有什麼奇怪的。 – StephenPAdams 2010-12-17 18:58:49

回答

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); 
    } 
} 
+0

感謝您的快速回復。你要走這條路:1.使用郵件列表服務(IMailingListService)界面創建Services項目/庫。 2.在Core中創建郵件列表存儲庫接口。 3.在Core中實現郵件列表服務。 4.在Data中實現郵件列表存儲庫(通過NHibernate,我們的例子)。是? – StephenPAdams 2010-12-17 18:53:45

+0

還指出,它應該引用你的核心庫,但不是你的數據庫。您應該在您的網站上連接DI容器,它應該引用數據庫和服務庫,以便容器可以爲您處理依賴關係。 – NerdFury 2010-12-17 18:55:31

+0

關閉,服務實現在服務庫中。接口(IMailingListService)與您的存儲庫合同一起進入核心。我傾向於在我的Core庫DataContracts和ServiceContracts中爲各個接口創建兩個文件夾。 – NerdFury 2010-12-17 19:06:27