|
|
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Чувствую, что неправильна сама постановка задачи, но решить ее как-то надо. Подскажите, плиз. Короче, есть компьютер, на котором хранится куча фокс-таблиц и комбинированных (очень сложных, многоступенчатых) поисковых процедур к ним. Все эти процедуры получали запросные параметры (код,Ф.И.О.,адресные реквизиты, и т.п.) из единой запросной пользовательской формы, выполняли поиск и выдавали результаты. И все это прекраснейшим образом работало в одно-машинном режиме. Но вот встала проблема перевести все это добро в режим «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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2006, 02:05 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Делал подобный проект лет 15 назад... В принципе работало, но все это так "притянуто за уши" ... Тупиковй путь... Но если Вам надо "набить свои шишки", то вперед! Самым удачным - применение Web Services - они вполне естественно работают с FoxPro - Вся Ваша логика будет внутри Вашего Web service на чистом FoxPro (то есть практичкески не надо переписывать отлаженный годами Ваш код) - только дописать прием параметров и ответ, соответсвенно добвить все это на клиент.... И все, работает хоть через Интерент... тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2006, 11:51 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Спасибо за понимание, Sergey Ch. Я, в принципе, не против разных там ВебСервисов - просто слишком уж разношерстная ОС-компания среди 8 клиентов подобралась: Win98,WinME,Win2000sp4,WinXPsp2 и WinServer2003 - и исправить это никак низзя :( А подгонка ВебСервисов в таком случае, слыхал, весьма неблагодарное занятие... Потому был бы вам очень признателен, если бы вы вспомнили, как вам удалось сделать "подобный проект лет 15 назад... В принципе работало" - и поделились опытом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2006, 20:23 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Zero12 Я, в принципе, не против разных там ВебСервисов - просто слишком уж разношерстная ОС-компания среди 8 клиентов подобралась: Win98,WinME,Win2000sp4,WinXPsp2 и WinServer2003 - и исправить это никак низзя :( Это как раз не разношеостная компания Они все ягоды с одного поля и на этих клиентах прекрасно работает SOAP 3.0 в качестве клиента для FoxPro. Кроме того, если применять Web Service - к Вашим данным можно будет обращаться и из других программ под другими операционными системами, так как протокол SOAP сегодня поддерживает очень много фирм... Но в конечном итоге решать Вам... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2006, 09:15 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Ладно, спасибо. Поборюсь еще. Но, видимо, придется-таки погрузиться в это болото :) Дай Бог не увязнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2006, 21:30 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
У Пинтера (http://www.lespinter.com) в свое время была описана реализация... Каждый запрос - отдельный файл в каталоге запросов. Ответ помещался в одноименный файл в каталоге ответов. Имена файлов формировать через SYS(). WBR, Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2006, 21:33 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
To LSM17: Да, я как раз в этом направлении и "рыл". И уже почти получилось :) Думал соригинальничать, а оказывается это уже было... :) Но главное - ничего подстраивать (тем более - в реестре) не надо. Работает, и куды круче WS! To Sergey Ch: Я не умаляю престижа WS, просто на практике все оказалось намного сложней (в трио Win98+VFP7+SOAP3), чем описывается в вашей статье.Хотя тоже обмен информацией "клиент-сервер" проходит. Но делать это ценой таких наворотов, да плюс еще задействовать WINAPI... Просто, вы - уже, очевидно, много лет как "пилот" в вопросах VFP, и как всякий пилот экстра-класса постепенно становится плохим автоводителем, так и вам уже, видимо, трудно "оттянуться назад" и прочувствовать, что трансатлантический авиалайнер, конечно, хорош для перелета через Атлантику, но для преодоления ручья... Пока доберешься до аэропорта, пройдешь таможенников, устроишь багаж, переменьжуешь в полете "разобъемся - не разобъемся", потом от аэропорта доберешься снова до места назначения, которое, в принципе - рядом с местом старта... Желание лететь в данной ситуации пропадает напрочь. Да и цена на билет... :) Спасибо вам, конечно, но в последующем, по возможности - приземляйтесь хоть иногда. Здесь внизу тоже бывает хорошо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 09:44 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Zero12 Я не умаляю престижа WS, просто на практике все оказалось намного сложней (в трио Win98+VFP7+SOAP3), чем описывается в вашей статье... Вообще-то в FoxPro это делается все одной кнопкой, просто в статьях все это "разжевано" Решать, конечно, Вам. Просто когда я делал проект, подобный Вашему еще ничего подобного в области новых технологий и не существовало... Я бы никогда не "городил огород" при наличии стандартных, проверенных тысячами людей решений. Все это проще чем Вы думаете - небольшие инвестиции в Ваше самообразование в будущем Вам помогут найти более перспективное "место под солнцем"... Хотя, конечно, решать Вам и каждый в это жизни должен написать свой калькулятор, текстовый редактор и подобие клиент-сервера... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 13:44 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
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, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 14:08 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
To Sergey Ch: Может, насчет, калькулятора Вы и правы - писал когда-то, правда - на Borland'овском TurboPascal'е 5.5. Но в моем случае, по-моему, все больше - от желания не искать чрезмерно сложных решений там, где можно обойтись более простыми. Утверждаю как кадровик со стажем - при приеме на работу данная способность очень даже поощряется :) А вообще - спасибо за заботу. И о моем возможном трудоустройстве - тоже :) Я как раз на распутье - уже 4-й год имею право на пенсию, да все пока не решаюсь. Да и руководство, вроде хорошо относится. Так что - пока не буду никуда рыпаться. По крайней мере - пока не освою Web Services... :) To LSM17: Премного балгодарен, я как раз нашел это. Там еще, оказывается, много чего интересного есть! Весьма рекомендовал бы всем любопытствующим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 21:31 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Как-то даже не хочется комментировать. Когда-то нечто похожее сам изобрел. Правда, запросы отсылал через NetBIOS, а вот результат получал через расшаренный каталог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 22:08 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
To oleg_km: Не, у меня немного по-другому - запросы формируются автоматически на серваке, в зависимости от поступивших от клиента параметров (поскольку эти параметры строго определены и постоянны для всей базы уже много лет, то автоформирование запросов - дело весьма простое и вполне себя примерно ведет:). И с передачей ответов клиенту - тоже проблемы нет, это я еще в первый день поборол. Проблема была в передаче запросных параметров - я выше все детально описал. Но сейчас я пошел по другому пути (спасибо LSM17 :) В принципе, в се вроде срабатывает. Правда, надо немного еще покрутить для проверки. Надеюсь, сбоев не будет. Главное, что не нужно ставить IIS'ы и лезть в реестр - сам компутер, который предполагается использовать в качестве сервера является "недоступным для разработчика" (заморочки госслужб). Да и к клиентским машинам подобраться - долгое дело. Прсто необходимо передать "товарисчам" все это "разработанное добро" на компакт-диске, чтоб "вставил, нажал кнопку - и все сразу заработало" (таковы исходные условия). В таких ситуациях внедрение WS - просто не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 09:40 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
Беспредметная полемика. Судя по приведенному примеру "госслужбы" не имеют IT-отделов, способных развернуть по инструкции разработчика нормальное клиент-серверное приложение. Что ж, вполне типичная ситуация. О какой только безопасности может идти речь, если в общем расшаренном каталоге на сервере складываются все запросы всех клиентов и, что главное, выборки, получаемые всеми клиентами. Т.е. я не имею доступ к каким-то данным, просто сканируя каталог ответов, регулярно выгребаю все выборки и получаю данные, запрошенные более "уполномоченным" пользователем. По-моему обычный клиент-сервер (DCOM/COM+, WS, MS SQL) все-таки секурнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 11:04 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
oleg_kmПо-моему обычный клиент-сервер (DCOM/COM+, WS, MS SQL) все-таки секурнее. Конечно. тем более, если файлы базы данных развернуть на NTFS с соответствующими правами и включить SSL. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 11:09 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
2Алексей Немного не по теме. В обсуждаемом варианте, как я понимаю базы недоступны пользователям. Просто есть шара на сервере. Клиенты кладут в шару фалы с запросам, сервер сканирует, считывает запрос, выполняет и кладет файл с выборкой, клиент его забирает. Можно конечно на шаре для каждого ползователя сделать отдельный катало с доступом только ему, но если админ заказчика умет сделат такое, я не понимаю, почему он не сможет разверноть тот же DCOM. Тем более процесс инсталляции можно автоматизировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 11:29 |
|
||
|
Неуклюжий вопрос по обмену "клиент-сервер"
|
|||
|---|---|---|---|
|
#18+
"DCOM, SSL..." - Вы тут не ругайтесь, пожалуйста :) "Судя по приведенному примеру "госслужбы" не имеют IT-отделов" - ага, в частности, если ихнему шефу сказать, что ему нужен хороший сисадмин, то он, прежде всего, спросит, какое у него звание и выслуга :) А расшаренная информация там внутри не страшна - важно, чтобы из их изолированной локалки она никуда не просочилась. Тем более, в моем варианте реализации сервак сам отсылает ответы именно запросившему пользователю. Пока все идет нормально, но хочу еще проверить на таком же количестве машин и с такими же ОС и пользовательскими настройками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 21:35 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=240&tid=1590961]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 370ms |

| 0 / 0 |
