我一直在为网站重新编写后端,并将其移向三层架构。
我的意图是这样构建它:
Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)
我的问题是在这个结构中放置 DTO。我需要使用 DTO 在业务层和 WCF 服务之间以及从 WCF 服务到消费网站之间移动数据。
在我在这里的研究期间,我读过一些很好的讨论,尽管我有点摸不着头脑:
Davide Piras 在这篇文章中提出了一些重要的观点,如果我要遵循这个设计,那么我会在一个单独的项目中声明 POCO 的接口。然后,这些将由层 (1) 和 (2) 实施。虽然我喜欢使用接口,但通过在 (1) 和 (2) 中声明 POCO,然后使用 AutoMapper 之类的东西来回复制它们的数据,我似乎确实可以为自己做更多的工作。
这篇文章使用了一个系统,在该系统中创建了一个业务对象项目,该项目将被所有层引用。这似乎比其他解决方案更简单,并且似乎引导我找到一个解决方案
Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)
^ ^ ^
| | |
[ -- Business Objects Referenced here --]
我的问题是:跨解决方案的三层共享业务对象是否有代码味道,或者我上面列出的两种方法只是破解同一个问题的两种不同方法?