我不太确定天气 DTO 应该是 POCO,或者它可以依赖于任何技术。我在想,最好将它们保留为 POCO,以支持松耦合并确保它适用于任何技术。
从服务堆栈文档中提到:
用于在 ServiceStack 中定义 Web 服务的请求和响应 DTO 是标准的 POCO,而实现只需要从可测试且无依赖的 IService 继承即可。作为将 DTO 保存在单独的无依赖项 .dll 中的一个好处,您可以在提供强类型 API 的 C#/.NET 客户端中重用它们,而无需任何代码生成。此外,您的 DTO 定义了所有服务堆栈不会使用任何额外的自定义人工制品或标记污染您的 Web 服务
但是如果你看到 DTO 的实际实现,它依赖于服务堆栈。
[Route("/todos")]
[Route("/todos/{Ids}")]
public class Todos : IReturn<List<Todo>>
{
public long[] Ids { get; set; }
public Todos(params long[] ids)
{
this.Ids = ids;
}
}
[Route("/todos", "POST")]
[Route("/todos/{Id}", "PUT")]
public class Todo : IReturn<Todo>
{
public long Id { get; set; }
public string Content { get; set; }
public int Order { get; set; }
public bool Done { get; set; }
}
我对文档中提到的内容和实际实现的内容完全感到困惑。为什么我们需要让 DTO 依赖于技术,最好保持它们的清洁和技术独立。
我的理解可能完全错误。