【问题标题】:DDD Projects Structure With WCF使用 WCF 的 DDD 项目结构
【发布时间】:2010-12-21 11:11:44
【问题描述】:

我正在启动一个新的基于 WCF 的项目,该项目由“引擎”和一些桌面应用程序组成。 但是我发现我的项目结构很难。

  • 引擎(Windows 服务,托管 WCF 服务以供桌面应用程序访问并托管我的所有业务逻辑)
  • 桌面应用程序(仅演示)

  • 共享

  • MyProject.Core(客户/客户、客户/ICustomerService)

  • 引擎

    • MyProject.Engine(Customers/CustomerService、Customers/ICustomer、Customers/ICustomerRepository)
    • MyProject.Infrastructure.SqlServer(客户/客户(LinqToSql 特定)、客户/客户资源库)
  • WinForm 应用程序

  • MyProject.Core
  • MyProject.UI

我说的对吗?

【问题讨论】:

    标签: c# wcf architecture domain-driven-design


    【解决方案1】:

    如果你在做 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 框架(例如温莎城堡)

    MyProject.PresentationModel:定义要在 UI 中使用的各种视图模型和命令。它具有对 MyProject.Service 公开的服务的服务引用

    MyProject.WinUI:您的 WPF 应用程序。引用 MyProject.PresentationModel。

    请注意,您可能在 Eric Evans 的有关 DDD 的书中读到的大部分内容仅与 MyProject.Model 的内容有关。其他项目正在构成先生未直接解决的附加层。埃文斯的书。

    请记住,通过明确分离关注点并使用依赖注入,您最终会得到易于测试的代码。使用我上面提出的结构,您应该能够测试几乎所有内容,因为您的 UI 将只包含 XAML。

    无论如何,这只是我的看法。请随时询问是否需要澄清其中的一些内容。

    祝项目顺利。

    /克劳斯

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 2010-10-19
      • 1970-01-01
      • 2011-04-29
      • 2014-08-05
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多