Db4o Mvc 应用程序架构

2024-04-05

我目前正在测试 Db4o 的 asp.net MVC 2 应用程序想法,但有一些事情我不太确定最佳的继续方式。

我希望我的应用程序使用可猜测的路由而不是 Id 来引用我的实体,但我也认为我需要某种 Id 来更新场景。

例如我想要

/country/usa 而不是 /country/1

不过,我可能想更改键名称(可能不是在一个国家/地区,而是在其他实体上),因此我认为我需要一个 Id 来用作在更新其字段之前检索对象的引用。从其他评论来看,UUID 使用起来有点长,无论如何我更愿意使用我自己的 id 来清楚地分离关注点。

看看 KandaAlpha 项目,我对设计的某些方面不太热衷,更喜欢 S#arp 架构的一些东西,他们在其中使用 [domainsignature] 和 EntityWithTypedId、IEntityDuplicateChecker、IHasAssignedId、BaseObject 和 IValidatable 之类的东西。他们控制插入/更新行为的实体看起来更干净、更可扩展,涵盖验证并很好地封装在核心和基础存储库类中。

那么,将 S#arp 架构移植到 Db4o 是否有意义,或者我是否仍在考虑 oodb 世界中的 RDBMS?

另外,在 Db4o 中是否有管理索引(包括上述唯一索引)的最佳实践? 例如,它们应该基于模型元数据并在引导程序中使用 DI 加载,还是应该更像 Automapper.CreateMap 那样加载?

我知道这是一个有点漫无目的的问题,但任何想法、想法或建议的阅读材料都非常感谢。

谢谢 苹果


这个问题包含很多不同的方面。开始吧。

通常 db4o 使用对象同一性 http://developer.db4o.com/Documentation/Reference/db4o-7.12/net35/reference/html/reference/basic_concepts/object_identity.html来区分不同的物体。所以通常你不使用任何 id。然而,在 Web 应用程序中,您会丢失请求之间的对象标识,因此无法使用 id。

The 可以使用 db4o 的内部对象 ID http://developer.db4o.com/Documentation/Reference/db4o-7.12/net35/reference/html/reference/implementation_strategies/ids_and_uuids/internal_ids.html为了那个原因。然而,当您对数据库进行碎片整理时,此 ID 可能会发生变化。我猜你想拥有永久的 id 来启用链接等。所以这些 id 不是一个选项。指南或db4o-UUID http://developer.db4o.com/Documentation/Reference/db4o-7.12/net35/reference/html/reference/implementation_strategies/ids_and_uuids/unique_universal_ids.html可以用作 id。然而两者都很长。

我认为最好的解决方案是添加一个表示对象 ID 的字段。然后你索引该字段 http://developer.db4o.com/Documentation/Reference/db4o-7.12/net35/reference/html/reference/tuning/indexing.html也许添加唯一的约束 http://developer.db4o.com/Documentation/Reference/db4o-7.12/net35/reference/html/reference/implementation_strategies/unique_constraints.html到它。这使您还可以使用不同类型的 id。例如,这可以启用“/country/usa”,因为您使用 ISO 代码作为 id。对于简单的数字自动 ID,您可以使用聪明的 id 生成器 http://tunatoksoz.com/post/Id-Generation-for-db4o.aspx.

我不知道你提到的两个框架(KandaAlpha,S#arp)。听起来这东西还是有道理的。您实现添加特定行为的接口或属性。例如,一个属性告诉系统哪个字段是对象的 id。该属性确保该字段已建立索引,系统知道如何查询等。

在我的应用程序中,索引是通过属性添加的。您可以使用 db4o-IndexedAttribute。或者您可以添加自己的。一般来说,我认为两种方式,显式配置或对元数据执行相同的操作都是可以的。

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

Db4o Mvc 应用程序架构 的相关文章

  • 适用于 python 2.7.3 的 pygame

    我已经在 Windows 7 上安装了 python 2 7 3 现在我想要 pygame 我什至安装了 pygame 1 92 a0 但它似乎不起作用 有人可以帮忙解决这个问题吗 我也尝试过使用 pygame 1 9 1 但是当我在 gu
  • Google Drive API - 太慢。

    我刚刚在研究 Google Drive API 我有一个问题 它太慢了 我使用文档中的方法 例如 List
  • 使用 LookupAccountName 时访问冲突写入位置 0x00000000

    创建用户帐户后NetUserAdd 我发现我需要使用NetLocalGroupAddMembers将用户添加到 Users 组 所以我调用CreateWellKnownSid获取用户的 SID LookupAccountSid 从该 SID

随机推荐