Форум: "Сети";
Текущий архив: 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