2011-09-02 66 views
1

我從頭開始構建新的系統並致力於應用程序的設計。我正在尋找可行的方法來建模我的域對象。爲WinForms MVP應用程序實現業務對象

該項目的一些細節 - 這將是一個相當大的數據錄入WinForms應用程序,集成到ESRI ArcMap(GIS應用程序)中。數據訪問必須經過ArcMap自己的數據訪問層 - 通過光標樣式訪問來檢索和保存數據。這不是一個獲取數據的問題,但據我所知,這將ORM工具排除在Entity Framework和NHibernate之外,因爲我無法直接與數據庫交互。

WinForms應用程序將遵循MVP Supervising Controller模式 - 視圖將綁定到模型。演示者也將修改模型。因此域對象應支持以下內容:

  • 更改通知
  • 更改跟蹤。至少我想知道我的模型是否已經改變。

我的選擇至今:

  1. 手工編寫 POCOS。 +優點/ -Cons:
    • +應該是可行的
    • +可以通過INotifyPropertyChange接口適應業務邏輯
    • +可綁定
    • 體力勞動的-Lots
      • - 更改通知。
      • - 通過必須手動維護的IsDirty屬性更改跟蹤。
  2. ADO.NET數據集由波蘇斯包裹。 +優點/ -Cons:
    • +變更通知 「免費」
    • +更改跟蹤 「免費」
    • +可綁定
    • -Feels那種凌亂

我已經排除的:

  • 實體框架 - 我在.NET Framework 3.5上,所以沒有Code First支持。據我所知,處理域邏輯非常混亂 - 事件處理程序。

還有其他不錯的選擇嗎?也許代碼生成(對工具的任何建議?),一些框架?智慧的話,建議?

回答

0

我的POCO只是「啞」數據傳輸對象,它們不包含任何業務邏輯。它們也不是我的模型,因爲它們是更接近我的用戶界面的另一組沉默物體。我只是將我的DTO充滿數據訪問層中的數據,將它們傳遞到我的服務層以處理業務邏輯,但它們只會傳遞給我的演示者/控制器,以通過模型將我需要的足夠信息輸入到我的UI中。對於您的場景,我認爲這會更合乎邏輯,因爲您必須通過ArcMap的數據訪問層。您可以將數據保留在表示層中,並在其中更改跟蹤。

相關問題