【发布时间】:2012-11-25 00:23:02
【问题描述】:
我有几个关于使用 PRISM 框架开发 WPF MVVM 应用程序的问题:
模块化应用程序中的模块是否应该包含数据访问代码?
如果模块依赖于基础设施项目中存在的代码,例如 prism 文档中的“Stock Trader RI”,那么这不会导致这些模块和基础设施之间的紧密耦合。项目,模块不应该是自包含的功能吗!?
我喜欢 DDD(领域驱动开发)的神话,即所有代码都应该依赖于业务逻辑层,因此“依赖箭头”不应该从 BLL 中出来,而是应该进入 BLL(例如。 DAL 依赖于 BLL 中的接口,然后你可以使用 DI 容器来连接所有东西),我认为模块是应用程序的 BLL,所以我不希望它们依赖于任何东西,你能在模块化 PRISM 应用程序(如何)?
【问题讨论】:
-
如果您更具体地了解您想在特定问题域中完成什么,这可能会很有用。最松散的可能耦合是传输纯数据
object,但显然这对您的应用程序没有多大用处,除非您可以通过将其转换为某些 API(例如ViewModel类或接口)来赋予它某种形状. -
另外,您应该阅读关于松散耦合的维基百科文章。它说,“松散耦合发生在依赖类只包含一个指向接口的指针,然后可以由一个或多个具体类实现。依赖类的依赖是对接口指定的“契约”;a实现类必须提供的方法和/或属性的定义列表。任何实现接口的类都可以满足依赖类的依赖关系,而无需更改类。"
-
@RobertHarvey 我不能更具体,因为我最近问了一个更具体的问题但没有得到答案。我知道接口强加合同并提供松散耦合,但 DDD 的依赖视图使您能够将 BLL 隔离到具有公共接口的可重用库以及应用程序中的所有其他层都依赖于这些。我希望我能提供一个例子,但它不适合这里。如果可能的话,我特别希望您对第一个问题发表意见。