yo.*_*yo. 5 c# architecture wcf domain-driven-design
我正在启动一个新的基于WCF的项目,该项目由"引擎"和一些桌面应用程序组成.但我发现很难建立我的项目结构.
桌面应用程序(仅演示)
共享
MyProject.Core(客户/客户,客户/ ICustomerService)
发动机
WinForm应用程序
我对吗 ?
Kla*_*sen 21
如果您正在进行DDD,我发现您没有域模型很奇怪.你有一个所谓的引擎,它有多个问题.它实现了您的业务逻辑,并了解如何将业务逻辑托管为Windows服务.
我建议如下项目结构:
MyProject.Model:定义抽象存储库,实体,值对象,服务(DDD术语)和其他域逻辑.它没有引用其他项目
MyProject.DataAccess:使用linq2sql实现存储库.有对MyProject.Model的引用
MyProject.ServiceModel:包含服务合同和其他相关的东西,将您的域模型公开为WCF服务.此项目还将包含服务所服务和接受的域对象的服务特定表示.这样做的原因是您可能不应该使用WCF数据协定中所需的属性来装饰您的域类.该项目引用了MyProject.Model.
MyProject.Service:包含服务的app.config并通过自定义ServiceHost和ServiceHostFactory执行依赖注入.它引用了MyProject.Model MyProject.ServiceModel和MyProject.DataAccess +您最喜欢的DI框架(例如Windsor Castle)
MyProject.PresentationModel:定义要在UI中使用的各种视图模型和命令.它具有对MyProject.Service公开的服务的服务引用
MyProject.WinUI:您的WPF应用.参考MyProject.PresentationModel.
请注意,您在Eric Evans关于DDD的书中可能阅读的大部分内容仅涉及MyProject.Model的内容.其他项目正在组成额外的层,而不是直接在先生处理过.埃文斯的书.
请记住,通过明确区分关注点并使用依赖注入,您将最终获得易于测试的代码.根据我上面提出的结构,您应该能够测试几乎所有内容,因为您的UI将仅包含XAML.
无论如何,这只是我的看法.请随意询问是否有一些需要澄清.
祝这个项目好运.
/克劳斯
| 归档时间: |
|
| 查看次数: |
3127 次 |
| 最近记录: |