Re: Сервер для MS Access
От: g.kostik  
Дата: 23.10.04 08:18
Оценка:
Здравствуйте, N_A, Вы писали:

N_A>Тут я когда-то задался следующим вопросом. Привожу текст (чтобы не лезть по ссылке)

N_A>___________________________________________________________________
N_A>Лирическое отступление:
N_A>Со временем базы мдб растут вместе с числом пользователей, и многие операции замедляются до неприемлемого уровня. Решить (снизить остроту) проблему можно разными способами: пересмотр схемы данных, архивация, репликация, переход на клиент-серверную архитектуру, терминальный доступ и т.д. Все они требуют значительных временнЫх или(и) денежных затрат. Где-то читал, что народ умудряется использовать даже MSSQL сервер как прослойку для имитации клиент-серверной технологии в Access (mdb-mssql-mdb).
N_A>А теперь по делу:
N_A>Решил реализовать такую штуку. На сервере запускается Форма из mdb которая на основе Winsock контрола «слушает» определенный порт и обрабатывает текстовые сообщения (запросы) приходящие через от клиентов. На клиентах юзается тот-же контрол.
N_A>В сообщениях клиент, например, может указывать чистый SQL код, или просто команду типа «выполнить процедуру «проц1» с параметрами а1,а2,а3».

N_A>Внимание вопросы:

N_A>1. Юзал несколько примеров (из инета и MSDN) — во всех у меня зависает Access после того как пытаюсь закрыть соединение (Close) или просто форму. Причем в Access начинает жрать 99% процессорного времени. (Глюк наблюдается для протокола TSP, примеры для UDP вроде не глючат)
N_A>2. Кто ковырялся в этом направлении, если смысл в такой идее или оно будет глючить по жизни и сможет ли работать несколько юзеров одновременно (как реализовать)?
N_A>И вообще у кого есть полный рабочий код (пример) с этими Winsock controls в Access?
N_A>п.с.
N_A>DoEvens-ы вставлял через строчку – не помогает.
N_A>________________________________________________________
N_A>С того момента накачал кучу примеров и на VB и на C++,но многие глючат (особенно VB), либо слишком сложны и перегружены ненужной функциональностью. Я так и не определился с технологией, а опыта нет, да и С++ хромает. Читал тут статью про сокеты, но она для крутых начинающих.
N_A>Не подумайте, что я ленивый или тупой, просто время, потраченное на изучение для меня очень дорого, и я хочу начать тратить его в нежном направлении, поэтому прошу оценить моё текущее виденье дел.

N_A>1. Писать качественный сервер на VB геморно, ибо проблемы с потоками и скоростью работы.

N_A>3. Использовать Winsock control тоже уже не хочу.
N_A>2. Писать решил на C++ (не очень удобно работать с базой Access, но попробую)
N_A>3. Не решил, как в моем случае правильнее обрабатывать несколько клиентов.
N_A>Пока думаю так:
N_A>Создаю сокет для "слушанья" клиентов, при "подключении" нового клиента создаю новый поток, который "работает" с этим клиентом.
N_A>Потоки принимают запросы от клиентов и записывают их в общую очередь (для корректного разделения общей очереди между потоками предполагаю использовать какие-нибудь критические секции или объекты ядра (почитаю в толстой книжке Виндовс для профессионалов)).
N_A>Очередь запросов обрабатывает поток, который читает и исполняет команды из этой очереди через ADO (или DAO) подключение к базе (посмотрю пример в инете).
N_A>Об окончании выполнения очередного запроса как-то должен узнать соответствующий поток (пока не думал как), и отправить результат клиенту.

N_A>Клиенты будут на MS Access.


N_A>Если все выше написанное считаете бредом – так и напишите, а если нет, то укажите на ошибки и дайте рекомендации. Про эти сокеты так дофига написано, что я и не знаю точно в каком «режиме» и какими библиотеками лучше пользоваться в моём случае. Если можно, дайте ссылку на подходящий пример и советы, что в него надо добавить, чтобы разрулить до описанного уровня.


N_A>Буду благодарен за любые комментарии.


Уточните, вы хотите писать свой сервер базы данных?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.