- Python 49.4%
- HTML 31.1%
- TSQL 19.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| templates | ||
| app.py | ||
| mssql_schema.sql | ||
| README.md | ||
| requirements.txt | ||
Кейс-задача № 4. WEB-приложения и их архитектура
Условие: Провести анализ и описать имеющееся на рынке ПО информационных систем, построенных по архитектуре WEB-приложений; оценить возможности таких систем; создать приложение WEB-архитектуры на любую тему с использованием Delphi 10.2 + MS Internet Information Server (IIS), базу данных создать в MS SQL Server. Допускается «иной удобный способ».
Замечание по инструментам
В доступной среде выполнения практики отсутствуют Delphi 10.2, IIS и
MS SQL Server (среда — Linux-сервер без лицензионного ПО Windows). Пункт
задания прямо допускает «иной удобный способ» реализации, поэтому та же
архитектура WEB-приложения (клиент — браузер, сервер приложений, СУБД)
реализована на стеке Python + Flask (сервер приложений, аналог IIS с
ISAPI/ASP.NET-модулями) со схемой БД, спроектированной для MS SQL Server
(T-SQL, mssql_schema.sql), и рабочим прототипом на SQLite для локального
запуска без установки MS SQL Server. Слой доступа к данным вынесен отдельно,
поэтому переключение на MS SQL Server сводится к замене строки подключения
(например, через pyodbc).
1. Анализ рынка ПО, построенного по архитектуре WEB-приложений
Архитектура WEB-приложений подразумевает разделение системы на клиентскую часть (браузер), сервер приложений (бизнес-логика) и сервер базы данных. Такой подход используется в большинстве современных корпоративных систем.
| Продукт | Класс системы | Архитектура | Особенности |
|---|---|---|---|
| 1С:Предприятие 8 (WEB-клиент) | ERP/учётная система | Тонкий/WEB-клиент + сервер 1С + СУБД (MS SQL/PostgreSQL) | Широкая экосистема конфигураций, встроенный язык, но высокая стоимость лицензий |
| Bitrix24 | CRM/корпоративный портал | Классическая трёхзвенная WEB-архитектура (PHP + MySQL) | Быстрое внедрение, готовые модули, ограниченная гибкость кастомизации |
| Microsoft SharePoint (IIS) | Корпоративный портал/DMS | IIS + ASP.NET + MS SQL Server | Глубокая интеграция с экосистемой Microsoft, тяжёлое администрирование |
| Django/Flask-приложения (self-hosted) | Универсальный WEB-фреймворк | WSGI-сервер + Python + любая СУБД | Максимальная гибкость, но требует собственной разработки |
| Redmine / Jira (WEB) | Таск-трекер | Java/Ruby сервер приложений + СУБД | Хорошо подходит для управления задачами и практик, платно/бесплатно |
Оценка возможностей и вариантов использования в компании:
- Функциональность и масштабируемость. Готовые системы (1С, Bitrix24, SharePoint) закрывают типовые бизнес-процессы «из коробки», но плохо масштабируются под нестандартные задачи без доработки вендором. Самостоятельная разработка (Flask/Django) даёт полный контроль над функциональностью и позволяет горизонтально масштабировать сервер приложений независимо от СУБД.
- Стоимость владения. Коробочные решения требуют лицензионных отчислений (1С, SharePoint/IIS + Windows Server), тогда как связка Python/Flask + PostgreSQL/MySQL/SQLite — open-source и бесплатна для небольших и средних внедрений.
- Сопровождаемость. Чем крупнее вендор, тем регулярнее обновления безопасности, но тем сильнее зависимость от него (vendor lock-in). Собственная разработка проще сопровождается небольшой командой, если архитектура изначально спроектирована модульно (как в данном прототипе: отдельный слой доступа к данным, отдельные шаблоны, отдельная маршрутизация).
- Применение в компании. Для небольшой организации целесообразно использовать связку веб-фреймворк + реляционная СУБД для внутренних учётных WEB-приложений (заявки, каталоги, заказы) — именно такой сценарий и демонстрирует прототип ниже.
2. Демонстрационное WEB-приложение: «Учёт заявок технической поддержки»
Простое CRUD WEB-приложение на Flask: список заявок, форма добавления новой заявки, хранение данных в реляционной БД.
Файлы
app.py— сервер приложений на Flask (маршруты/,/add).templates/— HTML-шаблоны страниц (список заявок и форма добавления).mssql_schema.sql— DDL-скрипт таблицы заявок для MS SQL Server (целевая СУБД по заданию).requirements.txt— зависимости для запуска прототипа.
Запуск прототипа локально (SQLite)
pip install -r requirements.txt
python3 app.py
# приложение доступно на http://127.0.0.1:5000
Развёртывание в целевой архитектуре задания
- Выполнить
mssql_schema.sqlна сервере MS SQL Server. - Разместить приложение на Windows-сервере с установленным IIS
(модуль
httpplatformhandlerилиwfastcgiдля запуска Python/Flask под IIS, либо аналогичный ISAPI-модуль при реализации на Delphi 10.2 + WebBroker/IntraWeb). - Заменить строку подключения к БД в
app.pyна подключение к MS SQL Server черезpyodbc/ODBC DSN.