2013-06-29 54 views
1

我想創建一個簡單的應用程序,用戶可以在其中註冊自己的憑證,如名字,姓氏等......點擊註冊按鈕後,它將其郵件發送到身份驗證郵件的用戶,他將有一個鏈接,並點擊該鏈接,它將重定向到登錄頁面。我想實現這個,但在MVC3中使用三層體系結構。我通過選擇MVC模板創建了該項目並將其命名爲演示文稿並獲取BLL和DAL我應該怎麼做? 我已經創建了我的模型:在MVC3中實現三層體系結構

public class Register 
    { 
     public int Id { get; set; } 
     public string First_Name { get; set; } 
     public string Last_Name { get; set; } 
     public string Email_Address { get; set; } 
     public bool Accept_Term { get; set; } 
     public bool Male { get; set; } 
     public bool Female { get; set;} 
     public string Current_Location { get; set; } 
    } 

回答

4

爲您BLLDAL一個Class LibraryClass Library,然後引用BLLMVC項目,並引用您DALBLL項目。現在您的MVC項目將撥打電話BLL,這反過來將調用DAL實際進行數據存儲/檢索。在某些情況下,您的BLL可以簡單地作爲傳遞,而在其他情況下執行業務規則或其他操作。

你應該考慮你的Model類移動到一個單獨的Class Library爲好,這樣您的所有層(MVCBLLDAL)的都可以「看到」和使用您的Model對象;這當然意味着所有層級都需要參考Model項目。傳遞對象周圍比傳遞對象每個值的方法容易得多。

+0

感謝您的支持。因爲我是三層架構中的新成員,使用MVC更加舒適。所以我知道要創建模型,控制器和View.so請讓我知道我放哪些東西? @Karl – SantyEssac

+0

除此之外,我會將模型稱爲DTO eg。 RegisterDTO。由於模型在MVC中具有不同的含義,因此它們基本上都是駐留在MVC Web應用程序中的視圖模型。因此,根據您需要查看的內容,使用這些屬性創建視圖模型。 – Sunny

+1

右鍵單擊'Solution Explorer'中的'Solution',然後選擇'Add' - >'New Project'。你現在應該看到'Add New Project'對話框,它應該有'Visual C#-Web'作爲過濾器,將它改爲'Visual C#',然後單擊'Class Library'。將該庫命名爲'BLL'並確保它保存到與'MVC'項目相同的相對路徑。沖洗並重復「DAL」。 –

0

我認爲它很重要,以瞭解爲什麼你想要一個n層架構。如果您最重要的要求是簡單性,那麼將應用程序拆分爲n層並不是真的需要。

但是,如果您需要靈活性,這種選擇會導致不利情況。另一方面,多層提供了靈活性,成本是構建它們所需的工作量。

作爲一個例子說明爲什麼你想要一個n層架構,想象一下這個場景。您使用Entity Framework 4.x構建應用程序。在您的數據訪問層。然後EF 5.0就會啓動並且您想升級。如果您的其他層完全不瞭解您正在使用的數據訪問技術(應該是這樣),則在將DAL升級到其他版本或數據庫類型時應該很少出現問題。我強調IGNORANT部分。應用程序中的每個圖層都應該IGNORANT其他圖層中的依賴關係,這將允許您構建分離的可插拔體系結構。

它是一個很大的話題,如果你有興趣學習更多,我會建議看看域驅動設計技術。爲了它,不要只有n層。數據傳輸對象(DTO)是在這些自包含圖層之間傳輸數據的對象。這是必要的,因爲DAL中的「Person」對象與業務層中的「Person」對象不同。 DTO的兩個對象之間的映射。

看看http://www.dofactory.com/。您將看到一個簡單的n層MVC應用程序,它具有多個UI(winforms,MVC等)與自包含的業務層進行對話。這也應該讓你更好地理解你的項目在哪裏以及爲什麼需要它們。