簡體   English   中英

建築/設計模式問題

[英]An Architectural / Design Pattern Question

因此,昨天我的同伴和我對正在開發的這個電子購物網站的架構產生了疑問。 請注意,我為此使用ASP.NET。 他很驚訝得知我沒有將添加到購物車中的項目保留在ArrayList或其他通用列表中,而是使用LINQ To Entities將它們直接插入數據庫中。 我只能通過此Web應用程序並且不使用n-輪胎,還是應該按照我的朋友的建議進行操作,即具有執行更新,刪除等方法。我非常感謝您的反饋,因為這對我來說是一個非常重要的難題。 謝謝!

我認為這里有兩件事要考慮:

您可以做的最壞的事情之一就是過度設計,並在不需要時創建N-Tier系統。 如果不需要數據訪問層,請不要在其中扔一個。

找出對系統的需求,如果您需要能夠進行橫向擴展,那么您將不得不按層設計系統,並使用可擴展性更高的數據訪問方法以及用於獲取/更新的服務您的數據。

其次,當用戶將東西添加到購物車時,是否應該將這些東西扔到數據庫中。 我認為這不一定是一個難題。 到數據庫的旅行是昂貴的,尤其是當您可以將它們存儲在客戶端/會話端之前。


話雖如此,我個人喜歡使用數據訪問層,我發現它使代碼更清潔,並且使您可以標准化訪問和更改數據的方式。 他們不必通過每個類/方法都可以更改數據自定義,而必須通過DAO層中一組定義明確的接口來執行此操作,您可以控制,審計等操作。通過使用DAO層,它還可以幫助進行設施模擬,從而在測試方面是無價的。

N-Teir開發參考:

  1. 首先,只需了解您要完成的任務!
  2. 什么是N-Teir架構
  3. Asp.net教程
  4. MSDN上的應用程序設計(從N層到.NET)

讓我確保我理解:將項目添加到購物車后,您將立即保留它們,而不必等到會話完成才將其作為單個工作單元來完成。 您不必擔心此處的交易,因此您必須具有會話ID和某種標記以指示是否購買了商品。 當客戶指示要購買時,您的程序將查詢與該會話相關的所有項目,並將所有購買的標記更新為一個工作單元。

那是正確的摘要嗎?

您已經選擇了如何將購物車作為單個工作單元來處理。 我認為做事的方法不只一種,而且您的方法是可以辯護的。

但是我不同意關於過度工程的評論。 分層架構並不難構建。 它將持久性邏輯集中在一個定義明確的程序包中,您可以對其進行單獨測試並放在一邊。

分層方法有很多優點。 所有開發工作都是通過將大問題划分為更小,更易於管理的問題來管理復雜性的問題。 我們使用對象和包來執行此操作。 我認為隨着系統的發展,這是一種更好的方法。 這是為什么客戶端/服務器沒有像15-20年前那樣被廣泛使用的原因之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM