Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > Indy vs Client/Server Sockets |
Автор: Молоток 17.4.2008, 10:00 |
Постоянно работаю с ClientSocket, ServerSocket Отлично всё работает. Почему все говарят что лучше использовать Indy Однако не говарят почему это лучше.. Хочу услышать мнения специслистов на эту тему. Спасибо. |
Автор: kemiisto 17.4.2008, 10:27 | ||
В принципе, отличий много:
Но главная причина:
|
Автор: Молоток 17.4.2008, 10:30 |
kemiisto в Indy - кросплатформенные компоненты (VCL, CLX, VCL.NET); Приложения Делфи сами по себе не могут работать в nix Системах, так что не какой не плюс, а минус что есть лишние компоненты. |
Автор: Poseidon 17.4.2008, 10:41 |
А Clicks-приложения (CLX) могут? А Indy в CLX есть! А Socket есть? |
Автор: ksili 17.4.2008, 11:01 |
По-моему Indy на этих самых сокетах и сделана На Indy нельзя скачать часть HTTP-страницы (напрмер, только первых 10 кБ) - только полностью, а на сокетах это сделать можно. В общем по-моему Indy это скорее высокоуровневые компоненты. А сокеты по отношению к ним - более низкоуровневые |
Автор: Poseidon 17.4.2008, 11:08 |
Вообще, смотря для каких целей что надо. Можно на прямую брать функции из winsock.dll и говорить что не Indy, не Sockets не нужны. Но согласись, создать ftp сервер все-же проще на Indy чем на ServerSocket (кода менше, времени менше надо). |
Автор: MetalFan 17.4.2008, 13:28 |
у инди есть TidTCPServer/TidTCPClient... отличается от стандартных(TServerSocket, TClientSocket) более продвинутым функционалом и отсутствием неблокирующего режима работы |
Автор: Молоток 17.4.2008, 13:29 |
Poseidon, Почему ФТП сервер можно и на сокетах написать я писал. Тойсть для всех задач, я использую сокеты начиная от передачи файлов и крупных проектов по работе с базами даных через сервер. Для любых целей! |
Автор: MetalFan 17.4.2008, 13:41 |
а можно и колесо заново изобрести и велосипед самому руками собрать... только вот зачем? будут ли оправданы затраты человеко-часов? |
Автор: Молоток 17.4.2008, 15:06 |
MetalFan, Там что одной функцией ftp.create(); И всё у меня полноценный ФТП сервер с всеми примочками ? )) Один фиг кодить прийдётся даже самую простую докачку файлов при обрыве связи или туже передачи файлов. Добавлено через 1 минуту и 35 секунд Я если не знаю к примеру инди вообще то гараздо быстрей напишу сервак на сокетах с которыми постоянно работаю ![]() Вопрос идёт изначально идёт не о том кто что напишет. а о том почему нельзя использовать сокеты, чем лучше инди, и факты которые это подтверждают! ![]() |
Автор: Poseidon 18.4.2008, 21:59 | ||
Молодец! Только я не пойму, зачем ты сокеты вообще трогал? Брал бы сразу winsock.dll и в путь. Окно тоже на WinAPI сразу бы рисовал. Все события сам обрабатывал. И потом писал бы "народ, а чего вы TButton используете? На ВинАПИ кнопку создать - как два пальца..." Никто не писал что на сокетах нельзя фтп-сервер замутить. Только то, что ты будешь на сокетах делать неделю, с помощью Indy сделается за день. Конечно, если делаешь для себя и времени валом, то никто не запрещает. А если заказчик гонит в шею и ему, в готовой программе, глубоко фиолетово на чем у тебя строится работа. Пади ему обьясни, что неделю придется ждать только потому, что тебе не охота работать с Indy.
|
Автор: gggl 25.4.2008, 10:21 | ||
Так это верно? Если да то это большой минус по indy :( |
Автор: MetalFan 25.4.2008, 22:11 |
можно, но нестандартным подходом |
Автор: Poseidon 28.4.2008, 08:31 | ||
|
Автор: ksili 28.4.2008, 08:38 |
Можно качать и не для отображения. У меня вот была задача, где программа должна была для выполнения определённых действий делать несколько переходов по страницам. При этом я знал, что ссылка на следующую страницу для перехода находится вверху текущей страницы. А значит не было смысла качать всё остальное. Если качать столько, сколько нужно, трафик бы снизился в несколько раз. Конечно, это была специфическая задача, но тем не менее... |
Автор: Poseidon 28.4.2008, 09:44 |
Специфические задачи требуют специфических подходов. На Indy такие подходы тоже есть. Но вот только каково будет удивление пользователей такой программы, если страница изменится и искомая ссылка окажится внизу? Да и экономия трафика спорная. Сколько занимает среднестатистическая страница (только html-код)? 10кб? Не думаю что на много больше. Да, тут вот подумал. Сколько строк будет занимать код на сокетах, который умеет "бегать" по https ссылкам? Это же SSL подгружать придется, шифровать-расшифровывать. А теперь представим: все у нас прекрасно работало по http, все отлажено и тут бац, нужно сменить http на https. Если мы пишем на сокетах, то придется заново все переписывать, отлаживать, тестировать. А это время (а для кого-то еще и деньги). А если на Indy, то нужно будет "кинуть" один компонент на форму (IdSSLIOHandlerSocket) и связать его с idHttp (idHttp.IOHandler:= IdSSLIOHandlerSocket). Все! Ничего не надо переписывать, ничего отлаживать. Сколько это времени аймет? Ну максимум минуту. Сколько лишних строк кода? Ни одной (с учетом того что все можно в инспекторе сделать). Вот вам и разница. Точно такое же и с куками и еще куча с чем. |
Автор: gggl 30.4.2008, 01:58 |
Poseidon такое ощющение что инди этото пуп земли а то что в нем нельзя, то впринципе и никаму ненужно, да инди качает всю страницу целиком что не есть гуд, и сколько бы вы текста не написали минус в плюс не привратится... p.s.: и страници бывают и по 600кб (html). |
Автор: Poseidon 30.4.2008, 08:31 |
VCL тоже не пуп земли, но почему-то некто не пишет серьезные программы на WinAPI. Хотя VCL "тягает" за собой все что возможно, надо это будет или нет. И это минус. Но почему-то никто не обращает внимание на этот минус, а наоборот, то, что в VCL не нужно много лишних движений делать (как в WinAPI или в sockets) - это огромный плюс, который с лихвой перекрывает минус "больших программ" (в случае VCL) и лишнего трафика (в случае Indy). Сейчас, в эпоху безлимитного выделенного интернета и терабайтных винчестеров, мало кто смотрит на размер (программы или трафика). Сейчас смотрят на удобство и скорость (в разработке). Indy, как и VCL, дают такое удобство, чего не скажешь про sockets и WinAPI. PS. Про SSL возразить нечего? Хотелось бы ссылочку на такую страницу, в которой будет 600кб чистого html (т.е. без картинок, флеша и т.п.) |
Автор: MetalFan 30.4.2008, 09:27 |
можно! можно в индях скачать часть страницы. только не совсем стандартным способом, но можно |
Автор: gggl 30.4.2008, 23:30 | ||
Даже на этом форуме (Vingrad) если покопатся можно найти достаточно увесистые страници, особенно где вставленно много исходного кода, ещё этим блецут конференции на http://www.ixbt.com/ для примера эта страница весит 96кб (на момент написания) хотя эта страница не заполнена полностью и здесь нет ниодной строчки исходников... Вот и сравните 10кб и 96 есть разница? P.S.: Уж извените трафик у меня не халявный что бы лазить и искать такую страницу. |
Автор: Poseidon 1.5.2008, 00:44 | ||
![]() Я еще раз повторю, никто не запрещает использовать сокеты. Все-лишь рекомендуют переходить на Indy. Рекомендуют потому что Indy более гибки и уневерсальны. То, что на сокетах делается целой процедурой в десятки строк, на Инди делается в инспекторе обьектов вообще без кода. Это значительно упрощает и сам код и его разработку. Хотя для некаторых целей все же целесообразней использовать сокеты. Точно так же как и для некаторых целей целесообразнее написать на WinAPI. Тут все зависит от задачи. Но все же подавляющее большинство задач целесообразнее решать с помощью Индийцев. |