我一直在重写网站后端,并将其向三层架构转移。
我的意图是这样结构化的:
网站<->WCF服务(1)<->业务层(2)<->数据层(3)
我的问题是DTO在这个结构中的放置。我需要使用DTO在业务层和WCF服务之间移动数据,并从WCF服务移动到消费网站。
在这里进行研究期间,我阅读了一些很好的讨论,但我还是有点困惑。
我的意图是这样结构化的:
网站<->WCF服务(1)<->业务层(2)<->数据层(3)
我的问题是DTO在这个结构中的放置。我需要使用DTO在业务层和WCF服务之间移动数据,并从WCF服务移动到消费网站。
在这里进行研究期间,我阅读了一些很好的讨论,但我还是有点困惑。
在这篇文章中,Davide Piras提出了一些很好的观点,如果我要按照这种设计方式进行,则需要在一个单独的项目中声明POCO的接口。然后这些接口会被层(1)和(2)实现。虽然我喜欢使用接口,但是似乎通过在(1)和(2)中声明POCO并使用类似AutoMapper的东西来复制它们的数据来回传输会让我的工作更加繁琐。
这篇文章使用了一个系统,在其中创建了一个业务对象项目,该项目将被所有层引用。这似乎比另一种解决方案更简单,并且似乎可以让我找到一个解决方案
网站 <--> WCF服务(1)<-->业务层(2)<-->数据层(3)
^ ^ ^
| | |
[ -- Business Objects Referenced here --]
我的问题是:在解决方案的三个层之间共享业务对象是否存在代码异味,还是我列出的两种方法只是解决同一个问题的两种不同方式?