在 ntier 应用程序中传递数据

2023-12-30

如何将数据传递到 n 层应用程序中的层?我已经制定了 3 种不同的方法。

A)通用 .net 对象通用数据表、哈希表、通用数据集、字符串、整数等... 然后使用数据集填充发送到 UI 层的业务对象。

替代文本 http://img11.imageshack.us/img11/460/generic.png http://img11.imageshack.us/img11/460/generic.png

Pro-无需额外层数Con-必须使用业务层中的通用数据集和表

B)使用其他层将引用的实体层。该层将包含强类型数据集或普通旧 C 对象。这些对象主要是容器数据和很少的逻辑。这些将与发送到 UI 层的对象相同。

替代文本 http://img8.imageshack.us/img8/6454/entities.png http://img8.imageshack.us/img8/6454/entities.png

Pro-在所有层中使用相同的类Con-将对Entity.dll的引用添加到所有层

C)使用数据访问层中定义的数据传输对象(仅限容器对象)。然后使用这些对象来填充发送到 UI 层的业务对象。

替代文本http://img43.imageshack.us/img43/1236/transferp.png http://img43.imageshack.us/img43/1236/transferp.png

Pro-业务层不必使用泛型类Con-使用两种类型的对象,您必须将业务对象与传输对象结合起来

我们在工作中进行了讨论,想了解社区的想法。我还添加了一个指向仪表板的链接。请复制并创建而不是编辑。
Thanks


如果您使用的是layered方法,意味着所有层(本质上)在同一进程空间中执行,因此没有编组/序列化,我会使用方法 B。为程序的所有方面所依赖的实体创建一个单独的模块,并结合对此。

但是,如果您使用的是tiered正如您的标题所示,这意味着存在跨越的进程和/或网络边界,我建议您采用方法 C。您并没有真正传递实例,而是传递副本,因此您获得的任何好处无论如何,与同一对象的耦合(例如 MVC 方法的可观察选项)都会丢失。在每个层定义数据 API 比尝试到处使用相同的类更好。

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

在 ntier 应用程序中传递数据 的相关文章

  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • n 层架构 - BLL、DAL 和接口。什么是最佳实践?

    我有一个关于 n 层架构的问题 在问这个问题之前 我想了很久 因为这里已经有很多类似的问题了 但是 在看了一天半并阅读了其他答案之后 我仍然不确定 各种看似相似的术语和不同的方法让我感到困惑 如果我在不同的类库中有一个 BLL 和一个 DA
  • 宏定义确定大端还是小端机?

    是否有一行宏定义来确定机器的字节顺序 我正在使用以下代码 但将其转换为宏会太长 unsigned char test endian void int test var 1 unsigned char test endian unsigned
  • 实体框架:获取存储库中的子类对象

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo
  • 使用 Google Cloud Functions 实现微服务的 API 网关

    Inputs 例如 我们有一些服务 账户服务 产品服务 支付服务 每项服务都是一个单独的 Google Cloud Function 每个服务都有自己的 HTTP API 例如 账户服务有 https REGION FUNCTIONS PR
  • 在哪里检查用户电子邮件尚不存在?

    我有一个帐户对象 可以像这样创建用户 public class Account public ICollection
  • 使用 i386 arch 而不是 x86_64 在 OSX 上构建 libFLAC

    我正在尝试构建 libFLAC 以在我的项目中使用 但是当涉及到链接时 GCC 会忽略该库 因为它说它不是为当前体系结构 i386 构建的 当我以 64 位编译程序时 它正确链接了库 这意味着该库是针对 x86 64 架构编译的 不幸的是
  • 您会在新的商业项目中使用 S#arp 架构吗?

    The S arp 架构 http code google com p sharp architecture 看起来真的很酷 但是您是否认为它仍然太新而无法在重要的新项目中做出承诺 我们假设该项目乍一看很适合它 It all seems非常
  • 使用组合来表示“is – a”关系时出现的问题

    我正在为人力资源系统开发系统 有会计员工和程序员员工 加入公司的第一个月 员工没有被赋予任何角色 一名员工可以同时担任会计师和程序员 我有一个由以下代码所示的设计 现在 我需要通过实现新功能来增强系统 解雇所有会计师 终止意味着将员工的状态
  • DDD 聚合和值对象

    我想问一下关于DDD功能的问题 假设我们有两个聚合 每个聚合都包含值对象地址 根据 Eric Evans DDD 我们应该将聚合彼此隔离 因此第一个聚合的聚合根不能有指向 Address 的链接 坦白说 这对我来说似乎没有意义 所以问题是如
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • 具有持久性无知对象的持久性和领域事件

    我一直在研究领域驱动设计领域事件 http www udidahan com 2009 06 14 domain events salvation 我真的很喜欢这些事件提供的关注点分离 我遇到了保留域对象和引发域事件的顺序问题 我想在域对象
  • 就MVC模式而言,Struts 2中使用的Action是什么?

    在Struts2中 控制器将请求分派给Action Action将其传递给后端逻辑 这可以看作是一个非常大的过程 model 处理请求 JSP代表视图 Struts2中如何定义Action 肯定是not一个看法 是控制器还是模型 Strut
  • DDD:持久聚合

    让我们考虑一下典型的Order and 订单项目例子 假如说订单项目是的一部分Order聚合 只能通过订单添加 所以 要添加一个新的订单项目 to an Order 我们必须通过存储库加载整个聚合 将新项目添加到Order对象并再次保留整个
  • “if”在 ASP.NET MVC View (.aspx) 文件中被认为有害?

    我记得看到一个博客 或其他内容 说你不应该在 ASP NET MVC 的 aspx 文件中使用 但我不记得它说的替代方案是什么 有人记得看过这个并指出我吗 基本上 这意味着您的视图中不应该有大量的 if 语句 您的控制器和视图模型应该能够处
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 在下面的模型中,地址不应该是值对象吗?

    From 值对象如何存储在数据库中 https stackoverflow com questions 679005 how are value objects stored in the database 假设公司和个人都有相同的邮件地址
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 如何使用 Spring Crud/Jpa Repository 实现 DDD

    我想通过使用 Spring 实现 DDD 来创建一个应用程序 假设我有一个业务实体 Customer 和一个接口 CustomerRepository 由于春天提供了CrudRepository and JpaRepository默认情况下
  • N层架构设计关注点分离

    我意识到已经有很多关于 n 层设计的帖子 这可能是我思考过度和兜圈子 但我自己现在很困惑 希望从社区得到一些澄清 我试图将我创建的项目 并且一开始就没有很好地设计架构 分成不同的层 每个层都在自己的项目中 UI 业务对象 逻辑 商业 DAL

随机推荐

  • GitHub Desktop 中有强制推送选项吗?

    使用版本 1 0 4 我找不到任何强制推送选项 命令行是使用武力的唯一方法吗 推不动 https i stack imgur com ZjW5E jpg and 拉不动 https i stack imgur com Rbfoc jpg 2
  • 用于保护 S3 文档的 Rails 实施

    我想通过 Rails 应用程序保护我的 s3 文档 这样如果我转到 www myapp com attachment 5 应在显示 下载文档之前对用户进行身份验证 我在 stackoverflow 上读过类似的问题 但我不确定我是否看到了任
  • Swing 中精美的工具提示

    我有一个 JTable 我想为列中的特定单元格显示一个精美的工具提示 基本上是一个 JTextArea 我正在使用自定义单元格渲染器 因此如果我能够弄清楚当我将鼠标悬停在单元格渲染器的组件上时如何弹出一个窗口 那就很容易了 有没有关于如何执
  • 我想在我的家庭自动化应用程序中加入连续(免提)语音命令识别

    我创建了一个简单的 Android 应用程序来控制连接到我的 Raspberry Pi 的继电器 我使用按钮以及基本的语音识别来触发这些按钮并打开 关闭相应的中继通道 到目前为止 语音识别部分是由 RecognizerIntent 处理的
  • java int 大小是固定的还是可变的?

    java中的整数大小是固定长度还是可变大小 例如 1 或 10000 在分配期间这两个数字占用相同的空间吗 根据 JLS Java 整数为 32 位 4 个八位字节 The 整数类型 are byte short int and long
  • 使用专用链接将 Azure Web App VNet 集成到存储帐户

    我在 Azure 应用服务 S1 上有一个 API 在该 API 上配置了 VNet 集成 子网 10 240 0 32 27 我还有一个存储帐户 在其上配置了专用链接 子网10 240 0 0 27并获得IP10 240 0 4 但是它不
  • 在没有 @RequestParam 名称的控制器中获取文件

    我正在尝试构建一个通用的 POST 控制器 我可以以通用方式访问参数 但如果不使用 RequestParam files MultipartFile 文件 我就无法获取可能的文件 所以 有人知道如何以通用方式获取文件 如果有提交的话 吗 到
  • 如何使 Visual Studio 2012 调用本机 64 位 Visual C++ 编译器而不是 32 位 x64 交叉编译器?

    Visual Studio 2012 似乎总是调用 32 位版本cl exe位于 ProgramFiles x86 Microsoft Visual Studio 11 0 VC bin x86 amd64 而不是位于的 64 位 Prog
  • xs:int 对于十进制值解组为 null

    我遇到了与基于 JAX WS 的 WebService 中的解组过程相关的问题 在 WSDL 文件中 有一个元素定义为
  • 将 JS 警报更改为 DOM 错误消息 div

    我需要将错误消息转换为定位的 div 最初隐藏 而不是标准的 js 警报 我意识到我需要将警报消息推送到 DOM 但我对 javascript 很陌生 任何帮助 将不胜感激 此外 我需要在没有确认的情况下执行此操作 因此错误消息会在字段焦点
  • 从 Spark 转换函数中动态读取 HDFS 文件

    如何在 Spark 函数中读取 HDFS 中的文件而不在函数中使用 SparkContext Example val filedata rdd rdd map x gt ReadFromHDFS x getFilePath 问题是如何实现
  • Python正则表达式解析特定标签后的组

    我有一个这样的文本列表 Something at the beginning References 1 Ryff C D 2014 Psychological Well Being Revisited Advances in the Sci
  • 如何定义取决于模板参数的字符类型的字符串文字?

    template
  • 如何按 dict 列过滤 pandas 数据框?

    给定一个数据帧 df serialnumber basicinfo 列 basicinfo 是一个字典 name xxx model xxx studyid xxx 有没有一种简单的方法可以通过字典键 模型 过滤此数据框 如果它是整数 我们
  • 正确实施乒乓球比赛

    我在一项作业中被要求实现正确调用 ping 和 pong 意思是在 ping 之前没有 pong 10 次的乒乓球游戏 意思是 控制台中的最终输出应该是 ping 1 pong 1 ping 2 pong 2 等 需求是用信号量 可重入锁和
  • 如何使用 selenium python 更改/删除样式属性?

    我想知道是否可以更改或删除 显示 无 在元素中使其在 python 中使用 selenium 可见
  • jquery的attr()是异步的吗?

    假设我有一个循环 它在每次迭代时都会附加一个带有 img 标签的 div 然后使用如下所示加载其 src 属性 img last attr src imageSource 如果我对几个不同的图像进行几次迭代 我是否会异步加载这些图像 如果没
  • Android 文本转语音男声

    我有一个工作文本到语音 但我想知道当应用程序调用它播放时 它会用男声代替女声吗 现在可以使用男声 女声并从应用程序 UI 动态更改 像这样定义 TTS 在构造函数中添加 google tts 引擎 tts new TextToSpeech
  • Android Canvas重做和撤消操作

    我正在做一个绘图项目 除了画布重做和撤消操作之外 我的代码运行良好 我的撤消操作从pathsArrayList 并保存到undonePathsArrayList 重做操作删除最后一个元素undonePaths并保存到paths 这是我的代码
  • 在 ntier 应用程序中传递数据

    如何将数据传递到 n 层应用程序中的层 我已经制定了 3 种不同的方法 A 通用 net 对象通用数据表 哈希表 通用数据集 字符串 整数等 然后使用数据集填充发送到 UI 层的业务对象 替代文本 http img11 imageshack