2011-04-02 60 views
0

在我的asp.net mvc 2應用程序中,我有以下規範: 我必須製作一個廣泛使用JQuery的POS系統(所以我對此部分中的模式不感興趣)並生成按期間分類的銷售和銷售報告時間如此在我的模型中。 另外我需要爲產品供應商生成訂單。 我有實體,如銷售,產品,銷售報告,採購訂單和產品供應商。銷售管理應用程序的可能模式和良好實踐?

我將使用Entity Framework,linq2Sql,automapper和viewmodels將信息傳遞給aspx頁面。

我與模式的問題是,我瞭解互聯網上的例子,但我幾乎無法想象適用於我的模型。 您是否認爲可以應用於此場景的任何常見模式?也許一些使用任何模式的「相似」例子?

另一方面,在模型類中編寫linq2sql語句是否是一個好習慣? 例如,是否正確地執行以下操作以獲取Models/Sales.cs中的銷售清單?

public List<Sales> GetSales(DateTime Date1, DateTime Date2){ 

    var sales = from item in data.Sales 
       where ((item.Date> Date1) && (item.Date< Date2)) & 
       select item; 

    //Rest of code 
    ....... 

}

提前感謝!

+0

請勿觸摸生成的代碼。下一次你將生成你的模型,你的代碼將會消失!使用部分類,類擴展或甚至繼承來添加特定的行爲。 – Adi 2011-04-02 16:50:49

回答

0

我有花紋的問題是,我明白了在互聯網上的例子,但我幾乎可以想像適用於我的模型

試圖將低級別的設計模式,像你這樣一個高層次的概念所描述的根本行不通。爲了甚至開始寫底層軟件,你必須有這些高層次的擔憂冰釋前嫌:

  • 整個領域模型(不是代碼)
  • 您需要的業務場景
  • 您的IT拓撲支持您的應用程序
  • 的軟件部分,你需要寫一個
  • 每個軟件如何與其他部分進行交互

一旦建立起來,您就可以開始處理諸如您的高級架構等個人應用程序,實現業務需求和交互所需的相應類,以及這些類彼此之間的協作。

底層設計模式真的適用於這個最後一塊 - 各個類或類的家族之間的合作。

當然,您可以隨時嘗試自下而上的方法,並在設計固化之前開始編寫代碼。但是一旦你已經知道你將使用哪些類,以及它們需要如何交互,你只能應用模式。

換句話說,我得看看你的代碼,告訴你應該使用哪些底層設計模式。

你的描述表明您的詳細情況已經在使用更高級的模式

  • Asp.net MVC 2
  • 實體框架
  • LINQ2SQL
  • automapper
  • 的ViewModels

這些組件中的每一個都有許多自然構建在其中的模式。例如,ORM,迭代器和MVC都是設計模式。

是它的模型類

內寫LINQ2SQL句子如果你只需要你的例子,從常見的做法,那麼你可能會避免一個很好的做法。由於某種原因,人們似乎喜歡多層應用程序中的普通舊對象。

然而,一些專家認爲其無代碼域(模型)的這個非常普遍的做法對象是一個反模式:見http://en.wikipedia.org/wiki/Anemic_Domain_Modelhttp://www.martinfowler.com/bliki/AnemicDomainModel.html

相關問題