Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

трехзвенная архитектура => Статистика на сервере   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1147986841
Германн
2006-05-19 01:14
2006.06.25
Установка Indy9 на Д6


15-1148890565
Ega23
2006-05-29 12:16
2006.06.25
А что в IDE Delphi5 делает функция


2-1149332528
Revan
2006-06-03 15:02
2006.06.25
MediaPlayer1.Length


15-1149064855
0bsid
2006-05-31 12:40
2006.06.25
Delphi уроки $$


2-1149491203
bevaine
2006-06-05 11:06
2006.06.25
преобразование