- Отчёт из PostgreSQL в приложении .NET 5 под управлением Astra Linux
- Начнем с установки операционной системы Astra Linux
- Для экспериментов нам нужен фреймворк .NET 5
- Настало время установить и настроить СУБД PostgreSQL
- Собственно, создание отчёта из PostgreSQL
- Строим отчёт в Astra Linux
- Открываем отчёт для редактирования в Web
- Нюансы
- Подведем итоги
Отчёт из PostgreSQL в приложении .NET 5 под управлением Astra Linux
Сегодня мы поговорим о российской операционной системе Astra Linux. Эта система получила в последнее время довольно широкое распространение. Разработкой и сопровождением Astra Linux занимается АО «НПО РусБИТех». Существуют разные редакции системы, в том числе и специального назначения. Мы будем рассматривать систему общего назначения Astra Linux Орёл 2.12 в связке с СУБД PostgreSQL 9.6.15 и платформой .NET 5, с помощью которых мы попробуем сделать простое веб-приложение с использованием генератора отчётов FastReport .NET Core. Стоит отметить, что большинство моментов, которые мы будем применять на практике далее, также будут работать и в редакциях Astra Linux специального назначения (Смоленск, Новороссийск, Севастополь и других).
Начнем с установки операционной системы Astra Linux
Скачать ISO образ Astra Linux можно с официального сайта.
Подробно процесс установки и первоначальной настройки рассказывать нет смысла – есть очень подробная документация на сайте производителя. Вся процедура проста и понятна – достаточно следовать инструкциям на экране.
Если вы планируете установить систему для экспериментов в качестве виртуальной машины Hyper-V (входит в состав Windows Professional и Enterprise), то следует обратить внимание на следующие моменты:
- Виртуальная машина должна быть первого поколения;
- Нужно использовать IDE контроллер для жесткого диска и DVD-ROM;
- Поддерживается legacy сетевой адаптер;
- При старте инсталляции на первом экране нужно выбрать опцию установки acpi=off;
После установки системы нужно скачать с помощью браузера пакет поддержки Hyper-V и затем установить его командой в консоли:
sudo dpkg -i hyperv-daemons_5.3.9-2_amd64_signed.deb
после этого нужно перезагрузить систему.
Для экспериментов нам нужен фреймворк .NET 5
Открываем консоль и выполняем следующие команды:
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ wget https://packages.microsoft.com/config/debian/9/prod.list sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
После этого нужно обновить репозиторий пакетов и установить .NET 5 следующими командами:
sudo apt-get update sudo apt-get install -y apt-transport-https sudo apt-get install -y dotnet-sdk-5.0
Правильность установки .NET 5 можно проверить, выполнив команду запроса версии в консоли (5.0.100 на момент написания статьи):
Если вы планируете всерьез заниматься разработкой программ на Astra Linux, то вам понадобится редактор Visual Studio Code. Для того, чтобы его установить, нужно скачать пакет с официального сайта. Далее пакет нужно установить (имя файла пакета может отличаться, указано актуальное на момент написания статьи):
sudo dpkg -i code_1.51.1-1605051630_amd64.deb
Для дальнейшей работы нам нужны Git и библиотека libgdiplus, ставим их с помощью команд:
sudo apt install git sudo apt install libgdiplus
Переходим в домашнюю папку и выполняем команду клонирования репозитория с примером приложения и дампом тестовой базы данных, которые нам понадобятся позже:
git clone https://github.com/fediachov/FastReportSamples
Настало время установить и настроить СУБД PostgreSQL
Вероятно, вы всё уже установили в процессе выбора компонентов операционной системы. Если нет, то выполняем команду в консоли:
sudo apt install postgresql-astra postgresql-contrib
Ждем завершения установки. Убедимся, что установлена нужная нам версия – выполним в консоли команду запуска утилиты psql (важный момент — она должна работать от имени пользователя postgres):
Далее вводим команду получения номера версии:
Выходим из psql (клавиши Ctrl+D) и переходим к настройке СУБД. Если предполагается доступ к СУБД с других компьютеров (или хостовой системы в случае с Hyper-V), то необходимо добавить нужную подсеть в файл конфигурации /etc/postgresql/9.6/main/pg_hba.conf:
host all all 192.168.1.0/24 md5
Также нужно внести изменения в файл конфигурации /etc/postgresql/9.6/main/postgresql.conf:
# - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on;
После изменений нужно перезапустить Postgres:
sudo systemctl restart postgresql
Теперь нужно создать тестовую базу данных и пользователя с нужными правами для доступа к ней. Для этого снова запускаем утилиту psql и выполняем в ней следующие команды:
CREATE DATABASE frdemo; create user fastreport with encrypted password 'fastreport'; grant all privileges on database frdemo to fastreport;
Выходим из psql и импортируем тестовую базу из дампа примера (дамп находится в папке ~/FastReportSamples/PostgreSQL/database):
cd ~/FastReportSamples/PostgreSQL/database sudo -u postgres psql frdemo fr-pg-demo.sql
Чтобы убедиться, что все наши таблицы созданы и доступны, запускаем psql и выполняем там команды (назначение прав, подключение к базе frdemo, вывод списка таблиц, вывод содержимого таблицы):
GRANT ALL ON ALL TABLES IN SCHEMA public TO fastreport; \c frdemo \dt SELECT customerid, companyname, contactname FROM customers;
Вы уже скачали готовый пример программы и отчёта с GitHub и самое время сделать отступление, чтобы рассказать, как они были созданы после аналогичных операций, которые мы с вами проделали выше.
Собственно, создание отчёта из PostgreSQL
Для создания и редактирования шаблона отчёта был использован продукт FastReport for DBA – в него уже встроен плагин для доступа к PostgreSQL. Если же вы планируете работать с PostgreSQL из FastReport .NET, то вам предварительно нужно скомпилировать плагин из папки установки FastReport .NET \Extras\Connections\FastReport.Postgres, затем зарегистрировать полученную сборку в настройках дизайнера. Также возможно использование дизайнера FastReport Designer Community Edition из комплекта поставки FastReport Open Source, но следует помнить, что этот дизайнер сильно ограничен по возможностям.
Вся работа с шаблоном отчёта на данном этапе проводилась в операционной системе Windows с подключением к СУБД PostgreSQL, работающей на Astra Linux. Упреждая вопросы, сразу скажу, что можно было бы вести разработку шаблона в графическом интерфейсе Linux, но на данный момент есть единственный продукт способный это делать – FastReport Mono. Настройка и использование фреймворка Mono на Astra Linux выходит за рамки данной статьи. Другой вариант – использование FastReport Online Designer, но он требует приобретения лицензии и не подходит для наших примеров в демонстрационной редакции.
Итак, запускаем дизайнер отчётов FastReport, выбираем создание нового отчёта и переходим к настройке подключения к СУБД PostgreSQL:
Далее выбираем таблицу для экспериментов, в нашем случае это employees:
Далее переходим к разработке шаблона отчёта. Простые руководства как сделать простой отчёт, можно посмотреть на Youtube канале. В результате мы получили такой результат:
После создания шаблона отчёта можно его протестировать – вызвать предварительный просмотр:
В нашем случае именно этот шаблон отчёта попал к вам вместе с демонстрационным примером, который вы скачали ранее с GitHub.
Строим отчёт в Astra Linux
Возвращаемся к сборке примера веб-приложения. В качестве прототипа послужил стандартный шаблон MVC приложения, который создается командой:
После создания проекта была добавлена модель /Models/HomeModel.cs:
public class HomeModel public WebReport WebReport get; set; > >
Затем были внесены правки в контроллер /Controllers/HomeController.cs — добавлен следующий код:
public IActionResult Index() var model = new HomeModel(); model.WebReport = new WebReport(); model.WebReport.Report.Load( Path.Combine("Reports", "postgres.frx")); model.WebReport.DesignerLocale = "ru"; model.WebReport.Width = "100%"; model.WebReport.Height = "800"; // model.WebReport.Mode = WebReportMode.Designer; return View(model); >
В файле Startup.cs в функцию Configure добавлен вызов:
Затем зарегистрирован плагин для подключения к PostgreSQL:
FastReport.Utils.RegisteredObjects.AddConnection( typeof(FastReport.Data.PostgresDataConnection));
Чтобы была возможность обращаться к запущенному приложению с других компьютеров в подсети, в файле Program.cs изменена функция CreateHostBuilder:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartupStartup>(); webBuilder.UseUrls("http://0.0.0.0:8080"); >);
В папке Reports размещен тестовый шаблон отчёта, который был сделан ранее.
В проекте использованы Nuget пакеты FastReport .NET, они будут автоматически скачаны в момент начала сборки. Перечень пакетов хранится в файле core.csproj. Эти пакеты можно заменить на аналогичные по функционалу от продукта FastReport Open Source, если вам будет достаточно его возможностей.
Для сборки и запуска веб-приложения нужно выполнить следующие команды:
cd ~/FastReportSamples/PostgreSQL/dotnet-5 dotnet build dotnet run
Запускаем браузер и открываем адрес http://localhost:8080
Если у вас есть другой компьютер под рукой (например, хостовый компьютер в случае с Hyper-V), запускаем браузер там и обращаемся к серверу под управлением Astra Linux:
Открываем отчёт для редактирования в Web
Если внимательно изучить код тестового приложения, то можно заметить закомментированную строку в файле /Controllers/HomeController.cs:
// model.WebReport.Mode = WebReportMode.Designer;
Если убрать этот комментарий, наш отчёт будет открыт в режиме редактирования в FastReport Online Designer. В нашем примере его код должен находиться в папке /wwwroot/WebReportDesigner/. В данный момент там находится заглушка в виде файла index.html. Если у вас возникнет желание попробовать тестовый вариант FastReport Online Designer в этом или любом другом проекте, то вам необходимо написать соответствующий запрос в службу техподдержки компании Fast Reports support@fastreport.ru
Таким образом, редактирование будет доступно из любого современного браузера на любой платформе (включая планшеты, фаблеты и т.д.)
Нюансы
- Нужно использовать идентичные шрифты в системе, где ведется разработка шаблонов отчётов и на сервере (или веб-приложении, если используются шрифты приложения) – это позволит избежать проблем с внешним видом веб-отчётов и PDF документов;
- При работе с Astra Linux в консоли системы виртуализации Hyper-V интерфейс довольно сильно тормозит – лучше установить VNC или настроить x-server на хостовом компьютере (например Xming);
- Если есть необходимость запустить тестовое приложение под управлением .NET Core 2.2, то тестовый пример можно найти в папке ~/FastReportSamples/PostgreSQL/dotnet-core-2.2;
- Есть возможность разработки не только веб-приложений, но и консольных программ — это позволит строить отчёты в PDF (и других форматах) путем вызова таких программ из других приложений;
- Если вам нужна работа с отчётами в графическом интерфейсе Linux, то следует воспользоваться библиотекой FastReport Mono, так как поддержки интерфейса Linux в .NET 5 пока нет.
Подведем итоги
- У нас есть возможность разработки полноценного веб-приложения на платформе .NET 5 под управлением операционной системы Astra Linux;
- FastReport работает в связке с PostgreSQL;
- Продукты семейства FastReport могут работать в кросс-платформенных решениях и объединять в инфраструктуре разные платформы;
- Библиотеки Fast Reports имеют варианты поставки в комплекте с исходными кодами, что делает возможной последующую сертификацию.