Если я собираюсь разработать веб-приложение в ASP.NET с использованием db4o, какая это будет база данных: локальная или удаленная и почему?
веб-приложение в DB4O
Ответы (2)
Я думаю, вы имеете в виду «встроенный» и «клиент-сервер» (это два основных режима, в которых может работать db4o.
Скорее всего, вам понадобится «клиент-сервер», чтобы вы могли запускать несколько клиентских сеансов (возможно, по одному на запрос?).
Решение о том, где разместить базу данных, зависит от вашего сценария. В идеале вы должны спроектировать свое решение таким образом, чтобы вы могли сделать это любым способом с помощью конфигурации. Как вы можете обслуживать db40 в процессе в случае развертывания одного сервера.
Однако, если вам нужно больше лошадиных сил, вы можете обслуживать db40 с другой машины для распределения работы. Обратите внимание, что в этом случае у вас будет больше сетевых издержек/задержек.
Режим C/S db4o подразумевает сетевое взаимодействие и работает медленнее. Если вам нужно несколько клиентских сеансов, вам не обязательно использовать C/S, потому что есть режим встроенного сервера, который позволяет выполнять несколько транзакций параллельно без накладных расходов на сетевое взаимодействие:
Поэтому, если ваш вариант использования позволяет это, вы можете открыть встроенный сервер на стороне веб-сервера и разрешить приложению asp.net на стороне сервера общаться с db4o, используя несколько транзакций (например, по одной на веб-сеанс) для сохранения объектов. Обратите внимание, что в этом сценарии вы не можете сохранять объекты со стороны клиента (веб-клиент взаимодействует с серверной частью вашего приложения, которая заботится о сохранении).
Важно: в веб-сценариях нередко приходится закрывать контейнер объектов db4o после завершения сеанса. Если вы сделаете это, объект больше не будет отслеживаться db4o, и в следующем сеансе он будет рассматриваться как новый. Вам придется найти способ повторно прикрепить объекты к их идентификатору db4o на стороне сервера для другого сеанса (вы можете сделать это, повторно запросив объект на стороне сервера).
Лучший!
Немецкий