Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Вниз

ICS, TWSocket   Найти похожие ветки 

 
jimy   (2006-10-21 18:28) [0]

TWSocket (www.overbyte.be/eng/products/ics.html). Что можете сказать про эту библиотеку-компонент? Из этого набора инетесует TWSocket, применяли его? Посмотрел, вроде код написан профессионально, но хотелось бы услышать мнения тех, кто применял его на практике.


 
Ketmar ©   (2006-10-21 18:31) [1]

когда-то использовал. впечатления самые приятные. больше ничего не помню. %-)


 
Eraser ©   (2006-10-21 18:36) [2]

> [0] jimy   (21.10.06 18:28)

отличается стабильностью, но жаль что все постоенно на асинхронном режиме.


 
Anatoly Podgoretsky ©   (2006-10-21 18:47) [3]

TWSocket это центральный компонент системы, все остальные строятся на его основе.
Пакет очень хороший и что важно ассинхронный, что позволяет обслуживать тысячи клиентов. Можно работать и синхронно, если есть желание.
Мой NNTP сервер построен на его основе, пробовал Инди, кроме негатива ничего хорошего, только время потерял.


 
Anatoly Podgoretsky ©   (2006-10-21 18:49) [4]


> отличается стабильностью, но жаль что все постоенно на асинхронном
> режиме.

А чем тебя это не устраивает, сокеты Виндоус изначально были ассинхронными, ведь система много пользовательская, с ограничеными ресурсами, а TWSocket может работать от Д1 и выше, с минимальным потреблением ресурсов, обслуживать многие тысячи клиентов одновременно, и что важно очень стабильно.


 
Eraser ©   (2006-10-22 19:18) [5]

> [4] Anatoly Podgoretsky ©   (21.10.06 18:49)

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


 
Anatoly Podgoretsky ©   (2006-10-22 19:52) [6]

Ну почему же сложно, но если сложно, то почти все методу, двухзарядные, и синхронные и ассинхронные и при этом не блокирующие.


 
Verg ©   (2006-10-22 19:54) [7]

Странно, что все "родоначальники" блок. режима спешно уматывают на асинхронные режимы. Уже все "приличные" люди под nix системами используют кто kevent, кто epoll... Виндозники "прозрели" до IOCP (типа, а раньше мужики-то и не знали).

И вот только здесь все больше Indy процветает...
А главное, аж подвели теоритическое обоснование под эту убогость (не без помощи местных знатоков). Я имею в виду "Indy In Depth" и проч. лозунги.
Потому, что "проще".
Простота, которая хуже воровства...


 
Eraser ©   (2006-10-22 19:59) [8]

> [6] Anatoly Podgoretsky ©   (22.10.06 19:52)

проблема именно в "неблокирующие", т.е. это удобно когда протокол вроде http - отправил-принял и все..
а когда отправил-принял повторяется оч. много раз и в разной последовательности, в зависимости от принятых данных?

> [7] Verg ©   (22.10.06 19:54)


> Виндозники "прозрели" до IOCP (типа, а раньше мужики-то
> и не знали).

опять же, когда речь идет об http - все просто, используют то, что эффективнее.


 
Anatoly Podgoretsky ©   (2006-10-22 20:04) [9]


> Verg ©   (22.10.06 19:54) [7]

Да ладно бочку катить, если на меня, то я переводил редкую в сети информацию.
Я не виноват, это все Борланд.

Ну а теперь поговорим о режимах?
Я часто наблюдаю когда ставят знак равенства между блокирующими и синхронными, соответсветнно между неблокирующими и ассинхронными сокетами. Для меня это разные вещи
синхронными и ассинхронными это режим ожидания
а блокирующими и не блокирующие - это режим исполнения, поток блокируется.

Вот ICS может работать как с синхронным, так и ассинхроном режиме, не блокируя поток и требует только одного потока для работы. В тоже время блокирующие сокеты требуют использования по одному потоку на каждый сокет, а каждый поток как известно потребляет 1 мегабайт только для стеке и уже при 2000 потоках наступает капут, память кончится, не резиновая она, на процесс всего то 2 гигабайта.

И еще раз напоследок отругаю, ну и гадость ваша заливная рыба, то бишь ИНДИ.


 
Anatoly Podgoretsky ©   (2006-10-22 20:08) [10]

Eraser ©   (22.10.06 19:59) [8]
Ну так в ICS или get или post и получишь управление в следующей строке по окончанию приема данных или исключение.
А если GetAsync или Post Async то получишь управление в обработчике или исключение в другом обработчики и до этого момента можешь заниматься другими делами.
Тебя же не смущают обработчики при работе с базами данных, таже смесь синхронного и ассинхронного.

Ну и гадость эта ваша Инди, очень плохо стыкуется с идеологией Дельфи и Виндоус. Работает только в простых линейных алгоритмах.


 
Anatoly Podgoretsky ©   (2006-10-22 20:13) [11]

А ты представь, например есть мемо и мы делаем несколько конкуретных запросов, по получение данных в обработчике записываем их в мемо и наслаждаемя. Только создай по одному экземляру THttpCli на запрос, статически или динамически, и назначь общий обработчик. И это без потоков и руки свободны.
А конечно понимаю, что голова сначала думает насчет синхронных методов, человек ведь слабое существо, а если сесть и немного подумать над алгоритмом?


 
Eraser ©   (2006-10-22 20:22) [12]

> [10] Anatoly Podgoretsky ©   (22.10.06 20:08)


> Ну так в ICS или get или post и получишь управление в следующей
> строке по окончанию приема данных или исключение.

вот это интересно, касаемо этих компонентов, не знал, что так можно.. уж очень бегло взглянул на них.

> [11] Anatoly Podgoretsky ©   (22.10.06 20:13)

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

> человек ведь слабое существо, а если сесть и немного подумать
> над алгоритмом

уж очень много там думать прийдется, поверьте.

> И еще раз напоследок отругаю, ну и гадость ваша заливная
> рыба, то бишь ИНДИ.

пожалуй соглашусь, особенно для компонентов, реализующих прикладные протоколы, но TIdTCPClient/Server у меня нареканий не вызывают, все весьма продумано и безглючно.


 
90210   (2006-10-22 20:34) [13]

А сам TWSocket вообще в каком режиме работает? Неблокирующем? Можно его перевести в блок/неблок?


 
Anatoly Podgoretsky ©   (2006-10-22 20:39) [14]

Их можно комбинировать, даже одновременно использовать, например делается синхронный запрос, но обработка принятых данных делается в обработчике, недавно проверял.
Пример

...
HttpCli.Get
что делаем еще, но по окончанию команды Get, а основная обработка в обработчике HttpCli1RequestDone

или второй вариант
HttpCli.GetAsync;
что делаем еще, но не дожидаясь окончания команды Get, а основная обработка в обработчике HttpCli1RequestDone

.HttpCli1RequestDone;
обрабатываем принятые данные или наоборот обрабатываем из после команды Get а здесь меняем состояние контролов, статистики.

Так что все достаточно гибко и при этом можно делать столько запросов сколько необходимо одновременно и все в главном потоке.


 
Anatoly Podgoretsky ©   (2006-10-22 20:40) [15]


> 90210   (22.10.06 20:34) [13]
> А сам TWSocket вообще в каком режиме работает? Неблокирующем?
>  Можно его перевести в блок/неблок?

Не разбирался, но видимо в родном, в неблокирующем, а зачем там нужен блокирующий режим, другое дело иногда для работы нужны потоки, если идет конкурентная, медленная работа с другими ресурсами, например с базой и то не обязательно.


 
90210   (2006-10-22 20:44) [16]

А ещё вопрос, что там за упоминание MultiThreaded (true/false) в свойствах, к чему оно?


 
Eraser ©   (2006-10-22 20:45) [17]

> [14] Anatoly Podgoretsky ©   (22.10.06 20:39)

такой подход радует, этого иногда не хватает в Indy. Знал бы, что эти компоненты поддерживают синхронные вызовы - скорее всего использовал бы их. Интересно, будет ли реализация ICS под .NET..?


 
Anatoly Podgoretsky ©   (2006-10-22 20:46) [18]

Я начинал построение своего сервера с Инди но после того как серьезно помучался, почитал их форумы и FAQ, то быстро ушел на ICS, когда понял, что это не живое, для сложной динамической среды с непредсказуемой ситуацией, последовательностью, ошибками, и уже через несколько часов имел рабочий вариант, просто просмотрев демонстрационные примеры, а их гигантское количество на все случаи жизни, как от автора, так и от членов сообщества.

И что особо удивило, что это работает даже на Дельфи 1, на основе одног и того же кода компонентов.

Через два дня уже имед рабочий, правда сырой сервер, пока работа простая Инди вполне великолепен, получить страничку с сервера примерно одинаково в обеих системах.

Борланд он халявщик, хватает все что открыто лежит, вот автор ICS им свой продукт не отдал.


 
Anatoly Podgoretsky ©   (2006-10-22 20:48) [19]


> Интересно, будет ли реализация ICS под .NET..?

Сложно сказать, там наверно нужны другие подходы, все писать с нуля, а вот Win16/Win32 все таки одна система.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.051 c
2-1173964046
Нуб
2007-03-15 16:07
2007.04.08
chr(5)


15-1173645068
SkySpeed
2007-03-11 23:31
2007.04.08
Проблемы с решением задач по теории вероятности


2-1174048509
Krylov
2007-03-16 15:35
2007.04.08
Как создать свой справочник в формате *.chm


10-1130760965
Галинка
2005-10-31 15:16
2007.04.08
Как совместить MatLab & Delphi


3-1169124954
dest81
2007-01-18 15:55
2007.04.08
interbase SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский