Глубины 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)
Обработчики команд (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)
Сборка (Assembly)
Компиляторы и среды (IDE)
Компилятор DCCIL (Diesel)
Beta
Версия Delphi 8
Проект SideWinder
Проект Galileo
Среда .Net Framework
Среда WinForms
Библиотека времени исполнения RTL
Библиотека CLX
Среда VCL for .Net
Что выбрать WinForms или VCL for .Net?
Дополнения по переносу
Маппирование типов в CTS
Пространство имен (Namespaces)
Вложенные типы (Nested Types)
Пользовательские атрибуты (Custom Attributes)
Другие дополнения к языку
Ограничения
Не безопасные элементы
Небезопасные типы



Начало