Category Archives: Delphi

Delphi.RobustServer.Упрощаем routing запросов. Базовый класс TRP

Дописал базовый класс TRP, от которого можно наследовать всю бизнес логику. Теперь можно обращаться, скажем по адресу Users/Create, сервер найдет класс TRPUsers и попытается найти у него метод Create. Реализация TRP включает в себя RTTI механизм. Чуть позже есть идея … Continue reading

Posted in Delphi | Comments Off on Delphi.RobustServer.Упрощаем routing запросов. Базовый класс TRP

Delphi.RobustServer.Обработка POST запросов для основных MIME

Доработал обработку POST запросов для следующих MIME типов application/json application/x-www-form-urlencoded multipart/form-data Теперь сервер умеет работать с json, принимать файлы, пока ещё не оч. большие (poststream блоками читается в строку = оперативную память), поэтому по-хорошему, размер файлов надо ограничить, ну и … Continue reading

Posted in Delphi | Comments Off on Delphi.RobustServer.Обработка POST запросов для основных MIME

Delphi.RobustServer. Логгер на GUI

Добавил логгер на GUI Механизм такой – при добавлении сообщения в лог, автоматически обновляется GUI. Сообщения идут в обратном порядке. Ключевым моментом является функция WaitAndCreateLogFileStream класса TLDSLogger. Сначала сообщения пишутся в файл, затем из файла в GUI. Всей многопоточной логикой заведует … Continue reading

Posted in Delphi | Comments Off on Delphi.RobustServer. Логгер на GUI

Delphi.RobustServer.Открытие соединения с БД.Простой случай.

Как и когда нужно создавать экземпляр соединения с бд в серверном приложении? Путем чтения книг,  опыта и ошибок я понял, что под каждый запрос, создается поток, под каждый поток нужно  создавать соединение отдельно, иначе начинается хаос… Но это в случае, если … Continue reading

Posted in Delphi | Comments Off on Delphi.RobustServer.Открытие соединения с БД.Простой случай.

Delphi.RobustServer. Загрузка файлов на сервер

Сделал простую загрузку файлов на сервер, с возможностью создания уникального имени, если такое имя уже будет в директории сервера. Сама директория будет строиться как files/year/month/day Результат кода выглядит так Сам запрос идет через multipart следующим образом…

Posted in Delphi | Comments Off on Delphi.RobustServer. Загрузка файлов на сервер

Delphi.RobustServer. Совершенствуем CommandGet и тестовый класс TRPUsers

Немного отрефакторил код OnCommandGet, получилось так, довольно коротко…

Обработка запросов происходит в методах Process…, например ProcessUsers выглядит так

Posted in Delphi | Comments Off on Delphi.RobustServer. Совершенствуем CommandGet и тестовый класс TRPUsers

Delphi.RobustServer.Обработка ошибок, интерфейсный класс TResponses и измерение оперативной памяти

Сделал обработку ошибок следующим образом В модуле CommandGet сделал единый блок try / except

Теперь, если возникнет ошибка при обработке запроса, она не потеряется, а придет в понятном json формате, то есть вот так…. Кстати, здесь же можно посмотреть, … Continue reading

Posted in Delphi | Comments Off on Delphi.RobustServer.Обработка ошибок, интерфейсный класс TResponses и измерение оперативной памяти

Delphi. Измерение оперативной памяти

Модуль из проекта Вот эти 2 процедуры измеряют текущую память и пиковую

Полный модуль

 

Posted in Delphi | Comments Off on Delphi. Измерение оперативной памяти

Delphi.RobustServer – первые шаги

Github Первые несколько шагов. Текущую версию я делаю Visual Components Library App. Потом можно будет перевернуть это приложение в сервис, при желании. Архитектура  следующая

Posted in Delphi | Comments Off on Delphi.RobustServer – первые шаги

Delphi. RobustServer. Пишем мощный и надежный сервер на Indy

На мой взгляд, более менее универсальная архитектура приложения выглядит так… В этом и последующем постах будем писать мощный и надежный сервер. Это будет шаблон для будущих проектов. Стэк технологий у нас будет следующий Delphi Seattle MySQL FireDAC SuperObject … Ближайшие … Continue reading

Posted in Delphi | Comments Off on Delphi. RobustServer. Пишем мощный и надежный сервер на Indy