在三层项目中放置 DTO / POCO

2023-12-13

我一直在重写网站的后端,并将其转向三层架构。

我的意图是这样构建它:

Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)

我的问题是 DTO 在这个结构中的放置。我需要使用 DTO 在业务层和 WCF 服务之间以及从 WCF 服务到使用网站之间移动数据。

在我的研究过程中,我读到了一些精彩的讨论,尽管我有点摸不着头脑:

  • Davide Piras 提出了一些重要观点这个帖子如果我遵循这个设计,那么我会在一个单独的项目中声明 POCO 的接口。然后,这些将由第 (1) 层和第 (2) 层实施。虽然我喜欢使用接口,但通过在 (1) 和 (2) 中声明 POCO,然后使用 AutoMapper 之类的工具来回复制它们的数据,我似乎会为自己做更多的工作。

  • 这个帖子使用一个创建业务对象项目的系统,该项目将被所有层引用。这似乎比其他解决方案更简单,并且似乎引导我找到一个解决方案

Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)

^               ^                       ^
|               |                       |
[ -- Business Objects Referenced here --]

我想说,这通常取决于您正在构建的项目的复杂性。对于我构建的较小项目,我跨层共享我的“实体”(它们只是简单的 DTO、带有 getter 和 setter 的可序列化数据桶),并且不太关心这一点。最大的缺点是逻辑分散在整个项目中(不仅在“业务层”)并且到处都是程序风格。这确实看起来像贫血领域模型,但随着项目没有增长太多,复杂性并没有增加。实体框架有一些模板,您可以从中构建实体(如果我没有记错的话,它们被称为自我跟踪实体?)。

对于中型/大型项目,我不会使用这种方法,而是将实体和 DTO 分开,因为它们将充当不同的角色。 DTO 的形状可能与您的实体完全不同,并且尝试在层/层之间共享它们通常会很糟糕。

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

在三层项目中放置 DTO / POCO 的相关文章

  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 如何在不同的 Spring 上下文之间共享 Spring bean?

    我们有一个使用 Spring BlazeDS 集成的应用程序 到目前为止 我们刚刚使用了 Spring 和 Flex 并且运行良好 我们现在还需要添加一些 Spring MVC 控制器 Spring BlazeDS 文档指出 执行此操作的方
  • 使用 C# 包装器从任务栏中删除应用程序?

    有没有办法为现有应用程序构建 C 包装器 以便我将其从任务栏中删除 更多信息 我有一个计时器应用程序 我想使用它 但没有使用 因为它很好 很糟糕 看https superuser com questions 92774 quickbooks
  • CSS 中的尾随行装饰标题

    我正在尝试创建带有一些精美装饰的标题标签 最终 我想达到这个目的 不过 我在文本后添加尾随线装饰时遇到问题 我最初的想法是有一个容器 然后在该容器中包含 h1 和包含该行的 span 标签 但我似乎不太能让该行与位于其上方的文本居中 我试过
  • 带底边框的文本框

    我希望有TextBox有底部边框 但绘制的图形为TextBox调整大小时会扭曲 损坏 因为Color Transparent 使用我找到的代码 我能够创建一个带下划线的文本框 具有透明顶部 左侧 右侧的绘制矩形 问题是当我调整表单 窗口的大
  • 从 html 文件解析图像 url

    我想搜索 html 文件 然后获取该页面上图像的 url 然后这个 url 应该被保存为一个字符串 仅此而已 问题是我真的不知道如何开始 我的应用程序当然知道图像所在页面的 url 我们以这个 url 为例 在此页面上 我需要大图像的 ur
  • 如何使用bash输入ssh密码? [复制]

    这个问题在这里已经有答案了 我每天都通过 ssh 连接到服务器 我经历了这个例程 IC001 Desktop user ssh email protected email protected s password Last login Tu
  • onConfigurationChanged 在 android 中任何时候都不会被调用

    我已经创建了示例程序来测试方向 如果纵向模式并且我以相反的方式倾斜手机 我希望我的示例应用程序反向纵向 在阅读了很多关于此的问题之后 认为我们需要使用 onConfigurationChanged Configuration newConf
  • 将 ModelEntity 悬停在 ARCamera 前面

    我试图让一个实体悬停在镜头前的同一位置 无论我如何移动设备 但我没有成功 我想我想围绕 y 用于横向移动 偏航 和 x 用于垂直平移 俯仰 旋转 我从 ARCamera 获取相机旋转 let distance Float 2 distanc
  • PHP 致命错误内存不足

    我在名为 RebuildSummary 的函数中调用以下两个函数 创建摘要 从文件插入数据 1 create summary函数 create summary 函数从数据库中获取活动数据 并使用 for 每个循环遍历活动 并将数据插入到以下
  • 使用 django 的默认视图在 django 中重置密码时出现 NoReverseMatch 异常

    当我使用 重置我的密码 按钮时 出现以下错误 Reverse for password reset confirm with arguments and keyword arguments uidb64 b MTI token 48i a4
  • 如何在android上从url加载pdf?

    我有一个包含 listView 的页面 每个项目都应该从 url 打开一个 pdf 文件 但我不知道如何从 url 加载 pdf 文件 甚至不知道如何加载 pdf 所以我问是否任何人都可以告诉我有关如何做到这一点的任何提示 谢谢 WebVi
  • ggplot2 - 在同一个图上绘制多个模型

    我有一个线性和非线性模型列表 这些模型源自测量相同两个变量的不同数据集x and y我想使用在同一个图上绘制stat smooth 这是为了能够轻松比较之间关系的形状x and y跨数据集 我正在尝试找出最有效的方法来做到这一点 现在我正在
  • .htaccess 将特定域重定向到特定页面

    我希望来自 urlnumberone com 和 urlnumbertwo com 的任何流量重定向到我网站上的几个特定页面 RewriteEngine on RewriteCond HTTP REFERER http www urlnum
  • 在较新版本的 CsvHelper 中,IWriterConfiguration.UseExcelLeadingZerosFormatForNumerics 的等效项是什么?

    我们目前正在将一堆旧的 NuGet 包升级到最新版本 CsvHelper 在我们使用的先前版本 2 x 和最新版本 12 x 之间移动了很多内容 变更日志没有提及很多这些更改 或者至少没有明确指出每个变更日志条目中更改了哪些属性或方法 这让
  • 页脚位置 - 底部和中心[重复]

    这个问题在这里已经有答案了 我正在编写一个网页 页面底部有固定的页脚 页面的内容具有特定的宽度并且居中 页脚也有特定的宽度并且必须居中 Issues 我不能使用postiton fixed 页脚不居中 页面内容是从数据库动态加载的 所以我无
  • Java:从 Java 运行批处理脚本时检测用户提示

    我需要从 Java 执行一个批处理脚本 它执行以下操作 1 一旦启动 它就会执行一项漫长 长达几秒 的任务 2 之后 显示提示 密码 3 然后 用户输入密码并按 Enter 键 4 然后 脚本完成其工作 我知道如何从 Java 启动脚本 我
  • WooCommerce - 将产品类别添加到订单详细信息表

    这就是我正在尝试做的事情和地点 在订单的结帐流程中 在插件 WooCommerce 中 结帐过程完成后 您将进入一个页面 它显示订单详细信息的概述 用于输出该页面的模板文件是order details php 这是我想补充的内容 我想像这样
  • 如何在本地开发google actions?

    我的问题对你来说可能听起来很基本或很蹩脚 但我对此确实有零经验 我对 Google Actions 还很陌生 对 Javascript 也不太了解 我的问题是如何在不使用google提供的在线编辑器的情况下开发Google Action 你
  • php 使用 switch 不中断;

    我的开关出了什么问题 现在结果 lt more gt less equality no t equality 应该是这样 lt more equality
  • 在三层项目中放置 DTO / POCO

    我一直在重写网站的后端 并将其转向三层架构 我的意图是这样构建它 Web site lt gt WCF Service 1 lt gt Business Layer 2 lt gt Data Layer 3 我的问题是 DTO 在这个结构中