DB, сеансы и постоянство с IntraWeb 12 в Delphi XE2 - PullRequest
4 голосов
/ 12 января 2012

Я ищу информацию о подключении к базе данных (в моем случае Firebird) с приложениями IntraWeb.

Мне особенно нужно знать разницу (и), связанные с использованием базы данных в TDataModule с функцией LockDataModule,или используя базу данных в UserSessionUnit.Например, мне нужно полностью отключить базу данных, если сервер не использует ни один пользователь, и будет подключено не более 30 пользователей.

В худшем случае мне может понадобиться подключиться к какой-то старой базе данных Paradox, и мне нужна структураэто может справиться с этим (я знаю, что мне нужно будет создать папку на основе WebApplication.AppID для обработки сессий).В худшем случае ...

Заранее благодарим за любую информацию или полезные ссылки, которые вы можете предоставить мне ^^

Ответы [ 2 ]

6 голосов
/ 13 января 2012

Сценарий 1 - вы оставляете «Соединения данных пула» не отмеченными в мастере приложений Intraweb

В этом сценарии мастер создает 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, это потребуется.

0 голосов
/ 26 июня 2012

Вы можете рассмотреть возможность использования набора компонентов, такого как kbmMW, по http://www.components4programmers.com/ Я использовал это в течение многих лет с настольными приложениями и теперь с приложениями IW. Я разворачиваю свои приложения как Службы и в настоящее время имею несколько проблем, связанных с развертыванием в качестве ISAPI. kbmMW хорошо подходит для приложений с большим количеством подключений, поскольку он предлагает пул подключений и т. д. Он имеет множество функций и преимуществ. Проверьте сайт для себя.

Я использую версию Enterprise, хотя думаю, что бесплатная версия может быть полезна для вас.

Ура!

-Lou

...