Форум: "Corba";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Внизтрехзвенная архитектура => Статистика на сервере Найти похожие ветки
← →
xmed © (2005-07-11 11:13) [0]Доброе время суток. У меня вопрос по трехзвенной архитектуре.
Имеется сервер на Oracle 8i, Windows XP SP2 ENG + сервер приложений написанный на Delphi6 с использованием Direct Oracle Access 3.4 для доступа к Oracle и для доступа клиентов Remove data module с DataSetProvider для каждой таблицы( около 16 таблиц). У клиента соответственно стоят компоненты SocketConnection и ClientDataSet.
Вапрос: как вести и отображать на сервере всевозможную статистику: подключений, активности, работы с таблицами( редактирование, обновление данных ).
Заранее спасибо.
← →
sinsin (2005-07-12 18:05) [1]Корень проблемы лежит в решении такой дилеммы: отдавать ли на откуп технологии MIDAS обмен данными между клиентом и сервером, или же совершать вручную обходные маневры.
Если остановиться на первом подходе, то смотри в сторону событий TClientDataSet и провайдеров, с именами BeforeXXXX и AfterXXXX.
Там можно вместе с данными передавать свой кусок инфы в переменной OleVariant. Глядишь, и получится обойтись этим.
Если же хочется больше контроля, то могу предложить такой вариант:
в RemoteDataModule создать одну или несколько функций под конкретные нужды. И с клиентской части дергать эти функции. Например, вместо того чтоб на клиенте делать ClientDataSet.Open, вызываем с сервера свою функцию MyTableOpen, которая как раз и откроет на сервере ту таблицу, на которую (через провайдера) ссылается этот ClientDataSet.
То есть, функция будет являться как-бы оболочкой для метода Open.
Это избыточно, согласен, но зато мы на уровне параметров сможем передавать в функцию любую инфу, которую она сможет записать в протокол и еще Бог знает куда. Можно передавать даже готовый SQL-запрос, который функция будет выполнять и писать в протокол. (правда, в этом случае данные теоретически становятся уязвимыми: текст запроса может быть перехвачен на пути от клиента к серверу и изменен. Но это уже вопросы защиты информации.)
Что касается статистики подключений и активности, то, опять-таки, на примитивном уровне (к-во юзеров, к-во выполненных запросов) можно обойтись событиями TRemotaDataModule.OnCreate и TTable.AfterOpen. Если же надо подробности - кто, во сколько, через какой порт и т.д. - то не вижу иного варианта, чем дополнить своим кодом Borland Socket Server. (Если кто знает другой способ - поделитесь, плиз!)
← →
xmed © (2005-07-12 19:06) [2]to
> sinsin
Красно дякую( баальшое спасибо )
сделал по второму варианту
В смысле на Серваке посоздавал методы и посылал в них данные
( ксатати вопрос о защите инфы не стоит ваабче )
← →
xmed © (2005-07-12 19:11) [3]может кто подскажет как с таким сервером и клиентом сотворить транзакции
Возможно надо опять же на серваке создавать исчо методы и передавать в них наборы данных а патом пытаться на сервере сделать транзакцию?
Клиентов будет около 10 одновременно это точно, максимум думаю будет 50 клиентов одновременно, а транзакции НУЖНЫ
Кака сделать такое на сервере я понял там у OracleSession есть IsTransaction Commit Rollback и т.д. А вот КАК это сделать на кслиенте у которого из компонентов тока ClientDataSet, SocketConnection и dataSource!
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.017 c