Для тех, кто не в теме, Indy – это свободная технология автоматизации работы с интернетом, основанная на блокирующих сокетах. Indy (сокращение от Internet Direct) – набор, который состоит из более, чем из 110 компонентов и который является частью Delphi, Kylix и C++ Builder. Автор книги Чад Хувер (Chad Z. Hower), известный так же, как «Kudzu» является автором и координатором этого проекта, что гарантирует достоверность информации, изложенной в книге. Анатолий Подгорецкий – один из немногих «тру гуру» в мире программирования Delphi. Именно от него я получал одни из самых полезных советов на форуме Delphimaster. Перевод сделан практически профессионально, хотя есть несколько мелких косяков в книге.

Книга будет полезна каждому, кто разрабатывает серьезные приложения по работе с интернетом, в особенности для тех, кто уже набил шишки при реализации задач через ActiveX Internet Explorer-а или ручным программированием сокетов. Отличительная особенность Indy – высокий уровень абстракции. Практически все стандартные операции по реализации задач уже оформлены в виде функций компонентов. Еще раз напомню, что Indy работает в блокирующем режиме. Многие неопытные программисты сейчас могут сказать, что блокирующие компоненты это прошлый век и будут очень не правы.

Блокирующий режим имеет только преимущества. Блокирующим он называется потому, что ход выполнения потока на момент ожидания ответа от сервера приостанавливается. То есть, если вы будете использовать компоненты, кидая их на форму, тогда программа будет переставать реагировать на действия пользователя каждый раз, когда будет ожидание ответа от сервера. Это обязывает программистов использовать многопоточное программирование. И это правильно. Потому что хорошим тоном программирования является реализация всех задач по работе с устройствами (а работа с интернетом идет через устройство) в отдельных потоках.

Еще одна причина, по которой работу с интернетом стоит выносить в поток – ненадежность канала связи. В отличие от внутреннего содержимого компьютера, на канале связи у нас возможны ошибки, которые провоцируют различного рода утечки памяти, нестандартные ситуации и даже переполнения буфера. Если вы реализуете решения многопоточно – всегда можно завершить поток, который «ведет себя не хорошо», при этом не нарушив целостность данных пользователя. Другими плюсами блокирующих сокетов являются:

  • Проще программировать – Блокирующие режимы проще программировать. Весь пользовательский код может находиться в одном месте и выполняться в естественном, последовательном порядке.
  • Проще перенос в Юникс – Поскольку Юникс использует блокирующие сокеты, переносимый код написать в данном случае проще. Indy использует этот факт для написания единого кода.
  • Удобнее работать с потоками – Поскольку у блокирующих сокетов последовательность приобретена по наследственности, поэтому их очень просто использовать в потоках.

Итак, Indy – это решение, которое позволяет создавать сложные приложения по работе с интернетом при минимуме затрат времени. Более подробно познакомиться с технологией Вам поможет книга Чада Хувера в переводе Анатолия Подгорецкого. Скачать ее вы сможете в конце поста.

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

М. Э. Абрамян, В. Н. Брагилевский. Сетевое программирование в Delphi. (Скачать можно в конце поста)

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

Обратите внимание, что в новых версиях Indy некоторые поля были перенесены из самих компонентов в класс IOHandler. Будьте аккуратны при использовании кода из данных книг.

Скачать документ

Скачать Indy in Depth Анатолия Подгорецкого

Скачать документ

Скачать Сетевое программирование в Delphi

Связанные статьи: