|
|
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Добрый день, многоуважаемое сообщество. Есть такая задача. Имеется около 1000 территориально разнесенных рабочих мест. На рабочих местах - Firebird 1.5 Super и клиент на делфи. При вставке строки в определенную таблицу надо эту строку передавать в центр. Как думаю решить - 1. В центре поставить веб сервер. 2. На местах добавить к серверу UDF. В ней процедура, которая будет дергаться из триггера, скажем. Процедура будет делать POST-запрос к вебсерверу в центре, в запросе передавать данные. А веб сервер уже куда-нибудь будет их складывать. Вопросы : 1. Возможно ли такое вообще ? 2. Если возможно, какие могут быть подводные камни ? Заранее всем спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:05 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabww, 1. Да. 2. А триггер кто дернет? Если клиентское приложение в основном потоке, то оно будет "зависать" на все время, пока будет обрабатываться http запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:13 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabww, 1. Возможно 2. Дык дофига. Что будет делать твоя программа когда веб сервер не доступен? Лучше посмотри в сторону оффлайн репликации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:14 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabww В ней процедура, которая будет дергаться из триггера, скажем. Процедура будет делать POST-запрос к вебсерверу в центре, в запросе передавать данные. А веб сервер уже куда-нибудь будет их складывать. ужасный ужас. работать может и будет, но недолго. :-) тебе нужна репликация. почему ты ее решил организовать таким образом, через ..., неясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:14 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Ты потратишь на это больше времени и денег чем на покупку и настройку готового репликатора + VPN. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:15 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
miwaonlinevaskabww, 1. Да. 2. А триггер кто дернет? Если клиентское приложение в основном потоке, то оно будет "зависать" на все время, пока будет обрабатываться http запрос. 1. Это хорошо 2. Ну триггер дернет дельфовый клиент, когда сохранит строку. А насчет зависания клиента... Нельзя ли как-нибудь асинхронно это сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:16 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Симонов Денис2. Дык дофига. Что будет делать твоя программа когда веб сервер не доступен? Лучше посмотри в сторону оффлайн репликации От данных зависит. Я бы в простом случае обошелся вызовом скрипта-однострочника (который будет вызывать упомянутую процедуру) в планировщике или из ярлычка на десктопе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:18 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwНельзя ли как-нибудь асинхронно это сделать ? Можно, но работать всё равно не будет. Ты когда-нибудь слышал о savepoint и rollback?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:19 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Спасибо, проблемы понятны. А где посмотреть на готовый репликатор, который можно купить, подскажите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:19 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwНу триггер дернет дельфовый клиент, когда сохранит строку. А насчет зависания клиента... Нельзя ли как-нибудь асинхронно это сделать ? ну допустим сделаешь. А что будет если сервер не доступен. Как потом твоя программа узнает была ли передана строка на центральный сервак. Не изобретай велосипед. Либо покупай готовый репликатор, либо делай его сам, но только через механизм логирования изменений, с последующей их вычиткой, а не через UDF в триггере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:20 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Слышал я про это, конечно :-) Только роллбэк тут причем ? на клиенте строка сохранилась, а вот дошла ли она до веб сервера, как-то надо понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:21 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Это все я понимаю. Только заказчик хочет именно так. Там на самом деле не просто веб-сервер, а сервер приложений, которому, кроме складывания данных, хотят еще и нагрузочное тестирование сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:24 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabww2. Ну триггер дернет дельфовый клиент, когда сохранит строку. А насчет зависания клиента... Нельзя ли как-нибудь асинхронно это сделать ? В дельфи же никто не запрещает делать многопоточные приложения, но, как уже сказали выше много раз умные люди - какой-то проктостоматологический метод передачи данных получается. Оправдан (ИМХО) только в случае, когда передаваемых данных очень мало. Само собой подразумевается, что надо будет делать проверки доступности http-сервера, передачи запроса, хранения информации о том, какие данные не были переданы и т.д. Это к камням по пункту 2 из первоначального вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:25 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwТолько роллбэк тут причем ? на клиенте строка сохранилась, а вот дошла ли она до веб сервера, как-то надо понять Ну сохранилась она на клиента, дошла до сервера. А потом приходит rollback и на клиенте она исчезает. А на сервере - остаётся. И опаньки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:27 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabww, третий слой делать надо. служба нужна, однако. должен ловить он евенты, инициировать рассылку, рассылать по списку и записывать квитанцию о доставке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:29 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwА где посмотреть на готовый репликатор, который можно купить, подскажите ? Если тебе позарез важна отправка через сервер приложений, то тебе поможет CopyCat. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:31 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovvaskabwwА где посмотреть на готовый репликатор, который можно купить, подскажите ? Если тебе позарез важна отправка через сервер приложений, то тебе поможет CopyCat. А что за зверь - CopyCat ? не гуглится ничего похожего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:43 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovvaskabwwА где посмотреть на готовый репликатор, который можно купить, подскажите ? Если тебе позарез важна отправка через сервер приложений, то тебе поможет CopyCat. О, нашел ! щас посмотрю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:44 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwDimitry Sibiryakovпропущено... Если тебе позарез важна отправка через сервер приложений, то тебе поможет CopyCat. А что за зверь - CopyCat ? не гуглится ничего похожего Да ладно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:45 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
wadmanvaskabwwпропущено... А что за зверь - CopyCat ? не гуглится ничего похожего Да ладно? Да-да, спасибо ! уже нашел :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 14:47 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Спасибо всем участникам обсуждения :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 15:14 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwТолько заказчик хочет именно так. если бы заказчик тебя попросил только закодировать конкретное решение, то ты бы тут вопросы не задавал. Поэтому заказчик по поводу "только так" идет лесом, ибо он не умеет программировать, иначе бы сам все написал. Насчет многозвенного сервера в центре - сколько угодно, он же только принимать данные будет, как я понял. Вопрос именно в корректной отправке данных с клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 20:05 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
kdv, Ок, как мне иначе сделать вот такое нагрузочное тестирование ? хочу, чтобы каждая добавленная строка тут же отправлялась в сервер приложений. В прошлом варианте система с удаленных рабочих мест отправляла данные в центр с определенной периодичностью по мылу и там консолидировалась . теперь же заказчик хочет, чтобы в центре был сервер приложений, одна база данных, а клиенты работали через браузер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:20 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Да, забыл добавить - но перед этим хочет вот такое тестирование на то, выдержит ли новая система реальную нагрузку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:25 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Ну так просто сделай новую систему и пусть работает параллельно со старой. Не выдержит в процессе перехода - откатишься на старую и всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:34 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу так просто сделай новую систему и пусть работает параллельно со старой. Не выдержит в процессе перехода - откатишься на старую и всё. не все так просто. система весьма сложная. и перед тем, как дать мне денег на новую, клиент вот таким образом хочет убедиться, что проблем с производительностью не будет. а если моя идея прокатит, то клиент получит к тому же хранилище данных, которым сможет пользоваться, пока будет разрабатываться новая система. параллельно в двух системах опять же операторы работать не смогут, медленно будут обслуживаться процессы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:41 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwkdv, Ок, как мне иначе сделать вот такое нагрузочное тестирование ? хочу, чтобы каждая добавленная строка тут же отправлялась в сервер приложений. В прошлом варианте система с удаленных рабочих мест отправляла данные в центр с определенной периодичностью по мылу и там консолидировалась . теперь же заказчик хочет, чтобы в центре был сервер приложений, одна база данных, а клиенты работали через браузер "Тут же" может не получиться: например - связи с сервисом нет, или ему сейчас некогда. Сделай спецклиента, который подпишется на события от сервера. Как новые строки появились - пусть вычитывает все новые и отправляет пачкой центральному сервису. По успешному завершению операции помечай эти строки "это старые". Эта операция должна делаться при наступлении события: "есть новые строки" и при запуске этого спецклиента. Если в процессе обработки возникли новые события - "склеивай" эти события в одно (например, "пропусти" их через таймер, который будет перезапускаться, если события наступают в процессе обмена данными с сервисом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:47 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
чччД"Тут же" может не получиться: например - связи с сервисом нет, или ему сейчас некогда. Сделай спецклиента, который подпишется на события от сервера. Как новые строки появились - пусть вычитывает все новые и отправляет пачкой центральному сервису. По успешному завершению операции помечай эти строки "это старые". Эта операция должна делаться при наступлении события: "есть новые строки" и при запуске этого спецклиента. Если в процессе обработки возникли новые события - "склеивай" эти события в одно (например, "пропусти" их через таймер, который будет перезапускаться, если события наступают в процессе обмена данными с сервисом). Ну вот да, примерно так, похоже, и придется делать. Спасибо :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 21:56 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
чччДЭта операция должна делаться при наступлении события: "есть новые строки"Я предпочитаю таймер. тикнул таймер, вычитали пачку, отправили, получили ответ, пометили пачку как отправленную, перекурили таймаут и по новой. Нагрузочная способность куда выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:02 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, тоже идея ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:12 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwпараллельно в двух системах опять же операторы работать не смогут, медленно будут обслуживаться процессы А операторам и не надо работать в двух системах одновременно. Часть останется в старой, часть - уже будет в новой. И ты получишь объективную картину сравнения быстродействия этих систем. Если операторы будут говорить "да ну нафиг, мы лучше по старинке", значит новая система - отстой. Если будут говорить "когда нас уже переведёте на новую?" - значит всё круто. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:27 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА операторам и не надо работать в двух системах одновременно. Часть останется в старой, часть - уже будет в новой. И ты получишь объективную картину сравнения быстродействия этих систем. Если операторы будут говорить "да ну нафиг, мы лучше по старинке", значит новая система - отстой. Если будут говорить "когда нас уже переведёте на новую?" - значит всё круто. где ты видел пользователя, который не говорит "да ну нафиг, мы лучше по старинке" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:29 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwгде ты видел пользователя, который не говорит "да ну нафиг, мы лучше по старинке" На старой работе например. Как я уже сказал: это означает, что ты при разработке новой системы облажался. Впрочем, в твоём случае это неизбежно: уеб-интерфейсы отстойны по определению. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:45 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, так я и думал ! именно это я предполагал ! (c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:48 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
извини, не удержался :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 22:49 |
|
||
|
Передача данных из UDF по HTTP
|
|||
|---|---|---|---|
|
#18+
vaskabwwДа, забыл добавить - но перед этим хочет вот такое тестирование на то, выдержит ли новая система реальную нагрузку допустим, с твоих слов - 1 центральный сервер и 1000 внешних клиентов. На внешних клиентах данные вставляет кто? Люди или роботы? Если люди, то допустим, 1 запись в 10 секунд. Значит средняя нагрузка будет 100 запросов в секунду, ну а пиковая - 1000 запросов в секунду, если вдруг все ломанутся одновременно. Значит, вопрос скорее в канале связи, чем в чем-то еще. Хотя, можно и стеклянный хрен сломать :-) Организовать такую тестовую нагрузку, на мой взгляд, элементарно. Это не бог весть что. Однако, на сервере, все же, должен быть пул коннектов, например, не более 20-50 одновременных для 1000 потенциальных клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 23:35 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563237]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 430ms |

| 0 / 0 |
