powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Неуклюжий вопрос по обмену "клиент-сервер"
16 сообщений из 16, страница 1 из 1
Неуклюжий вопрос по обмену "клиент-сервер"
    #33914802
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чувствую, что неправильна сама постановка задачи, но решить ее как-то надо. Подскажите, плиз.
Короче, есть компьютер, на котором хранится куча фокс-таблиц и комбинированных (очень сложных, многоступенчатых) поисковых процедур к ним. Все эти процедуры получали запросные параметры (код,Ф.И.О.,адресные реквизиты, и т.п.) из единой запросной пользовательской формы, выполняли поиск и выдавали результаты. И все это прекраснейшим образом работало в одно-машинном режиме.
Но вот встала проблема перевести все это добро в режим «1 сервер – 8 клиентов (тонких)». Чтобы не переписывать поисковые и прочие хорошо зарекомендовавшие себя процедуры (неоправданно долго!), я подумал, что проще будет организовать все через один SHARED-dbf-ник (расположенный на сервере), в соответствующие поля которого компьютеры-клиенты по сети будут записывать значения запросных параметров, а простенькая программа на сервере будет просматривать этот dbf-ник и запускать соответствующие (прежние) поисковые процедуры.
В режиме отладки (если делать одноразовый просмотр этого dbf-ника) все вроде нормально работает. Но фишка-то в том, чтобы запустить циклическое сканирование этого dbf-ника – и вот тут-то и начинаются неприятности. Вернее, неприятность одна – пока dbf-ник сканируется, в него ничего записать НЕВОЗМОЖНО, оказывается. Я уже и от SCAN-ENDSCAN отказался, попробовал сделать все через SKIP в цикле DO WHILE … ENDWHILE – все равно доступ для записи запрещен… Можно, конечно, сделать просмотр с паузами, но это уже – «сарай с пристройкой» получится.
Не хотелось бы излишне усложнять решение проблемы применением разных ВебСервисов, Soap’ов, IIS’ов и прочих притянутых за уши к Фоксу вещей – мне кажется, что это можно решить классическими VFP7-средствами, пользуясь исключительной самодостаточностью Фокса. Но пока ничего дельного в голову не приходит. Честно говоря, я не знаю самих принципов передачи информации от клиента к серверу, чтобы сервер мог эту информацию тут же отследить.
Подскажите, пожалуйста, где об этом можно прочитать, и как лучше поступить в данном конкретном случае.
Для иллюстрации приведу сильно упрощенные фрагменты «непокорных» программ:

Структура и примерный набор данных SHARED-dbf-ника xxs.dbf:
CREATE TABLE xxs (idk c(50),baza c(3),done l(1),zapros m(4),kod c(10),fam c(30),nam c(30),otc c(30))
INSERT INTO xxs (idk,baza,done,kod,fam,nam,otc) VALUES ;
('\\COMPUTER_1\C\KATALOG\PODKATALOG','YUR',.F.,'1234567890','ИВАНОВ','ИВАН','ИВАНОВИЧ')
INSERT INTO xxs (idk,baza,done,kod,fam,nam,otc) VALUES ;
('\\COMPUTER_2\C\KATALOG\PODKATALOG','FIZ',.F.,'2345678901','ПЕТРОВ','ПЕТР','ПЕТРОВИЧ')
INSERT INTO xxs (idk,baza,done,kod,fam,nam,otc) VALUES ;
('\\COMPUTER_3\C\KATALOG\PODKATALOG','GAI',.F.,'3456789012','СИДОРОВ','СИДОР','СИДОРОВИЧ')
INSERT INTO xxs (idk,baza,done,kod,fam,nam,otc) VALUES ;
('\\COMPUTER_4\C\KATALOG\PODKATALOG','YUR',.F.,'4567890123','КУЗНЕЦОВ','КУЗЬМА','КУЗЬМИЧ')

«Эскиз» «сканирующей» программы на сервере:
use xx_s SHARED
DO WHILE .T.
select xx_s
IF xxs.done=.F.
&& Выполнение обработки полученных параметров - kod,fam,nam,otc...
&& или для примера хотя бы:
? ALLTRIM(xxs.id_k)+'###'+ALLTRIM(xxs.baza)+'###'+ALLTRIM(xxs.kod)
ENDIF
IF RECNO()=RECCOUNT() && Пробовал и SCAN...ENDSCAN - тем более не дает изменить табл.xxs
GO TOP
ELSE
SKIP 1
ENDIF
ENDDO

Клиентская «посылка»:
use xxs shared
m.name_k='COMPUTER_1'
m.asd_baza='YUR'
m.asd_kod='1234567890'
m.asd_fam='ИВАНОВ'
m.asd_nam='ИВАН'
m.asd_otc='ИВАНОВИЧ'
replace xxs.baza WITH m.asd_baza,;
xxs.done WITH .F.,;
xxs.kod WITH m.asd_kod,;
xxs.fam WITH m.asd_fam,;
xxs.nam WITH m.asd_nam,;
xxs.otc WITH m.asd_otc;
ALL FOR upper(substr(strtran(alltrim(xxs.id_k),'\\',''),1,at('\',strtran(alltrim(xxs.id_k),'\\',''),1)-1))==upper(m.name_k)
*!* или через UPDATE (тем более не работает, ибо там всякие неочевидные FLOCK'и политику диктуют):
*!* UPDATE xxs;
*!* SET xxs.baza=m.asd_baza,;
*!* xxs.done=.F.,;
*!* xxs.kod=m.asd_kod,;
*!* xxs.fam=m.asd_fam,;
*!* xxs.nam=m.asd_nam,;
*!* xxs.otc=m.asd_otc;
*!* WHERE upper(substr(strtran(alltrim(xxs.id_k),'\\',''),1,at('\',strtran(alltrim(xxs.id_k),'\\',''),1)-1))==upper(m.name_k)
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33914872
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делал подобный проект лет 15 назад... В принципе работало, но все это так "притянуто за уши" ... Тупиковй путь... Но если Вам надо "набить свои шишки", то вперед!

Самым удачным - применение Web Services - они вполне естественно работают с FoxPro - Вся Ваша логика будет внутри Вашего Web service на чистом FoxPro (то есть практичкески не надо переписывать отлаженный годами Ваш код) - только дописать прием параметров и ответ, соответсвенно добвить все это на клиент.... И все, работает хоть через Интерент...

тынц
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33915124
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за понимание, Sergey Ch.
Я, в принципе, не против разных там ВебСервисов - просто слишком уж разношерстная ОС-компания среди 8 клиентов подобралась: Win98,WinME,Win2000sp4,WinXPsp2 и WinServer2003 - и исправить это никак низзя :(
А подгонка ВебСервисов в таком случае, слыхал, весьма неблагодарное занятие...
Потому был бы вам очень признателен, если бы вы вспомнили, как вам удалось сделать "подобный проект лет 15 назад... В принципе работало" - и поделились опытом :)
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33915430
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zero12 Я, в принципе, не против разных там ВебСервисов - просто слишком уж разношерстная ОС-компания среди 8 клиентов подобралась: Win98,WinME,Win2000sp4,WinXPsp2 и WinServer2003 - и исправить это никак низзя :(
Это как раз не разношеостная компания Они все ягоды с одного поля и на этих клиентах прекрасно работает SOAP 3.0 в качестве клиента для FoxPro. Кроме того, если применять Web Service - к Вашим данным можно будет обращаться и из других программ под другими операционными системами, так как протокол SOAP сегодня поддерживает очень много фирм...

Но в конечном итоге решать Вам...

Good luck!
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33917627
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, спасибо.
Поборюсь еще. Но, видимо, придется-таки погрузиться в это болото :)
Дай Бог не увязнуть.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33917629
LSM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У Пинтера (http://www.lespinter.com) в свое время была описана реализация...
Каждый запрос - отдельный файл в каталоге запросов. Ответ помещался в одноименный файл в каталоге ответов. Имена файлов формировать через SYS().

WBR, Сергей
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33918057
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To LSM17:
Да, я как раз в этом направлении и "рыл". И уже почти получилось :) Думал соригинальничать, а оказывается это уже было... :)
Но главное - ничего подстраивать (тем более - в реестре) не надо. Работает, и куды круче WS!
To Sergey Ch:
Я не умаляю престижа WS, просто на практике все оказалось намного сложней (в трио Win98+VFP7+SOAP3), чем описывается в вашей статье.Хотя тоже обмен информацией "клиент-сервер" проходит. Но делать это ценой таких наворотов, да плюс еще задействовать WINAPI... Просто, вы - уже, очевидно, много лет как "пилот" в вопросах VFP, и как всякий пилот экстра-класса постепенно становится плохим автоводителем, так и вам уже, видимо, трудно "оттянуться назад" и прочувствовать, что трансатлантический авиалайнер, конечно, хорош для перелета через Атлантику, но для преодоления ручья... Пока доберешься до аэропорта, пройдешь таможенников, устроишь багаж, переменьжуешь в полете "разобъемся - не разобъемся", потом от аэропорта доберешься снова до места назначения, которое, в принципе - рядом с местом старта... Желание лететь в данной ситуации пропадает напрочь. Да и цена на билет... :)
Спасибо вам, конечно, но в последующем, по возможности - приземляйтесь хоть иногда. Здесь внизу тоже бывает хорошо :)
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33918886
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zero12 Я не умаляю престижа WS, просто на практике все оказалось намного сложней (в трио Win98+VFP7+SOAP3), чем описывается в вашей статье...
Вообще-то в FoxPro это делается все одной кнопкой, просто в статьях все это "разжевано"

Решать, конечно, Вам. Просто когда я делал проект, подобный Вашему еще ничего подобного в области новых технологий и не существовало... Я бы никогда не "городил огород" при наличии стандартных, проверенных тысячами людей решений. Все это проще чем Вы думаете - небольшие инвестиции в Ваше самообразование в будущем Вам помогут найти более перспективное "место под солнцем"...

Хотя, конечно, решать Вам и каждый в это жизни должен написать свой калькулятор, текстовый редактор и подобие клиент-сервера...

Good luck!
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33918974
LSM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.lespinter.com/PC/ShowArticle.aspx?ArtNum=215

A FoxPro Server
Here’s a simple mechanism to ELIMINATE index file traffic on your networked FoxPro application.

Текст статьи прилагается.

WBR, Сергей.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920082
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Sergey Ch:
Может, насчет, калькулятора Вы и правы - писал когда-то, правда - на Borland'овском TurboPascal'е 5.5.
Но в моем случае, по-моему, все больше - от желания не искать чрезмерно сложных решений там, где можно обойтись более простыми. Утверждаю как кадровик со стажем - при приеме на работу данная способность очень даже поощряется :) А вообще - спасибо за заботу. И о моем возможном трудоустройстве - тоже :) Я как раз на распутье - уже 4-й год имею право на пенсию, да все пока не решаюсь. Да и руководство, вроде хорошо относится. Так что - пока не буду никуда рыпаться. По крайней мере - пока не освою Web Services... :)

To LSM17:
Премного балгодарен, я как раз нашел это. Там еще, оказывается, много чего интересного есть! Весьма рекомендовал бы всем любопытствующим.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920112
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-то даже не хочется комментировать. Когда-то нечто похожее сам изобрел. Правда, запросы отсылал через NetBIOS, а вот результат получал через расшаренный каталог.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920523
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To oleg_km:
Не, у меня немного по-другому - запросы формируются автоматически на серваке, в зависимости от поступивших от клиента параметров (поскольку эти параметры строго определены и постоянны для всей базы уже много лет, то автоформирование запросов - дело весьма простое и вполне себя примерно ведет:). И с передачей ответов клиенту - тоже проблемы нет, это я еще в первый день поборол. Проблема была в передаче запросных параметров - я выше все детально описал. Но сейчас я пошел по другому пути (спасибо LSM17 :)
В принципе, в се вроде срабатывает. Правда, надо немного еще покрутить для проверки. Надеюсь, сбоев не будет.
Главное, что не нужно ставить IIS'ы и лезть в реестр - сам компутер, который предполагается использовать в качестве сервера является "недоступным для разработчика" (заморочки госслужб). Да и к клиентским машинам подобраться - долгое дело. Прсто необходимо передать "товарисчам" все это "разработанное добро" на компакт-диске, чтоб "вставил, нажал кнопку - и все сразу заработало" (таковы исходные условия). В таких ситуациях внедрение WS - просто не возможно.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920820
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Беспредметная полемика. Судя по приведенному примеру "госслужбы" не имеют IT-отделов, способных развернуть по инструкции разработчика нормальное клиент-серверное приложение. Что ж, вполне типичная ситуация. О какой только безопасности может идти речь, если в общем расшаренном каталоге на сервере складываются все запросы всех клиентов и, что главное, выборки, получаемые всеми клиентами. Т.е. я не имею доступ к каким-то данным, просто сканируя каталог ответов, регулярно выгребаю все выборки и получаю данные, запрошенные более "уполномоченным" пользователем. По-моему обычный клиент-сервер (DCOM/COM+, WS, MS SQL) все-таки секурнее.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920850
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_kmПо-моему обычный клиент-сервер (DCOM/COM+, WS, MS SQL) все-таки секурнее.
Конечно. тем более, если файлы базы данных развернуть на NTFS с соответствующими правами и включить SSL.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33920967
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Алексей

Немного не по теме. В обсуждаемом варианте, как я понимаю базы недоступны пользователям. Просто есть шара на сервере. Клиенты кладут в шару фалы с запросам, сервер сканирует, считывает запрос, выполняет и кладет файл с выборкой, клиент его забирает. Можно конечно на шаре для каждого ползователя сделать отдельный катало с доступом только ему, но если админ заказчика умет сделат такое, я не понимаю, почему он не сможет разверноть тот же DCOM. Тем более процесс инсталляции можно автоматизировать
...
Рейтинг: 0 / 0
Неуклюжий вопрос по обмену "клиент-сервер"
    #33923298
Zero12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"DCOM, SSL..." - Вы тут не ругайтесь, пожалуйста :)
"Судя по приведенному примеру "госслужбы" не имеют IT-отделов" - ага, в частности, если ихнему шефу сказать, что ему нужен хороший сисадмин, то он, прежде всего, спросит, какое у него звание и выслуга :)
А расшаренная информация там внутри не страшна - важно, чтобы из их изолированной локалки она никуда не просочилась.
Тем более, в моем варианте реализации сервак сам отсылает ответы именно запросившему пользователю. Пока все идет нормально, но хочу еще проверить на таком же количестве машин и с такими же ОС и пользовательскими настройками.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Неуклюжий вопрос по обмену "клиент-сервер"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]