Главная страница
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.028 c
1-1147726374
Officeman
2006-05-16 00:52
2006.06.25
Вопрос о временный таблицах


6-1139206690
DelphiN!
2006-02-06 09:18
2006.06.25
Изменить основной шлюз, альтерн. и предпочит ДНС в виндовсе


15-1148671255
red_imp
2006-05-26 23:20
2006.06.25
Чернобыль


15-1148914623
ArtemESC
2006-05-29 18:57
2006.06.25
"Квакеры"


2-1149597376
fast2
2006-06-06 16:36
2006.06.25
Как добавить строку вStringGrid e?