普通旧 CLR 对象与数据传输对象

2024-03-30

POCO = 普通旧 CLR(或更好:类)对象

DTO = 数据传输对象

In this post http://rlacovara.blogspot.com/2009/03/what-is-difference-between-dto-and-poco.html这是有区别的,但坦率地说,我读过的大多数博客都以 DTO 的定义方式描述 POCO:DTO 是简单的数据容器,用于在应用程序的各层之间移动数据。

POCO和DTO是同一个东西吗?


POCO 遵循 OOP 规则。它应该(但不必)有状态and行为。 POCO来自POJO,由Martin Fowler创造[这里有轶事 http://www.martinfowler.com/bliki/POJO.html]。他使用 POJO 一词来让拒绝框架重的 EJB 实现变得更加性感。 POCO 应该在 .Net 中的相同上下文中使用。不要让框架决定对象的设计。

DTO 的唯一目的是传输状态,并且不应该有任何行为。参见马丁·福勒的DTO 的解释 http://martinfowler.com/eaaCatalog/dataTransferObject.html有关使用此模式的示例。

区别如下:POCO 描述了一种编程方法(好的老式面向对象编程),其中DTO是一种模式用于使用对象“传输数据”。

虽然您可以像对待 DTO 一样对待 POCO,但您可能会面临创建贫血域模型 http://www.martinfowler.com/bliki/AnemicDomainModel.html如果你这样做。此外,结构上也存在不匹配,因为 DTO 应该被设计为传输数据,而不是代表业务领域的真实结构。这样做的结果是 DTO 往往比您的实际域更加扁平。

在任何合理复杂性的域中,创建单独的域 POCO 并将其转换为 DTO 几乎总是更好。 DDD(领域驱动设计)定义了(另一个链接here http://moffdub.wordpress.com/2008/09/21/anatomy-of-an-anti-corruption-layer-part-1/,但最好的办法是买书 https://rads.stackoverflow.com/amzn/click/com/0321125215),这是一个很好的结构,可以使隔离清晰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

普通旧 CLR 对象与数据传输对象 的相关文章

随机推荐

  • android apache poi-ooxml 导致构建错误 'app:transformClassesWithDesugarForDebug'

    我的应用程序需要实现 Excel 创建和下载 我使用 Apache POI 的 HSSFWorkbook 来实现该功能 应用程序成功创建了所需的 Excel xls 输出 但是 如果我在 gradle 中包含 apache poi ooxm
  • 我想要一个提交按钮 该按钮提交的值与按钮 上显示的值不同 和
  • 如何在 Linux 上安全地、事务性地替换文件?

    我能想到的替换文件内容的最天真 最糟糕的方法是 f open file txt w f write stuff f close 显然 如果该操作在关闭之前的某个时刻失败 您将丢失原始文件的内容 而不一定完成新内容 那么 什么是完全正确的方法
  • Chef deploy_resource 私有存储库、ssh 部署密钥和 ssh_wrapper

    我在让我的厨师食谱克隆私人仓库时遇到了很多麻烦 好吧 我昨天还可以用 但是在 清理 我的 Vagrant 盒子六次之后 我把它弄坏了 正如你可能猜到的那样 我是一名厨师新手 按照此处的deploy resource指南 我创建了我的depl
  • 检查 NSNumber 是否为分数

    检查是否存在的最佳方法是什么NSNumber是分数吗 NumberIsFraction 0 NO NumberIsFraction 0 5 YES NumberIsFraction 1 0 NO 在边境案件处理和绩效方面 最佳 避免转换为具
  • MongoDB 作为时间序列数据库

    我正在尝试使用 mongodb 作为时间序列数据库 并且想知道是否有人可以建议如何最好地针对该场景进行设置 时间序列数据与股票价格历史非常相似 我收集了来自不同机器的各种传感器的数据 有数十亿个时间戳的值 我想问以下问题 最好来自数据库而不
  • 如何在命名类别中声明私有属性?

    我知道可以通过将类的私有属性放入实现中声明的类的未命名类别中来声明类的私有属性 m 该类的文件 那是not我想做的事 我正在处理一个类的命名类别 该类别为该类添加了一些功能 对于此功能 在我的类别中使用私有属性会对我有很大帮助 因此实现此功
  • 如何修复 C# 中的“使用未分配的局部变量”[重复]

    这个问题在这里已经有答案了 我是 C 新手 我最后的编程语言是 C 我不断收到 Use of unassigned local variable average 这average与之相关的是average 10 using System u
  • Android HttpUrlConnection EOFException

    我想知道 Android 上的 HttpUrlConnection 和 POST 请求是否存在已知问题 我们正在经历间歇性的从 Android 客户端发出 POST 请求时出现 EOFExceptions 重试相同的请求最终会成功 这是堆栈
  • 将 ruby​​ .gem 文件放在哪里以便 Shoes.setup 可以找到它们?

    关于鞋子中的宝石支持 人们提出了很多问题 但没有人回答将它们放在哪里 我在 Windows XP 上有 Shoes Raisins 1134 并且我已经下载dbi 0 4 1 gem我正在尝试让以下内容发挥作用 Shoes setup do
  • 从 Mongo 获取 BinData UUID 作为字符串

    我目前有一些 id 作为 UUID 存储在 Mongo 中 处理所需 他们像这样被返回 id new BinData 3 JliB6gIMRuSphAD2KmhzgQ 将此值转换为字符串以进行调试的简单方法是什么 需要明确的是 应用程序可以
  • 使用 SMOTE 对图像数据进行过采样

    我正在使用 CNN 进行二元分类 数据不平衡 其中正医学图像 负医学图像 0 4 0 6 所以我想在训练前使用SMOTE对正医学图像数据进行过采样 但是 数据的维度是 4D 761 64 64 3 这会导致错误 Found array wi
  • 如何在 Django 中强制用户注销?

    在我的 Django 应用程序中 在某些条件下 我希望能够强制用户通过用户名注销 不一定是当前登录的用户 而是另一个用户 因此 我认为请求方法没有任何有关我要注销的用户的会话信息 我熟悉 django auth 和 auth 注销方法 但需
  • 以编程方式将颜色从加载的位图逐像素交换为红色、绿色、蓝色或灰色

    在这里下载源代码 http www eyeClaxton com download delphi ColorSwap zip http www eyeClaxton com download delphi ColorSwap zip 是的
  • 在 php.ini 上启用curl_exec

    我想运行带有curl 的php 脚本 但以下功能被 php ini 禁用 exec passthru shell exec 系统 proc open popen curl exec curl multi exec show source 我
  • 如何在 Javascript 中检测 XMLHttpRequest() 的跨源 (CORS) 错误与其他类型的错误

    我试图检测 XMLHttpRequest 何时由于跨源错误而不是错误请求而失败 例如 ajaxObj new XMLHttpRequest ajaxObj open GET url true ajaxObj send null 考虑 url
  • 如何从java代码中隐藏线性布局? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏线性布局 所以我使用了 Li
  • 如何使用 Javascript 将数据写入 JSON 文件

    例如 我有一个 JSON具有以下内容的文件 honda accord color red ford focus color black 推送另一个对象的 JavaScript 代码是什么 nissan sentra color green
  • 如何绘制较长时间的正弦曲线

    我是 Python 新手 并且尝试绘制持续时间为 300 秒的正弦曲线在 x 轴上 但我只能在短时间内绘制正确的正弦曲线 MWE import numpy as np import matplotlib pyplot as plt in a
  • 普通旧 CLR 对象与数据传输对象

    POCO 普通旧 CLR 或更好 类 对象 DTO 数据传输对象 In this post http rlacovara blogspot com 2009 03 what is difference between dto and poc