问题标签 [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.
.net - 将 DTO 映射到域对象的最佳实践?
我见过很多与将DTO映射到域对象相关的问题,但我觉得他们没有回答我的问题。我以前用过很多方法,也有自己的看法,但我正在寻找更具体的方法。
情况:
我们有很多领域对象。我们正在使用 CSLA 模型,因此我们的域对象可能非常复杂,并且它们包含自己的数据访问权限。你不想在电线上传递这些。我们将编写一些新服务,这些服务将以多种格式(.Net、JSON 等)返回数据。出于这个(和其他原因),我们还创建了一个精简的数据传输对象以在网络上传递。
我的问题是:DTO 和 Domain 对象应该如何连接?
我的第一反应是使用Fowler,DTO 模式类型的解决方案。我已经看过很多次了,这对我来说是正确的。域对象不包含对 DTO 的引用。调用外部实体(“映射器”或“组装器”)从域对象创建 DTO。通常在域对象端有一个ORM。这样做的缺点是“映射器”对于任何实际情况都会变得极其复杂,并且可能非常脆弱。
提出的另一个想法是域对象“包含” DTO,因为它只是一个精益数据对象。域对象属性将在内部引用 DTO 属性,并且可以在需要时返回 DTO。我看不出这有什么问题,但感觉不对。我看过一些文章,使用NHibernate的人似乎使用了这种方法。
还有其他方法吗?以上方法之一值得使用吗?如果是或不是,为什么?
apache-flex - 调用 getter 而不将其分配给任何东西(延迟加载)
我有一个可以使用延迟加载模式完全加载或延迟加载的 DTO。它的加载方式取决于 Flex 应用程序的需求。但是,此 DTO 将被发送到 Flex 应用程序 (swf)。通常,例如一个集合,只会在调用时加载。然而,在我的情况下,集合只会在 Flex 中调用,因此我在 .NET 端的实现显然在这种情况下不起作用(除非 Flex 会进行服务器调用......我想避免的事情)。
在集合的 getter 中,从数据库中检索数据。如果我将使用 ASP.NET 页面,它会起作用,但如果 DTO 被发送到 Flex,则不会。
你会如何处理这个问题?我可以在将 DTO 发送到 Flex 之前调用 getter,但这似乎很糟糕...... + 只有在将 getter 分配给某些东西时才能调用 getter(并且永远不会使用将保存集合的局部变量...... )。
c# - 普通旧 CLR 对象与数据传输对象
POCO = 普通旧 CLR(或更好:类)对象
DTO = 数据传输对象
在这篇文章中有所不同,但坦率地说,我阅读的大多数博客都以定义 DTO 的方式描述 POCO:DTO 是用于在应用程序的层之间移动数据的简单数据容器。
POCO 和 DTO 是一回事吗?
hibernate - 数据传输对象和事务服务方法
在通过 Hibernate 支持的事务服务方法传递数据时,是否有任何真正实用的方法可以避免使用 DTO?换句话说,DTO 是避免延迟初始化问题的唯一非 hacky 解决方案吗?
我认为 DTO 的两种流行替代方案以及我不太喜欢它们的原因是:
在视图模式中打开会话。这是我不喜欢的,因为我想让服务方法真正具有事务性(即,当方法退出时,Hibernate 会话被提交并关闭)。这主要是因为如果我以后需要将服务发布为 Web 服务,我不想担心事务。
通过服务方法而不是 DTO 传递域/业务对象,并急切地获取所需的属性/属性。这要好一些。然而,在具有复杂实体关系的非平凡领域对象层次结构中,急切的获取必须在某处停止。当它发生时,我看不出这不会很快变成一个完整的hackaton,用整个地方的引用ID替换实体。
从可维护性的角度来看,我是否遗漏了什么或者 DTO 实际上是唯一可靠的方法?
wcf - 类型化数据集和 Dtos
我有一个连接到 WCF 服务以实现其业务逻辑的 Web 应用程序。出于性能和互操作性的原因,我想使用简单的 Dto 在 WCF 边界传输数据。
但是,我必须使用类型化的数据集进行数据访问(由于政治原因,ORM 或任何其他选项不可用)。
将 Dto 与类型化数据集一起使用是个好主意吗?有人做过吗?有推荐的模式吗?最重要的是,是否有一个库/工具/方法可以从类型化的数据集中自动生成 Dto?
web-services - NHibernate 投影到 DTO
我不熟悉 NHibernate 投影。我正在尝试使用它,以便可以返回 List<> 而不是 IList<>。到目前为止,我在向 DTO 投射方面还没有多少运气。我有以下查询和域对象。所以一开始我只是想得到一个给定 EmployeeID 的订单列表。我正在遍历结果列表并将其添加到列表中,因为我希望能够序列化此列表。谁能告诉我Projection离我有多远?我搜索并发现了一些与我自己不相似的示例。基本上..我只想创建一个 DTO 列表。
谢谢!
订单:
雇员:
员工订单DTO:
domain-driven-design - POCO vs DTO:可以对域对象进行部分水合吗?
通常需要在 UI 上以各种方式显示域对象;列表、搜索结果、查看和编辑页面,以及页眉、页脚和弹出窗口。通常,您有几个不同的域对象“视图”,每个视图都显示不同的字段。
大多数建议似乎是在需要子集或超集时使用 DTO 获取数据。维护 DTO 有很多开销。简单地填充每个场景所需的域对象的属性是一种不好的方法吗?例如,您可以使用配置文件来说明应该包含哪些属性,例如:
service.GetDomainObjects(int listID, Profile.ListProfile); service.GetDomainObjects(string searchParam, Profile.SearchProfile);
java - 新项目是否应该采用 SDO(服务数据对象)?
我在 Delphi 中使用 Midas/DataSnap 编程已经有很长一段时间了,并且对它非常满意。迁移到 .NET 我对 ADO.NET 数据集非常满意。对于 CRUD 应用程序,我对任何类型的 ORM 都感到非常不舒服。具有自动差异/增量处理的通用数据结构让我的工作做得更好,我是一个普通的数据库应用程序开发人员。
几年前尝试学习Java,但找不到类似的想法。我能找到的最接近的是 SDO(服务数据对象)。当我看到它时,我认为它应该被广泛采用,但我错了。即使这个规范现在已经相当老了,我仍然几乎找不到很多人讨论它或广泛使用它。假设从我在互联网上可以找到的信息来看,SDO 的使用是非常被动的。
想知道是不是快死了?您想分享在 SDO 方面的任何经验吗?手动 DTO 编码总是更好?
java - 用Java表示Excel工作表值的好方法
考虑到我有一个以下格式的 excel 表:
人 年龄Foo 29
Bar 27
现在我想读取这些值(使用 POI HSSF)并且必须处理它们。最好的方法是什么?
请注意,我的应用程序中没有对象人员,因为 excel 表中可能出现的值是任意的(即它可能不是人名和年龄)。所以,我需要使用某种 HashMap 来存储这些值。如果多行,有一个 List 好吗!?
nhibernate - NHibernate、DTO 和 NonUniqueObjectException
我们使用 DTO 模式将我们的域对象从服务层编组到我们的存储库中,然后通过 NHibernate 下放到数据库中。
我遇到了一个问题,我从存储库中提取了一个 DTO(例如 CustomerDTO),然后将其转换为我的服务层中的域对象(客户)。然后我尝试保存一个包含相同客户对象的新对象(例如 SalesOrder)。这又被转换为 SalesOrderDTO(和 CustomerDTO)以推送到存储库中。
NHibernate 不喜欢这样 - 它抱怨 CustomerDTO 是重复记录。我假设这是因为它在同一个会话中取出了第一个 CustomerDTO,并且由于返回已经来回转换,它无法将其识别为同一个对象。
我被困在这里还是有办法解决这个问题?
谢谢
詹姆士