Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Скорости DCOM и WinSocket / 13 сообщений из 13, страница 1 из 1
27.12.2005, 07:06
    #33458508
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Простая функция на тестовом сервере: принять строку текста 20 символов, вернуть её обратно - для клиента это цикл послать/принять. Замеры по 10000 циклов в локальной сети 100Mb дали результаты: DCOM на VFP9 - 400 циклов/сек, Winsock на VC++6 - 5000/сек. Насколько типичны эти результаты, или я напортачил с реализацией?
...
Рейтинг: 0 / 0
27.12.2005, 09:23
    #33458631
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Так а в чем вопрос.

DCOM при этом кучу работы сделал дополнительной: преобразование данных произвел, типы проверил, пересылку по RPC, авторизовал пользователя, права доступа. Если тебе это не надо, то почему-бы и не WinSock, а если будешь все делать сам - может у тебя и больше получится
...
Рейтинг: 0 / 0
27.12.2005, 12:47
    #33459265
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Немного непонятно, зачем Вы это делаете.

Читал неплохую статью на сайте компании West Wind там приводились результаты чего-то аналогичного, выиграл специально разработанный модуль на C++... Посмотрите сами по указанной ссылке, может найдете эту или другую статью...

Good luck!
...
Рейтинг: 0 / 0
27.12.2005, 19:36
    #33460489
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Уточняю, хотя и не совсем понятно, что такое "это нехорошее", что я делаю. Фокс система не только SQL-ская, но и "записийная". Для обработки данных
в режиме навигации по записям существенно время исполнения мелких операций, запрашиваемых клиентом сервера. И это даже если основная работа выполняется на сервере "хранимыми процедурами" с представлением клиенту результатов в виде небольшх наборов данных. Например, надо подставлять в редактируемое поле значения по прокручиваемому списку из очень большого справочника, хранимого на сервере.
...
Рейтинг: 0 / 0
28.12.2005, 05:45
    #33460782
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Rostislav D. KudryashovПростая функция на тестовом сервере: принять строку текста 20 символов, вернуть её обратно - для клиента это цикл послать/принять. Замеры по 10000 циклов в локальной сети 100Mb дали результаты: DCOM на VFP9 - 400 циклов/сек, Winsock на VC++6 - 5000/сек. Насколько типичны эти результаты, или я напортачил с реализацией?
А код того и того можно глянуть?
Методика замера?
Локальная сеть общая или специально ворганизованная (из 2 машин)?
И еще, что мешает тот же самый Winsock на VFP сделать?
...
Рейтинг: 0 / 0
28.12.2005, 09:58
    #33461056
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Для w3d: тексты в приложении, в них и методика замера, а сеть - локалка бщая Ethernet 100Mb, но разные запуски не слишком разнятся по скорости, так что влиянием чужого трафика можно пренебречь.
Вся идея состоит в Фоксовском COM-сервере для таблиц DBF. Он должен быть доступен для Java-клиентов и не мешать старым файл-серверным DOS-задачам. Для этого нужен еще к-то прокси. Он может быть на DCOM (IBM Bridge2Java или свой JNI) или на Winsocket.
Писать Winsocket прокси на Фоксе нет смысла. Я так понимаю, чтоб клиентские запросы обрабатывались Fox-м многопоточно, с квантованием времени, надо чтоб обращения к FOX-COM (и VFP9t) шли из разных потоков на хосте, создаваемых в Winsocket-прокси для каждого клиента. Сам же Fox не умеет создавать потоки.
...
Рейтинг: 0 / 0
28.12.2005, 10:14
    #33461101
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Все равно не понятно, что Вы делаете...

Неужели нельзя уже использовать что-то стандартное, быстрое и готовое, например Web Services? Тогда данные из FoxPro можно использовать хоть на Java (так как обмен будет вестись на чистом XML)...
...
Рейтинг: 0 / 0
28.12.2005, 10:24
    #33461129
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
авторСам же Fox не умеет создавать потоки.

Так их умеет делать DCOM или COM+ подсистема Windows. Ты же на WinSock фактически тоже самое будешь делать.
...
Рейтинг: 0 / 0
28.12.2005, 19:35
    #33463021
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Для Sergey Ch. WebServices звучит заманчиво, но тут у меня пробел. Действительно ли, что Web будет реагировать на частые и малые запросы быстрее DCOM (400 циклов/сек по сравнению с 5000 из Winsocket на сети 100Mb удручают, а ведь реальная работа пойдёт на 2Mb)? Например, при правке полей надо проверять допустимость значений с прокруткой большого объёма данных на сервере. И ещё вопрос в том, что дистрибуты заказчикам я могу передавать только по e-mail. Даже если я сам подкуюсь по части Web, сумею ли я разъяснить заказчикам, что им надо у себя устроить? Можно ли воткнуть в дистрибут инстолятор Web-сервера? Скажите "да", я тогда уж постараюсь!
...
Рейтинг: 0 / 0
28.12.2005, 20:26
    #33463060
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Rostislav D. KudryashovДля Sergey Ch. WebServices звучит заманчиво, но тут у меня пробел. Действительно ли, что Web будет реагировать на частые и малые запросы быстрее DCOM (400 циклов/сек по сравнению с 5000 из Winsocket на сети 100Mb удручают, а ведь реальная работа пойдёт на 2Mb)? Например, при правке полей надо проверять допустимость значений с прокруткой большого объёма данных на сервере. И ещё вопрос в том, что дистрибуты заказчикам я могу передавать только по e-mail. Даже если я сам подкуюсь по части Web, сумею ли я разъяснить заказчикам, что им надо у себя устроить? Можно ли воткнуть в дистрибут инстолятор Web-сервера? Скажите "да", я тогда уж постараюсь!
1. Насчет быстрее я не уверен, так как в процессе участвует промежуточное звено - IIS.
2. Не понимаю, что значит частые и малые - что Ваша задача реально делает? Какой бизнес - процесс?
3. Многопоточность в SOAP 3.0 реализована хорошо.
4. Большой объем данных в таблицах должен быть проиндексирован по нужному полю плюс побольше памяти на сервере не помешает (задачу могут тормозить приложения на старом FoxPro)...
5. Установить Web Service на сервере заказчика можно просто... Но в дистрибутив вложить будет немного сложновато - проще если они сами сгенерируют Ваш код на сервере, но в принципе все решаемо - мне клиенты дают доступ по терминальной сессии через интеренет а там я уже делаю свое "черное" дело. Если использовать методику, описанную в моем примере, то это далать надо только один раз, а потом просто давать им новую DLL, которую Вы получите на своем компьютере из FoxPro+SOAP 3.0...

Так что однозначно на Ваш вопрос я не могу ответить "да"...
...
Рейтинг: 0 / 0
29.12.2005, 01:48
    #33463240
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Hi Rostislav!

Ты полагаешь, что основное время будет расходоваться на TCP обмен? Что-то не
верится... Ты раельным чем-нить нагрузи свой "сервер" - да хоть бы и
созданием примитивной выборки из 10-ка записей по (оптимизируемому)
условию - тогда и сравнивай :)
Кроме того для COM+ можно обеспечить межсерверную транзакционность (правда
придётся писать свой "компенсатор" - но пример в VFP имется), пул объектов
(т.е. чтобы скажем 400 клиентов обслуживало на 400 конкурентных потоков, а
всего 10-20 :) ), авторизацию в конце концов...
И ещё - ен понятно КАК ты это делал - т.е. реально DCOM (весьма уже древняя
по сегодняшним меркам технология) или всё-же COM+ (который хоть и
"преемник", но заметно расширенный)... И опять-же сколько было потоков на
сервере в том и другом случае, какова методика тестирования (IMHO 1 клиент
делающий кучу коннекций/запросов+1 сервер - это не очень типичное решение -
т.е. тут может быть своя специфика).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.12.2005, 05:51
    #33465226
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Igor Korolyov. Извиняюсь за неточность, конечно, я использовал MTS+ на Win2000, а не DCOM. А что касается многоаспектности рассматриваемого процесса, факт остаётся фактом - скорость обработки запросов по сети через MTS+ слишком мала и не только по сравнению с Winsocket. Тот же COM-сервер, вызываемый локально на CPU 1330Mhz показывает 35000 циклов/сек против 400 из MTS+. Накладные расходы на сеть ЧУДОВИЩНЫ. Так что с сокрушением сердца обращаю взор к Winsocket'у.
...
Рейтинг: 0 / 0
30.12.2005, 10:55
    #33465505
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорости DCOM и WinSocket
Это можно оценить примерно так. Есть одна крайность, написать на ассемблере под чистый Ethernet - летать (работать) будет быстро, но взлетать (разрабатываться) очень долго. Есть другая крайность, написать на каком-нибудь макроязыке и как транспорт использовать электронную почту - летать не будет, взлетать правда тоже будет долго.
Я что хотел сказать. DCOM (COM+) - это межмашинная технология, которая предоставляет программисту определенный дополнительный сервис (не претендую на полноту):
- безопасность (авторизацию, права доступа);
- преобразование данных (передаем в методы параметры как есть - COM-подсистема сама их сериализирует);
- объектную ориентированность и прозрачность использования локально-удаленно;
- и что-то там еще много, не хочу напрягаться.
НО. Все это стоит дополнительных расходов. Поэтому, если данные излишества не нужны или наоборот вредят - долой их и работаем на чистом WinSocket
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Скорости DCOM и WinSocket / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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