【问题标题】:How does portable class libraries, MVVM and DDD all work together?可移植类库、MVVM 和 DDD 如何协同工作?
【发布时间】:2014-04-10 15:43:42
【问题描述】:

因此,我们专注于开发一个利用 DDD 模式和 CQRS+ES 的企业 Web 应用程序。我们在企业层面对此有很好的处理。现在,当我们想使用 Xamarin 和可移植类库向本机移动设备开放后端服务时,这是如何结合在一起的?我们是否将每个有界上下文中的域项目更改为 PCL 项目类型?我们如何处理 MVVM 方面的事情,例如在 Windows Store 应用程序、Windows Phone 应用程序中?由于我们从 Web API 服务中提取,我们是提取 PCL 有界上下文库还是为我们的本地客户端 MVVM 模式制作一个子域模型和一个单独的 PCL 库?

现在,我们倾向于将原始 DDD 项目保留为类库,并为我们的 MVVM 代码创建一个单独的可移植类库。我们可能会使用文件链接来链接回域项目以获取模型,以便我们始终拥有最新的 POCO 对象集和要在客户端上使用的任何 DTO 对象。其他人对此有任何想法或想法吗?我真的没有看到很多关于这个 DDD+PCL 组合的讨论。

【问题讨论】:

标签: mvvm domain-driven-design xamarin portable-class-library cqrs


【解决方案1】:

我对此进行了很多思考,并且我通过 DDD 方法将 Xamarin 放入我当前的架构中所做的事情是:

  1. 将您的域实体放在 PCL 项目中,并在您需要的所有项目中使用它来引用,例如 Xamarin.Forms、Xamarin.Android、Xamarin.iOS、ASP.NET、WCF 等。

  2. 您的域服务可以位于将用于应用程序层的普通类库中。应用层将被 ASP.NET MVC 等 Presentation 项目使用。

  3. 在分布式服务层中,您将公开您的服务以供 Xamarin 或其他应用程序与您的应用程序通信。您可以将 ASP.NET Web Api 或 WCF 与 REST 结合使用。该层还将使用尊重 DDD 概念的应用层。

  4. xamarin 项目进入表示层,但不使用应用程序层。在这里,你将为 Xamarin 编写服务,以通过 Internet 连接到分布式服务层。如果你需要离线同步,你也可以把它放在这里。在这里,您将引用您的域实体项目,并让您的所有实体具有它们的业务规则。

这样,您的域和业务规则将与您的所有解决方案共享,并尊重 DDD 概念和角色分离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多