因此,我们专注于开发利用CQRS + ES的DDD模式的企业Web应用程序。我们在企业级别上处理得非常好。现在,当我们想要使用Xamarin和便携式类库向本地移动设备开放我们的后端服务时,它是如何组合在一起的?我们是否将每个有界上下文中的域项目更改为PCL项目类型?我们如何处理MVVM方面的事情,例如Windows Store App,Windows Phone应用程序?由于我们从Web API服务中提取,我们是否会引入PCL有界上下文库,还是为我们的本机客户端MVVM模式创建子集域模型和单独的PCL库?
现在我们倾向于将原始DDD项目保留为类库,并为我们的MVVM代码创建一个单独的可移植类库。我们可能会使用文件链接链接回域项目以获取模型,以便我们始终拥有最新的POCO对象集以及我们要在客户端上使用的任何DTO对象。其他任何人对此有何想法或想法?我真的没有看到围绕这个DDD + PCL组合的很多讨论。
答案 0 :(得分:1)
我已经对此做了很多考虑,并且我采用DDD方法将Xamarin放入当前架构中的做法是:
将您的域实体放入PCL项目并使用它来引用您需要的所有项目,例如Xamarin.Forms,Xamarin.Android,Xamarin.iOS,ASP.NET,WCF等。
您的域服务可以位于将用于应用层的普通类库中。应用程序层将由Presentation MVC等Presentation项目使用。
在分布式服务层中,您将公开Xamarin或其他应用程序的服务以与您的应用程序进行通信。您可以将ASP.NET Web Api或WCF与REST一起使用。该层还将使用关于DDD概念的应用层。
xamarin项目进入表示层,但不使用应用层。在这里,您将为Xamarin编写服务,以通过Internet连接到分布式服务层。如果您需要离线同步,也可以将其放在此处。在这里,您将引用您的域实体项目,并让您的所有实体都有其业务规则。
通过这种方式,您可以使用所有解决方案共享域和业务规则,并尊重DDD概念和角色分离。