2009-12-09 93 views
0

所以我正在開發一個非常酷的(也是非常大的)n層應用程序。圖層之間的名稱衝突

基本上我有以下組件:


Domain.Contracts

服務
Services.Contracts

Presentation.Admin
Presentation.Web
Presentation.Core(共享在Admin & Web)
我可以實現Presentation.Core.Contracts

我正在摔角的主要問題是不同層之間的名稱衝突。也就是說。

Services.Contracts.AccountServicesRequest
Domain.Contracts.AccountServicesRequest

我曾與服務名稱(在這種情況下,我只是用類作爲服務而不是WCF等)相同的問題。即:

Services.Contracts.IAccountService
Domain.Contracts.IAccountService

我現在領域層IxxxServiceHandler這給了我這一切使得 「服務處理程序」 解決了這個:

Services.Contracts 。帳戶服務
Domain.Contracts.IAccountServiceHandler

但是,我還沒有能夠解決這個問題與層之間來回傳遞的對象。 這似乎是通過我的解決方案(s)撒在一堆地方。 我只是好奇,看看是否有人有同樣的問題。如果是這樣,你是如何解決它們的?

回答

0

是的,我遇到了這個問題,但我已經很快修復了它,每次都足夠快。

良好的類命名約定可以提供幫助。避免在多個圖層中的類中使用相同的名稱。

或者,你可以使用namespace aliases,這樣你會使用,例如:

services::IAccountService 
domain::IAccountService 

這是否幫助?

+0

哈哈!是的,這確實有幫助,但也許你可以給我一個例子。 假設(爲簡單起見)我有3層: (1)域\ Domain.Contracts (2)服務\ Services.Contracts (3)演示 如果我在域和IUSER用戶對象和/或UserDto你會在其他圖層中命名這些對象是什麼? – devlife 2009-12-10 21:49:18

+0

好吧,我需要確切地知道*你爲什麼命名以確定它的最佳名稱。 :-)諸如「合同」,「用戶」等事情聽起來很像問題領域的概念,我建議將其放在單一的業務邏輯層中。你不想在其他地方複製這些類。你可以有諸如Business.Contract和Business.User等類。 (TBC) – CesarGon 2009-12-10 22:50:54

+0

在表示層上,可以有例如Presentation.ContractDialog或Presentation.UserWindow。 「合同對話框」是一個顯示合同的對話框;您不會擁有Presentation.Contract,因爲合同本身僅在業務邏輯層中建模*。這有意義嗎? – CesarGon 2009-12-10 22:51:26