Меню сайта
Форма входа
Категории раздела
Общие статьи об INDY [6] INDY IN DEPTH [18]
Учебник созданный авторами INDY
Видеоуроки INDY [3] Основы Delphi [9]
Работа с файлами [6]
Главная » Статьи » Delphi » INDY IN DEPTH

Введение в Indy
INDY IN DEPTH. ГЛУБИНЫ INDY

 

4. Введение в Indy

 

4.1. Путь Indy


Indy разработан изначально на внедрение потоков. Построение серверов и клиентов в Indy подобно построению серверов и клиентов в Unix, исключая, что это, как заведено выражаться, много проще, так как у вас есть Indy и Delphi. Приложения в Unix традиционно как раз вызывают стек, как всем известно, впрямую с наименьшим уровнем абстракции либо вообщем без него.

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

Сервера Indy работают схожим образом. Windows в отличии от Unix, не делает разветвление, а делает новейший поток. Сервера Indy делают новейший поток для каждого клиентского соединения. Сервера Indy делают слушающий поток, который изолирован от, как все говорят, главенствующего кодового потока программы. Слушающий поток случает входящие клиентские запросы. Для каждого клиента, которому отвечают, создается новейший поток для его обслуживания. Нужные действия возбуждаются в контексте данного потока.

4.2. Методология Indy

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

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

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

4.3. Различия Indy

• Indy употребляет API блокирующих сокетов.
• Indy не нацелен на действия. Indy имеет действия, но для информационных нужд, но они не неотклонимы.
• Indy разработан ни внедрение, как все знают, кодовых потоков. Тем более, Indy может работать без использования потоков.
• Программирование в Indy – это линейное программирование.
• Indy имеет высочайший уровень абстрагирования. Большая часть сокет компонент не чрезвычайно отлично изолируют программера от стека. Большая часть сокет компонент заместо изоляции от стека, напротив так сказать погружают его в трудности сотворения оберток вокруг этого в Delphi / C++ Builder.

4.4. Обзор клиентов

Indy разработан для сотворения высочайшего уровня абстракции. Трудности и детализация TCP/IP стека укрыты от программера.

Обычный клиент сессия в Indy смотрится так:
with IndyClient do
 begin
  Host := 'postcodes.atozedsoftware.com'; // Host to call
  Port := 6000; // Port to call the server on
  Connect;
  try
    // Do your communication
  finally
   Disconnect;
  end;
 end;

4.5. Обзор серверов

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

4.6. Потоки


Для реализации функциональности употребляются потоки. Indy чрезвычайно интенсивно употребляет потоки для реализации серверов, потоки так же употребляются и в клиентах. неблокирующие сокеты также как бы могут употреблять потоки, но они требуют некой, как люди привыкли выражаться, доборной обработки и их достоинства теряются по сопоставлению блокирующих сокетов.
Категория: INDY IN DEPTH | Добавил: nazgull (05.02.2012)
Просмотров: 1046 | Рейтинг: 2.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки