我正在將舊的Web窗體應用程序擴展/轉換爲全新的MVC應用程序。無論是在技術還是業務用例方面,這種擴張都是如此。遺留應用程序是一個很好的數據庫驅動設計(DBDD)。因此對於例如如果你有不同類型的員工,比如操作員,主管,店主等等,你需要添加一個新類型,你只需要在幾張表中添加一些行,然後你的用戶界面自動添加/更新新的員工類型。 然而,分層不太好。MVC Web應用程序的域驅動設計與數據庫驅動設計
新的項目有兩個主要目標
- 可擴展性(對於當前和未來的管道需求)
- 性能
我打算創建新項目代替數據庫驅動設計(DBDD )與域驅動設計(DDD)保持擴展性要求。但是,如果將數據庫驅動設計與傳統DBDD應用程序的性能進行比較,那麼從數據庫驅動設計轉向域驅動設計似乎會對性能要求產生負面影響。在遺留應用程序中,來自UI的任何數據調用都將直接與數據庫進行交互,並且任何數據都將以DataReader或(某些情況下)DataSet的形式返回。
現在,對於嚴格的DDD,任何數據調用都將通過業務層和數據訪問層進行路由。這意味着每次調用都會初始化一個業務對象和一個數據訪問對象。一個UI頁面可能需要不同類型的數據,這是一個Web應用程序,每個頁面都可以被多個用戶請求。另外一個MVC Web應用程序是無狀態的,每個請求都需要每次都初始化業務對象和數據訪問對象。 因此,對於MVC無狀態應用程序來說,DBDD對於性能而言更喜歡DDD。
或者在DDD中有一種方法可以實現DDD提供的擴展性和DBDD提供的性能?
由於它從字面上理解各種設計背後的機制,因此成爲一個有趣的問題。很多時候,這些討論太抽象而無用。這是非常直接的。我很想看看答案是什麼(我自己也不知道)。 –
在開始思考之前,我有幾個問題: 1.性能要求究竟是什麼?應用程序的響應速度有多快。是否應該在1秒內迴應所有查詢,或者0.5秒內獲取數據,1秒後更新? 2.您是否已經有一些當前應用程序的指標,以及基於MVC的應用程序工作速度會有多慢? –
我有當前應用程序數據庫操作的指標。除了報告可能會有複雜且數據量大的操作並且可能需要幾分鐘的時間外,CRUD需要不到一秒的時間,而在數據庫級別的2到3秒內發生最大數據獲取操作。 MVC應用程序的速度要慢多少,問題是關於 – devanalyst