问题标签 [dto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1182 浏览

.net - 数据对象中的业务逻辑与耦合与 DTO(与?)

我有一组将在内部公共 API 中公开的业务/域类(用于日历)。在同一个 API 中,存在直接反映底层数据库结构的数据对象(NHibernate 映射,但这并不重要)。

我需要做的是构建这些对象的类型化集合,因此日历上的每一天都可以包含一组来自数据库的约会、提醒等。

一种解决方案是使用域模型中的标记接口“标记”每个数据对象:

但是后来我将业务/域模型的东西放入我的数据模型中。

另一种解决方案是将数据模型类包装如下,并在日历 API 中公开/使用它们:

但这引入了非常明显的耦合。

第三种解决方案是使用 DTO,但我需要在 DTO 中公开数据对象中的每个字段......所以首先创建 DTO 似乎没有意义。

这里哪个是最好的选择,还是有更好的选择?

这是一个 .NET 2.0 项目,如果有区别的话。

0 投票
1 回答
2470 浏览

c# - NHibernate 和 DTO

我正在考虑将 NHibernate 引入一个项目,但对如何实现只读 DTO 有疑问。实体很容易,但是如果您有一个来自多个实体/表的字段我们两个需要混合在一起以在视图上显示数据的场景呢?加载所有实体然后创建 DTO 肯定是矫枉过正。尤其是当,gasp,一个映射到 DTO 的手写查询,会更有效。

你们在使用 NH 或其他任何形式时如何处理这种情况。

0 投票
7 回答
522363 浏览

java - DTO、VO、POJO、JavaBeans 的区别?

看过一些类似的问题:

能否请您告诉我使用它们的上下文?还是他们的目的?

0 投票
2 回答
2468 浏览

wcf - 在 WCF 服务之间共享 DTO 对象

我什至在问之前就觉得这是一个愚蠢的问题,但是我的大脑现在运转得不太好。我有两个 WCF 服务“CountryService”和“FloristService”。

现在 CountryService 有以下方法:

此外, FloristService 有一个方法:

到目前为止一切都很好,但问题是 FloristDTO 引用了 CountryDTO 即

这很好,但如果我将服务代理生成工具与 Visual Stuidos 一起使用(即添加参考 > 添加服务参考),那么我会创建两个版本的 CountryDTO,即 FloristService.CountryDTO 和 CountryService.CountryDTO。

现在我可以想出一些方法来克服这个问题,但似乎没有一个是正确的。我想知道“正确”的方法是什么,我可以用代理生成工具做些什么来让它共享常见的 DTO?

干杯,克里斯

0 投票
5 回答
5556 浏览

java - 是否可以遍历java中的类成员?

我有一个拥有大量成员的 DTO。我想知道 Java 是否支持类的 for(in) 的想法。我不认为它确实如此,但如果它确实如此,它会为我节省大量的悲伤,所以,我想我会把这个问题抛到那里去。

0 投票
3 回答
733 浏览

c# - POCO 应该从 DTO 派生还是最好不派生?

在创建 n 层解决方案时,我不想公开我的业务对象,而是使用 DTO 来代替它。另一方面,我不想一直重复定义对象并编写复制代码。

现在我的想法是编写包含所有必要字段和属性但没有逻辑(只有状态)的 DTO。

然后我会从那些 DTO 中派生出我的业务对象,用我的业务逻辑扩展它们,处理 DTO 基类属性。这些对象也将是使用的 ORM (NHibernate) 中持久化的对象。

使用这种方法,在服务器端,我可以处理业务对象并将它们直接传递给客户端(它们是派生的,因此可以向下转换)。我不会被迫以这种方式公开我的业务逻辑并节省大量代码。

你觉得这种做法合理吗?

问候,

塞巴斯蒂安

0 投票
5 回答
2364 浏览

c# - DTO 与序列化持久化实体

我很想知道社区对这个问题的看法。我最近遇到了 NHibernate/WCF 场景的问题(实体持续存在于服务层),并意识到我可能在这里走错了方向。

我的问题很明显,当在 Web 服务(在这种情况下为 WCF)后面使用持久对象图(NHibernate、LINQ to SQL 等)时,您更喜欢通过网络发送这些实体吗?或者您会创建一组更轻的 DTO(无循环引用)吗?

0 投票
2 回答
2228 浏览

c# - DTO/命令模式问题

在 LosTechies 上有一个关于 AutoMapper 的非常有趣的讨论(一个支持/反对 2-way mapping 的论点)。

由于我目前正在解决的问题,这实际上引起了我的注意。我正在处理一件货件,以便向我的用户提供诸如费率/交货时间等信息。为了集中实际服务,我有一个 WCF Web 服务,它可以保存任何域实体。

为了简化域模型,我基本上有 2 个类:

我还创建了一组相应的 DTO,以减轻线路上的负载。演示部分(或任何涉及 Web 服务的部分)在不了解域模型的情况下使用 DTO。

我的问题来了。为了创建一个货件,该服务接受一个项目列表。创建货件是有逻辑的,这一切都隐藏在 Web 服务后面。从本质上讲,这意味着 ItemDTO 通过网络传递(客户端 -> 服务器),创建发货,然后将 ShipmentDTO 传回(服务器 -> 客户端)。现在,ShipmentDTO 也有一个 ItemDTO 的子列表,它创建了 2 路映射场景。

这不仅仅是一个简单的 CRUD 操作,而且我对命令消息模式还很陌生,所以我很好奇社区将如何解决这个问题。

您是否通过双向映射双向传递 DTO?

示例用法(表示层):

0 投票
1 回答
550 浏览

asp.net - 如何在业务层(ASP.NET)中调用 DataAnnotations?

我想在我的传输对象上使用 DataAnnotations。但是如何在业务层调用它们来验证输入?

这是通过某种方法调用还是反射?

我不使用 ASP.NET,而是使用标准的 ASP.NET,并且想在业务层调用数据注释。

0 投票
2 回答
1834 浏览

asp.net-mvc - 存储库 + NHibernate + DTO

我有一个带有存储库层(和一个休眠实现)、服务(业务)层和 web 层中的 asp.net mvc 的应用程序。

因为我还需要创建一个小的 silverlight 应用程序,所以我将创建几个 wcf 服务。这要求使用 DTO,但我不知道如何以及在哪里创建它们。

我看过一些链接(比如这个),所以看起来 dto 和映射过程的自然位置是在我的数据/存储库层的某个地方?

但另一方面,当我查看 Fowlers DTO 模式时,似乎映射是由域层某处的汇编程序完成的?

我很困惑......实现这一目标的最佳做法是什么?

非常感谢!