Главная страница
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.032 c
3-1146563364
D@Nger
2006-05-02 13:49
2006.06.25
запрет на редактирование в колонке DBGrid


2-1149584453
ttt_111
2006-06-06 13:00
2006.06.25
Написание HELP


15-1149059666
ArtemESC
2006-05-31 11:14
2006.06.25
Математики!!


2-1149345914
НовичОк_
2006-06-03 18:45
2006.06.25
Вставить дату из DateTimePicker


1-1148140579
yahaha
2006-05-20 19:56
2006.06.25
Список доступных шрифтов