向客户端发送 Hibernate 代理类会出现哪些问题

2024-04-10

我有一个 POCO 类,在 WCF 服务层中与 NHibernate 一起使用。我正在考虑尝试将 NHibernate 代理类发送到客户端。这是我控制的客户端。我们通过系统范围的保留来处理记录更新,因此在任何给定时间只能向客户端发送该实体的一份可写副本。我的基本目标是利用 NHibernate 更改跟踪,这样我就不需要从数据库获取副本并重播客户端为更新数据库所做的更改。

假设我可以让它发挥作用,这种方法有什么缺点?


我不会就具体技术来回答这个问题,但我希望你发现这个观点对做出一些决定有用。

恕我直言(以及那些关注的人领域驱动设计 http://en.wikipedia.org/wiki/Domain-driven_design)您应该将实体类型保留在内部,从而与服务类型(也称为值类型)分开。无论如何,实体对于服务接口来说常常过于细粒度。例如,您可能希望从服务层的操作返回结果,该结果实际上是实体模型中不同数据片段的组合。不仅如此,实体的所有字段不一定都可以由客户端直接可变。此外,如果您开始直接公开实体类型,您将面临将自己与底层数据库结构结合在一起的危险,随着时间的推移,这些结构可能需要出于可扩展性原因进行重构。通过将服务的值类型与填充它们的底层实体分离,您可以为自己提供重要的灵活性。

缺点是您正在编写大量值类型,这些值类型基本上是服务域内的“空壳”,通常看起来很像数据访问层内的实体类型。另外,您需要映射函数来在两种类型之间来回转换值。对我来说,对于未来提供的灵活性来说,这是一个很小的代价。

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

向客户端发送 Hibernate 代理类会出现哪些问题 的相关文章

随机推荐

  • 在 Java 中创建 JSON Web 令牌

    我正在尝试创建一个 JSON Web 令牌 以便使用它通过 Google Analytics API 访问进行刷新令牌调用 我采取了服务帐户方法 根据这种方法 我需要 创建服务帐户 添加使用 Google Analytics 帐户为 Ana
  • 下载带有 play 框架的 typesafe2.0,在网络请求上出现异常 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 下载了带有
  • 如何将字节数组转回文件并使用 C# 自动打开它?

    我正在编写一些代码来将文件附件添加到我正在构建的应用程序中 我已经添加和删除工作 但我不知道从哪里开始实施开放 我有一个字节数组 来自表字段 我不知道如何使其自动打开 例如 如果我有一个 PDF 字节数组 如何让我的应用程序自动打开 Acr
  • 如何使用模块向 Fortran 公开 Python 回调

    这个 scipy 文档页面 http docs scipy org doc numpy dev f2py python usage html call back arguments关于 F2Py 指出 回调函数 也可以在模块中显式设置 然后
  • 如何访问角度材料弹出/对话框组件内组件的属性?

    我正在从我的组件中打开一个对话框 const dialogRef this dialog open DialogOverviewExampleDialog width 500px data DialogData dialogRef afte
  • mailx 更改发件人姓名

    我明白要更改发件人姓名mailx我应该做以下事情 mailx r email protected cdn cgi l email protection s some subject email protected cdn cgi l ema
  • Boost ASIO:服务器如何知道客户端是否仍然连接?

    我在用boost asio对于服务器 客户端应用程序 服务器一次只接受一个连接 我想知道服务器验证客户端是否仍然连接的最佳方法是什么 这样做的目的是我希望能够知道客户端是否崩溃 以便我可以重新开始侦听新的连接尝试 在我的应用程序中 我使用以
  • 确实开始了。 。 。 end while 表示“块”?

    temp 98 3 begin print Your temperature is temp to s Fahrenheit puts I think you re okay temp 0 1 end while temp lt 98 6
  • 使用不同的密钥库重新签名 apk

    目前 我正在使用私有密钥库文件对 apk 进行签名 但我想使用不同的密钥库文件对该 apk 进行签名 我怎样才能退出那个apk 您可以使用不同的密钥库来退出您的 apk 按着这些次序 签署发布 1 apk gt 1 release apk
  • 为什么 FreePhysicalMemory 给出的值不正确?

    我正在尝试使用 win32 OperatingSystem 类中的 FreePhysicalMemory 属性 问题是 它通常只返回几个 MB 的值 显然 考虑到我的计算机上仅打开 Powershell 我有更多可用 RAM 我正在使用以下
  • XmlSerializer 将 xsi:type 替换为节点名称

    当前 XmlSerializer 生成以下结构
  • user_data中的命令不会在terraform中执行

    您好 EC2 实例已创建 但作为 userdata sh 一部分的命令未执行 当我通过putty手动连接EC2时 我发现EC2实例中没有安装nginx 为了验证脚本是否正在执行 我添加了回显消息 但当我运行 terraform apply
  • 我们如何确定Python中给定月份的天数[重复]

    这个问题在这里已经有答案了 我需要在 python 中计算给定月份的天数 如果用户输入 2011 年 2 月 程序应该能够告诉我 2011 年 2 月有 28 天 谁能告诉我应该使用哪个库来确定给定月份的长度 你应该使用calendar m
  • 如何使用 Material Design 设计警报对话框片段中的按钮样式?

    我想更改警报对话框上的默认按钮样式 标准警报对话框片段 在 Android L 中 如下所示 我希望将右侧按钮的样式设置为普通按钮而不是无边框按钮 Google 本身似乎在各种对话框中使用了这种模式 例如 有谁知道这是否可能 而无需从头开始
  • 如何在 Three.js 中使用反射?

    我想在带有 Three js 的 WebGL 页面中拥有一个反射立方体表面 它应该类似于手机显示屏 反射一些光 但它仍然必须是黑色的 我创建了一个反射立方体 以及反射球体 的示例 并附有详细的注释 现场版本位于 http stemkoski
  • 当用户单击外侧时,警报对话框消失

    大家好 我有一个带有两个文本框的警报框 这里的问题是当用户在弹出窗口之外单击时警报对话框消失 或者当用户单击 确定 按钮时警报对话框消失 所以请在这方面帮助我 提前致谢 final AlertDialog Builder builder n
  • 如何计算FB页面的点赞数?

    我必须做一个非常简单的操作 但我的编程能力还不够 我必须计算 Facebook 页面上的点赞数并将该数字打印在我的网站上 我有两个脚本可以很好地完成普通网站的工作 但它们不想显示页面的点赞数
  • java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompat

    我在 4 4 2 版本的 Samsung note 2 中收到以下错误 我也尝试过 HTC One X 4 2 2 我认为它是棒棒糖之前的 因为它在 Lollipop 上运行良好 有什么猜测吗 这是我的 gradle 文件 apply pl
  • 如何使用 Python 获取存储库分支的列表

    我正在尝试使用 Python 和以下代码获取存储库上所有可用分支的列表 import subprocess branches All command git branch r branch list subprocess check out
  • 向客户端发送 Hibernate 代理类会出现哪些问题

    我有一个 POCO 类 在 WCF 服务层中与 NHibernate 一起使用 我正在考虑尝试将 NHibernate 代理类发送到客户端 这是我控制的客户端 我们通过系统范围的保留来处理记录更新 因此在任何给定时间只能向客户端发送该实体的