DDD和WCF架构问题

g_b

我目前正在学习DDD,在我的示例项目中,我对体系结构有一些疑问。

现在,我有这个:

WPF应用程序(引用位于单独程序集中的服务代理)->服务(代理来自何处),该服务引用->域层(包含域对象和存储库接口),然后访问-> DAL(实现存储库)

问题:

  1. 我知道答案取决于具体情况,但总的来说,这种架构是否假设所有层都需要在正确的路径上?

  2. 这是我第一次使用存储库模式,现在,我的服务具有一个接受IRepository的构造函数。注射在哪里进行?服务层是否应包含应使用哪个存储库的配置文件?因此,这意味着服务层既引用域层中的存储库接口,又引用其在DAL中的实现?

  3. WPF应用程序引用了服务代理,因此不会生成带有IRepository参数的构造函数。假设我决定直接从WPF使用服务(无服务代理),如何使用UI中的IRepository参数实例化服务?我需要添加对DAL的引用,其中包含存储库的实现?这样可以吗?

  4. 同样,这种设计还意味着DAL应该了解IRepository接口(因为他们将实现该接口)以及将使用该存储库实现的服务层。但是我的存储库接口在域层中。DAL将需要引用域层以获得那些我认为是错误的接口,因为我正在引用上游。我该怎么做呢?

约罗

我知道答案取决于具体情况,但总的来说,这种架构是否假设所有层都需要在正确的路径上?

对我来说看起来很标准。众所周知,对体系结构进行分层会增加复杂性。确保应用程序足够大以充分利用多层体系结构。

此外,如果要通过组装将层分开,请确保在逻辑上也将它们分开。分离程序集的点(与逻辑分离相结合)是,您可以在不影响或修改系统其余部分的情况下分离一个项目的开发。

注射在哪里进行?

在最高层,您的构图是根。在这种情况下,您的WPF应用程序。

有关成分根的更多信息

服务层是否应包含应使用哪个存储库的配置文件?

使用哪个具体存储库的决定应该在组合根目录中完成,将决定放置在配置文件中意味着更多的灵活性,但同时也意味着额外的复杂性。是否需要执行此操作?

因此,这意味着服务层既引用域层中的存储库接口,又引用其在DAL中的实现?

域中只有存储库接口。没有执行。不需要。不要那样做

如何通过UI的IRepository参数实例化服务?我需要添加对DAL的引用,其中包含存储库的实现?这样可以吗?

是的。您的WPF是您的合成根,它需要所有引用,因此可以构造您的体系结构。

同样,这种设计还意味着DAL应该了解IRepository接口(因为他们将实现该接口)以及将使用该存储库实现的服务层。

DAL为什么要引用服务层?它不需要。不要那样做

但是我的存储库接口在域层中。DAL将需要引用域层以获得那些我认为是错误的接口,因为我正在引用上游。我该怎么做呢?

您不是在上游引用,请参考https://stackoverflow.com/a/24241373/1027250

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章