我正在尝试在VS中设置我的应用程序的结构,我想“尝试”并在将来对其进行合理的证明。该应用程序将是对旧的Winform应用程序的WPF重写,该应用程序没有遵循任何约定。没有层,层,首字母缩略词等。
这是一个相当大的企业应用程序。我计划将Linq To SQL用作数据库,并且很可能始终是MS SQL。我也有一个现有的技能。
我想尽可能地遵循MVVM和DDD,但是结合使用它们时,我对应用程序的结构感到困惑。让我尝试通过一些示例进行说明。
当我遵循MVVM时,我的文件夹结构可能如下所示:
Views
Models
ViewModels
Helpers
但是这如何适合于简单的DDD分层方法,其中我的项目结构可能类似于此:
MyApp.UI
MyApp.Domain
MyApp.Data
我应该将其Models
放在“域”层中还是有3种说法Person
?这就引出了另一个问题,即我将数据库对象的存储库和映射放在哪里?我会假设数据...
Views
我会进入UI,但ViewModels
也会吗?
最后,我将业务逻辑嵌入哪里?
我在CodePlex,DDD示例中发现了以下内容,虽然对您有所帮助,但似乎对Web应用程序有所帮助,但这似乎是我的无知。
不要误会我的意思,我知道我可以拥有尽可能多的文件夹,并可以随意命名。我试图弄清楚在哪里放置东西,以便可以扩展,而不是那些地方必须叫什么。
我的问题的核心可能会这样显示。
我有tblPerson
产生的物件*.dbml
。这很明显,将属于我的“数据”层。
现在,我将拥有Model,DTO,Domain Model或在称为的单独Layer(project?)中调用的任何东西Person
。我需要一个Mapper
用于Person
对tblPerson
那个我不知道放在哪里。
然后,我将拥有一个ViewModel,例如,EditPerson
它将拥有它自己的属性,Person
但可能还会更多。
最后,我将有一个绑定到该ViewModel的View。
需要明确的是,我的假设和猜测已填满该段,我希望有人能为我打气或向他们提供见解,这样从现在开始的6个月到一年内,我不会踢得比自己需要的更多。