DB, сеансы и настойчивость с Intraweb 12 в Delphi XE2
-
27-10-2019 - |
Вопрос
Я ищу информацию о подключении к базе данных (Firebird в моем случае) с приложениями Intraweb.
Мне особенно нужно знать разницу, связанные с использованием базы данных на TDAtamodule с функцией LockDatamodule, или с использованием базы данных на пользовательском управлении. Например, мне нужно полностью отключить базу данных, если ни один пользователей не используют сервер, и не более 30 пользователей будут подключены.
В худшем случае мне придется подключиться к какой -то старой базе данных парадокс, и мне нужна структура, которая могла бы справиться с ней (я знаю, что мне придется генерировать папку на основе WebApplication.appid для обработки сеансов). В худшем случае...
Заранее спасибо за любую информацию или полезные ссылки, которые вы можете дать мне ^^
Решение
Сценарий 1 - вы оставляете «подключения данных пула» неконтролировано в мастере Intraweb Application
В этом сценарии волшебник создает ServerController
, а UserSession
но не DataModule
. Анкет Вы размещаете компоненты базы данных, сеанса и набора данных в UserSession
.
Всякий раз, когда новый пользователь подключается к вашему веб -сайту. UserSession
создан и подключено к базе данных. Когда ServerController.SessionTimeOut
истекает из -за бездействия пользователя UserSession
уничтожен, и эта конкретная связь с базой данных разорвано.
Для 30 одновременных пользователей эта модель, вероятно, будет в порядке для вас, и должна гарантировать, что все подключения к базе данных будут разорваны, когда веб -сайт не будет использоваться.
Сценарий 2 - Вы Проверьте «Подключения данных пула» в мастере приложений IntraweB
Так же хорошо как ServerController
и UserSession
мастер создаст пустой DataModule
. Анкет Вы размещаете компоненты базы данных, сеанса и набора данных в DataModule
.
А ServerModule
имеет TIWDataModulePool
компонент на нем, который имеет PoolCount
имущество.
Когда ваше приложение запускается, оно создает PoolCount
экземпляры DataModule
Каждый из которых подключается к базе данных. Поскольку ваши страницы требует доступа к базе данных, они вызывают LockDataModule
а также UnlockDataModule
временно использовать один из DataModule
экземпляры из бассейна.
Когда ваше приложение закрывает DataModule
Экземпляры в пуле уничтожены, а их подключения к базе данных закрыты.
Эта модель подходит, когда открытая база данных на одного пользователя будет превышать возможности вашего сервера базы данных. Всего лишь 30 пользователей, подключающихся к базе данных Firebird, я не верю, что это потребуется.
Другие советы
Вы можете рассмотреть вопрос о использовании компонента, такого как KBMMW http://www.components4programmers.com/ Я много лет использовал это с настольными приложениями Ans Ans сейчас с приложениями IW. Я развертываю свои приложения в качестве услуг и в настоящее время имею несколько проблем, развертывающих в качестве ISAPI. KBMMW хорошо подходит для приложения с большим количеством соединений, поскольку оно предлагает объединение соединений и т. Д. У него много функций и преимуществ. Проверьте сайт для себя.
Я использую корпоративную версию, хотя я думаю, что бесплатная версия может быть полезна для вас.
Ваше здоровье!
-Lou