gpt4 book ai didi

architecture - 在 ntier 应用程序中传递数据

转载 作者:行者123 更新时间:2023-12-04 08:19:28 25 4
gpt4 key购买 nike

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

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

alt text http://img11.imageshack.us/img11/460/generic.png

http://dabbleboard.com/draw?b=eiu165&i=26&c=54eef6f1ac01f03c85919518f4a24e798e57e133

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

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

alt text http://img8.imageshack.us/img8/6454/entities.png

http://dabbleboard.com/draw?b=eiu165&i=6&c=d0c2b346894a96b12bd3867f630e474a2af098fa

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

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

alt text http://img43.imageshack.us/img43/1236/transferp.png

http://dabbleboard.com/draw?b=eiu165&i=27&c=f886efa3f9d5eb4b45ddb02361c79cdcdaec0a9b

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

我们在工作中进行了讨论,想看看社区的想法。我还添加了一个指向 dabbleboard 的链接。请复制和创建而不是编辑。
谢谢

最佳答案

如果您使用的是分层方法,这意味着所有层(基本上)都在同一进程空间中执行,因此没有编码/序列化,我会选择方法 B。为您的实体创建一个单独的模块,所有方面都基于该模块您的程序取决于,并且耦合到那。

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

关于architecture - 在 ntier 应用程序中传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com