Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.011 c
1-1147968131
@LeX-I
2006-05-18 20:02
2006.06.25
Проблема выделения текста в RichEdit


15-1149086284
Kam
2006-05-31 18:38
2006.06.25
Передача массива данных из Delphi в Word


4-1143231811
Delphi_is_cool
2006-03-24 23:23
2006.06.25
Как изменить цвет шрифта ? (Static)


15-1149155278
Ega23
2006-06-01 13:47
2006.06.25
Питер FM


2-1149772292
ALe_x
2006-06-08 17:11
2006.06.25
размер файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский