普通旧 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 对象与数据传输对象 的相关文章

  • 任何reinterpret_cast改变指针值的真实例子?

    根据 C 标准 reinterpret cast一个指针的T 到其他类型的指针Q 可以改变或不改变指针值 https stackoverflow com questions 1863069 casting via void instead
  • tmpnam 的 C/C++ 线程安全性?

    我需要使用tmpnamC 中的函数 但我需要了解它的线程安全性 也就是说 如果我有多个线程 每个线程都需要为临时文件获取不同的名称 我是否可以保证每个线程都会收到具有不同名称的文件 tmpnam 仅保证该文件当时不存在 但它可能会在您自己创
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • esp8266互联网交换机问题

    我正在尝试制作一个门继电器开关系统 我可以通过端口转发从任何地方进行操作 我找到了一个非常有用的指南和代码 我的程序基于 https openhomeautomation net control a lamp remotely using
  • Visual Studio:同时调试多个项目?

    是否可以在 Visual Studio 中同时调试多个项目 我知道您可以从解决方案属性中选择多个启动项目 但是断点是如何处理的 如果两个项目使用同一个类 它的两个不同实例 并且我因其中的断点而停止 那么它只会阻止一个程序还是同时阻止两个程序
  • 是否可以将 CMFCToolBar 添加到对话框中?

    我刚刚尝试了将 CToolbar 添加到新 CMFCToolBar 上的对话框的标准方法 但这不起作用 在我深入研究新的实现之前 我想知道它是否真的可行 我不确定你所说的 标准方式 是什么意思 但你当然可以以编程方式做到这一点 In MyD
  • BlockingCollection.Dispose 实际上做了什么?

    BlockingCollection Dispose 实际上做了什么 这允许正确处理内部等待句柄 BlockingCollection
  • SolrNet:尝试添加和提交时 SolrConnectionException (400) 错误请求

    我已经到了 SolrNet 执行 Add 方法的地步 但是当我尝试 Commit 时 我收到了错误 以下是我的 schema xml 模型 调用它的代码以及我得到的错误 更奇怪的是 尽管出现错误 但在我重新启动 Tomcat 后 该模型仍会
  • 使用 C 通过引用传递数组

    是的 我已经阅读了这个问题和答案 在 C 中通过引用传递数组 https stackoverflow com questions 1106957 pass array by reference in c 我有一个类似的问题 并从该问题中实现
  • 如何在C#中使用默认浏览器打开带有锚点(#)的html文件

    我正在尝试在 C 中打开上下文帮助文件 当我没有指定锚点时 它工作得很好 Process Start C Help Help htm 但是当我指定锚点时 它不会打开 Process Start C Help Help htm Toc3420
  • 将图像添加到 ASP.Net 中的单选按钮列表

    我正在尝试将图像添加到单选按钮列表控件 但它不起作用 我试过这个 RadioButtonList2 Items Add new ListItem String Format src Colors Dallas 625527 1 1 png
  • 找到两个值的平均值的正确方法是什么?

    我最近了解到整数溢出是 C 中的未定义行为 附带问题 C 中也是 UB 吗 在 C 编程中 您通常需要求两个值的平均值a and b 然而做 a b 2可能会导致溢出和未定义的行为 所以我的问题是 找到两个值的平均值的正确方法是什么a an
  • 将 LPTSTR 转换为要写入文件的字符串或 char *

    我想将 LPTSTR 转换为字符串或 char 以便能够使用 ofstream 将其写入文件 有任何想法吗 Use T2A http msdn microsoft com en us library 87zae4a3 VS 80 aspx宏
  • 寻找自定义 SynchronizationContext 的示例(单元测试所需)

    我需要定制同步上下文 http msdn microsoft com en us library system threading synchronizationcontext aspx that 拥有一个运行 Posts 和 Sends
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 黑屏只是闪烁一会儿

    在我的 Windows Phone 8 应用程序中 我有一个搜索页面 其中有一个文本框供用户输入搜索关键字 输入默认SIP键盘的 Enter 键时将调用搜索 搜索结果显示在另一个页面中 为了在导航到结果页面之前隐藏键盘 我使用 this F
  • 如何收集和存储tellp()、tellg()返回类型?

    我正在编写一个在文件中维护 linked list 的程序 因此 我通过使用tellp tellg 遍历文件并将其添加到特定的长整数 可以视为偏移量 以到达新位置 一个简单的例子是 long next offset sizeof long
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 复杂对象上的 GroupBy(例如 List

    Using GroupBy and Count gt 1我试图在列表中查找我的类的重复实例 该类看起来像这样 public class SampleObject public string Id public IEnumerable
  • C++ 中带逗号的表达式的执行顺序 [重复]

    这个问题在这里已经有答案了 我的理解是这个词j i将在之前执行 i在声明中 j i i C 标准是否保证j i将在之前执行 i在循环 for auto i std next begin j begin i end j i i 逗号运算符引入

随机推荐

  • 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