2009-12-09 94 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