369422d8

Как работает Indy

Прокси (proxy – заместитель, уполномоченный)
Прозрачные прокси
Туннелирование IP / Трансляция сетевого адреса (NAT)
Маппирование портов / Туннели
FTP User@Site прокси
Непрозрачные прокси

SOCKS прокси
HTTP (CERN) прокси
Обработчики ввода/вывода (IOHandlers)
Компонент TIdIOHandlerSocket
Компонент TIdIOHandlerStream
Компонент TIdSSLIOHandlerSocket
Пример - Speed Debugger
Пользовательский обработчик IOHandler
Перехватчики (Intercepts)
Перехватчики

Ведение логов (Logging)
Отладка


Ведение логов
Симуляция
Запись и воспроизведение
Параллельное выполнение (Concurrency)
Параллельное выполнение
Борьба (споры) за ресурсы (Contention)
Защита ресурсов (Resource Protection)
Разрешение споров (Resolving Contention)

Только чтение (Read Only)
Атомарные операции (Atomic Operations)
Поддержка Операционной Системы (Operating System Support)
Явная защита (Explicit Protection)
Критические секции (Critical Sections)
Класс TMultiReadExclusiveWriteSynchronizer (TMREWS)
Специальное примечание к классу TMREWS
Примечание к классу TMREWS в Kylix
Выбор между Critical Sections и TMREWS
Сравнение производительности

Мьютексы (Mutexes)
Семафоры (Semaphores)
События (Events)
Потоко-безопасные классы
Изоляция (Compartmentalization)
Кодовые потоки
Что такое поток?
Достоинства потоков
Управление приоритетами (Prioritization)
Инкапсуляция

Безопасность
Несколько процессоров
Не нужна последовательность
Процессы против потоков
Потоки против процессов
Переменные потоков
Термины потоковый (threadable) и потоко-безопасный (threadsafe)
Термин потоковый (threadable)
Термин потоко-безопасный (threadsafe)
Синхронизация

Класс TThread
Компонент TThreadList
Indy
Компонент TIdThread
Класс TIdThreadComponent
Метод TIdSync
Класс TIdNotify
Класс TIdThreadSafe
Общие проблемы
Узкие места

Реализация критических секций
Класс TMREWS
Синхронизация (Synchronizations)
Обновление пользовательского интерфейса
Серверы
Класс TIdTCPServer
Роль потоков
Сотни потоков
Реальные ограничения на потоки
Модели серверов

Командные обработчики
Класс TIdUDPServer
Класс TIdSimpleServer
События потоков
Модели TCP серверов
Событие OnExecute
Обработчики команд (Command Handlers)
Реализация
Пример протокола

Базовый пример
Создание обработчика команд
Поддержка обработчика команд
Свойство Greeting (приветствие)
Свойство ReplyExceptionCode
Свойство ReplyUnknownCommand
Прочие свойства
Тестирование новой команды
Реализация HELP
Реализация DATETIME

Заключение
Postal Code Server – командные обработчики
Управление потоками
Класс TIdThreadMgrDefault
Пул потоков (Thread Pooling)
SSL – безопасные сокеты
Безопасные протоколы HTTP и HTTPS
Другие клиенты
Сервер SSL
Преобразование сертификатов в формат PEM

Экспортирование сертификата
Преобразование файла .pfx в .pem
Разделение файла .pem
Файл Key.pem
Файл Cert.pem
Файл Root.pem
Indy 0 обзор
Разделение пакетов
Ядро SSL
Протоколы SSL

Клиент FTP
Сервер FTP
Разбор списка файлов FTP
Прочие
Перестройка ядра
Переработка обработчиков ввода/вывода (IOHandler)
Сетевые интерфейсы
Волокна (Fibers)
Планировщики (Schedulers)
Рабочие очереди

Цепочки (судя по всему внутренняя абстракция)
Драйверы цепочек (chain engines)
Контексты (Contexts)
Дополнительные материалы
Преобразование Delphi приложений в Delphi .Net
Термины
CIL
CLR
CTS
CLS

Управляемый код (Managed Code)
Неуправляемый код (Unmanaged Code)