gpt4 book ai didi

c# - DDD 层 - 与实体的通信

转载 作者:行者123 更新时间:2023-12-04 18:11:54 26 4
gpt4 key购买 nike

我开始使用 c# 在 asp.net mvc 中进行域驱动设计,并且正在创建一个小型示例项目。我目前有一个用于我的域层、服务层、Web 以及控制台应用程序的项目。我也使用 mongodb 作为我的数据库。

目前,我的项目有一些团体,这些团体的人属于我有一个名为 Group 的类。和 Person在我的域层中,如下所示(简化)。 GroupPerson也代表什么集合Group看起来像在我的 mongodb 数据库中。

public class Group
{
public string Name { get; set; }
public List<Person> People { get; set; }
}

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

我理解它的方式是我的网站和我的控制台应用程序应该与我的服务层进行通信,它充当一种门面并且永远不应该看到域层?

我不确定的事情是在我的控制台应用程序或网站中,如果我想询问所有组的服务层,通常我希望我会要求类似的东西
var groupService = new GroupService();
List<Group> groups = groupService.GetGroups();

除了在这种情况下作为我的组,并且人员类位于我的控制台应用程序和网站不知道的域层中,我无法请求 Group 的列表因为我的应用程序不知道 Group 是什么是。

我的服务层是否应该将结果输出为其他东西,例如 Json,这取决于我的网站和控制台应用程序,或者说我是否有其他人可以访问的 api 来确定如何处理这些数据?还是我在这里弄混了什么?

编辑:

将来我计划在安卓应用程序中使用我的服务和域。我正在考虑使用 Restful 服务。我不打算(在这个阶段)将它作为公共(public) API。

最佳答案

您的服务层将与数据传输对象进行通信,而不是域对象。域实体和数据传输对象之间的区别在于域实体具有行为,而数据传输对象 (DTO) 只是数据。

因此,回答您的问题:您的服务层将使用数据传输对象从您的控制台应用程序或您的网站获取命令和查询,并将它们转换为域实体。它将从域实体获取结果并将结果转换回 DTO。

单个域实体很可能根本不转换为 DTO,或者单个域实体转换为 10 个 DTO。这些是 2 个非常不同的 api,用于 2 个非常不同的目的。我的建议是开发你的领域层,然后在上面构建你的服务层,以根据客户端(控制台和 Web 应用程序)的需求进行通信。

关于c# - DDD 层 - 与实体的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com