我评价创建db4o于持久性有ASP。净视的项目。

我想知道我应该如何使用IObjectContainer在网上下文与关于目的寿命。因为我看到它,我可以做到下列之一:

  1. 创建IObjectContainer在应用程序的启动和保持同一个实例,用于整个应用程序寿命。
  2. 创建一个IObjectContainer每请求。
  3. 启动一个服务器,并获得客户IObjectContainer每个数据库的互动。

有什么影响这些选择,在性能和并发?

由于数据库是被锁定在一个IObjectContainer被打开,我相当肯定,选择2)将获得我的一些问题,并发会这个也能的情况下对备选案文1?

我的理解是,如果我检索的一个目从IObjectContainer,它必须保存的同一IObjectContainer实例,以便用于创建db4o识别为相同的对象。因此,如果我选择备选方案3),我会检索的原始目的,进行必要的修改(复制的数据修改的目的),然后储存在使用相同的IObjectContainer.这是真的吗?

有帮助吗?

解决方案

选择1)可以让你成为严重的麻烦,因为你将有效地共享事务之间的所有请求。我不认为这是一个可行的选择。

因为你已经确定,方案3)是充满着自己的危险,因为你将要跟踪的对象标识手一个繁琐和极其容易出错的任务。这真的破坏了所有的美丽的目数据库。此外,从我所知道的开销的创造 IObjectContainer 是不小的,所以这将是太昂贵。

这个漂亮的多给我们留下了选择2,即不锁的数据库打开时在客户机-服务器的方式尽我知道-你在哪里找到那个信息?所以,最好的办法是打开一个 IObjectServer 在应用程序的启动和开一个新的 IObjectContainer 每请求,或是连接以远程服务器使用TCP每请求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top