【发布时间】:2011-04-08 19:17:59
【问题描述】:
如果我要使用 db4o 在 ASP.NET 中开发 Web 应用程序,我会使用哪种数据库:本地或远程类型,为什么?
【问题讨论】:
-
看不到您使用的 CLR 语言和 IDE 版本将如何影响此问题的答案。
-
@adamjford 你说得对 :) 我同意 +1
如果我要使用 db4o 在 ASP.NET 中开发 Web 应用程序,我会使用哪种数据库:本地或远程类型,为什么?
【问题讨论】:
我认为您的意思是“嵌入式”与“客户端服务器”(这是 db4o 可以运行的两种基本模式。
您很可能需要“客户端服务器”,以便您可以启动多个客户端会话(可能每个请求一个?)。
决定将数据库放置在何处取决于您的方案。理想情况下,您将构建您的解决方案,以便您可以通过配置来完成它。在单服务器部署的情况下,您可以在进程中为 db40 提供服务的方式。
但是,如果您需要更多的马力,您可以使用另一台机器上的 db40 来分配工作。请注意,在这种情况下,您将有更多的网络开销/延迟。
【讨论】:
db4o 的 C/S 模式意味着网络通信并且速度较慢。如果您需要多个客户端会话,则不一定需要使用 C/S,因为有一个嵌入式服务器模式允许并行处理多个事务,而不会产生网络通信的开销:
因此,如果您的用例允许,您可以在 Web 服务器端打开一个嵌入式服务器,并允许您的服务器端 asp.net 应用程序使用多个事务(例如,每个 Web 会话一个)与 db4o 对话以持久化对象。请注意,在这种情况下,您无法从客户端持久化对象(Web 客户端与负责持久性的应用程序的服务器端通信)。
重要提示:在 Web 场景中,当会话结束时关闭 db4o 对象容器并不少见。如果您这样做,则 db4o 不再跟踪该对象,它将在下一个会话中被视为新对象。您必须找到一种方法在服务器端将对象重新附加到其 db4o 身份以进行不同的会话(您可以通过在服务器端再次查询对象来做到这一点)。
最好的!
德语
【讨论】: