2013-07-20 32 views
-1

嗨我在重構巫婆應用程序的過程中,因爲糟糕的編碼和架構設計,我負責重新構建應用程序。幸運的是,由於該項目是在幾個月前開始的,所以沒有做太多的工作要做。有關添加獨立於應用程序層的新項目的決定

經過與同事們的一些討論後,我決定將應用程序分爲三層(DataAcces,業務邏輯和GUI)。

我將整個解決方案整合到實體框架,Automapper和Unity中。

在與我的項目經理進行了討論後,我瞭解到在某些時候可能需要用NHibernate和Ninject替換實體框架和Unity,因爲客戶對這些框架有團隊知識。

做出這個決定需要一些時間,並且可能有其他人需要這樣做。

我決定圍繞實體框架,Automapper和Unity創建包裝,並將它們放置在單獨的項目中,如果在應用程序生命週期中的某個時間點將決定更改它們。

按照現在的情況我不知道在我的應用魔女層將這個項目屬於,因爲它包含一個由所有layers.For例子所需的代碼:

-entity框架 - DatAccess

-Automapper - 服務層

-Unity - GUI層,服務層,DataAcces層

因爲這一個參考將存在於這個項目在我的應用程序的所有層。

我不確定這是否會對應用程序的整體架構有好處。 到目前爲止,關於N層體系結構我知道的是,你必須在層之間有明確的分離。

有沒有更好的選擇,我錯過了,或者這是正確的?

回答

1

您應該添加一個DataContracts項目。

所以引用將是這樣的:

  • DataAcces層
    • 實體框架 - 注意:這不應該暴露於公衆,DAL應該把它包
    • DataContracts
  • Automapper
    • DataContracts
  • GUI層
    • DataContracts
  • 服務層
    • DataContracts
  • 統一
    • DataAcces層
    • Automapper
    • DataContracts
    • GUI層
    • 服務層

你的層應該在DataContracts項目中定義的接口。例如,在您的服務層中,您將不依賴於DataAccesController,您將依賴IDataAccesController。您可以使用統一層將所有內容連接在一起,因爲這就是團結的目的。

建議不要使用可互換的IoC框架。

如果客戶決定,他們寧願NHibernate的,而不是實體框架,他們會只需要修改DAL

當然

我不知道你當前實現的想法,但是這是我想一般設置它起來。