我正在开始一个大型项目,我想使用 DDD。主要问题是如何在不重复NH的数据和映射的情况下显示来自多个Bounded Context的数据。我观看了 Udi 关于复合应用程序的播客。他提到使用 Razor 部分来显示来自多个有界上下文的数据,但他没有提供任何详细信息。有人知道如何使用它或者有人知道其他方法吗?
最佳答案
Razor 的好处是它允许您拥有完全独立的 Controller ,负责渲染单个页面的部分内容(门户风格)。例如,在 Razor 主视图中:
<some_markup> New products </some_markup>
@{ Html.RenderAction("Get", "NewProducts"); }
<some_markup> Product ratings </some_markup>
@{ Html.RenderAction("Get", "ProductRatings"); }
其中 NewProductsController
和 ProductRatingsController
属于不同的限界上下文,如下所示:
public class NewProductsController {
private readonly IProducts repository;
public NewProductsController(IProducts repository) {
...
}
[ChildActionOnly]
public ViewResult Get() {
// load products from repository and
// return corresponding ViewModel
}
}
public class ProductRatingsController {
private readonly IProductRatings repository;
public ProductRatingsController(IProductRatings repository) {
...
}
[ChildActionOnly]
public ViewResult Get() {
// load product ratings from repository and
// return corresponding ViewModel
}
}
请注意,尽管 Controller 会在同一页面上显示数据,但它们彼此并不了解。可以使用 Composition Root 中的 DI 容器注入(inject)存储库。您的应用程序。
关于asp.net-mvc - 在单页上组合有界上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10911616/