Моно - это платформа разработки с открытым исходным кодом на основе .NET Framework, позволяет разработчикам создавать кросс-платформенные приложения. Реализация Mono .NET основана на стандартах ECMA для C # и Common Language Infrastructure.
Разработанный компанией Novell, Xamarin, а теперь Microsoft и .NET Foundation, проект Mono имеет активное и энтузиастское сообщество. Mono включает как инструменты разработчика, так и инфраструктуру, необходимую для запуска клиентских и серверных приложений .NET.
Платформа Mono состоит из нескольких компонентов:
Компилятор C # - поддерживает C # стандарта 1.0, 2.0, 3.0, 4.0, 5.0 и 6.0 (ECMA).
Mono Runtime - среда выполнения ECMA Common Language Infrastructure (CLI). Среда исполнения предоставляет компилятор Just-in-Time (JIT), компилятор Ahead-of-Time (AOT), загрузчик библиотек, сборщик мусора и др.
Библиотека классов .NET Framework. Платформа Mono предоставляет реализацию библиотек WinForms, ADO.Net, ASP.Net и других.
Mono Class Library – было создано множество классов с дополнительной функциональностью специально для Mono, которые выходят за рамки библиотеки базового класса, предоставляемой Microsoft.
Несмотря на предвзятое отношение разработчиков к платформе Mono, многие известные компании используют его. Например:
- Novell использует Mono для клиентских и серверных приложений;
- Unity Technologies использует Mono в инструменте моделирования компьютерных игр Unity 3D. Это дает возможность создавать кросс-платформенные видеоигры;
- Artisteer использует Mono для переноса своего веб дизайнера на другую платформу. Начиная с версии 2.2, можно запустить свое программное обеспечение с помощью Mono.
Так как кросс-платформенных генераторов не так уж и много, а действительно хороших, так вообще по пальцам посчитать можно, FastReports решила создать генератор отчетов для Mono. Тем более, что уже есть готовый популярный генератор отчетов FastReport.Net, на базе которого и был создан FastReport.Mono. Он появился в 2013 году, и на тот момент повторял функционал FastReport.Net. Однако сейчас, между ними есть различия. Что уж таить, FR.Net значительно продвинулся вперед. Тем не менее FastReport.Mono остается сильным конкурентом в своей нише. И лично я не знаю других генераторов отчетов под фреймворк Mono с таким богатым функционалом.
Что же предлагает FastReport.Mono?
- Удобный и функциональный дизайнер отчетов;
- Подключение к любой БД, и не только. Даже текстовые файлы могут быть источниками данных, не говоря уже об XML и JSON;
- Наличие встроенного скрипта отчета. Что наделяет отчет огромными возможностями. Ведь вы можете использовать библиотеки Mono прямо в отчете, для произведения преобразований данных, а также работать с объектами отчета;
- Веб отчеты, на основе ASP.Net;
Давайте рассмотрим детальнее. Итак, с FastReport.Mono можно работать в разных операционных системах. Ну конечно же, Mono кросс-платформенный фреймворк. Поэтому нам доступны системы: Windows, MacOs, семейство Linux.
Для работы с Mono, а соответственно и с FastReport.Mono подходят следующие среды разработки:
Microsoft Visual Studio (под Windows), MonoDevelop (Windows, MacOs, Linux) и Embarcadero Delphi Prism (Windows, MacOs, Linux).
Языки программирования, для работы с FR.Mono: C#, VB.Net, Oxygene (Embarcadero Delphi Prism).
Язык встроенного скрипта отчета: C#, VB.Net. Все также, как и в FastReport.Net.
Источники данных, доступные по умолчанию: XML, CSV. А для подключения к базам данных нужно использовать источник данных пользовательского приложения, или внешние коннекторы, устанавливаемые в систему.
Интересные особенности генератора отчетов:
- диалоговые формы – перед отображением отчета можно вывести форму с элементами управления. Таким образом пользователь отчета может задать параметры отображения отчета. Например, отфильтровать нужные значения;
- наследование отчетов – возможность использовать отчет как базовый шаблон для других. Это удобно, когда вы делаете много подобных отчетов. Кроме того, изменения в базовом отчете отобразятся во всех наследованных отчетах. Это тоже можно отнести к плюсам. Ведь не нужно изменять большое количество отчетов, если требуются правки базового шаблона;
- Компонент предварительного просмотра отчета – позволяет просматривать отчет и делать его экспорт, отправлять email, а также управлять просмотром отображая план отчета, переходить между страницами;
- Дизайнер отчета может быть вызван отдельно как самостоятельная программа, может быть вызван во время разработки пользовательского приложения, а также во время выполнения пользовательского приложения. Последний вариант очень интересен. По сути вы встраиваете дизайнер в свою программу и даете пользователю возможность редактировать отчеты самостоятельно.
- Продвинутый режим печати – еще один продуманный инструмент. Настройки печати очень богатые.
Веб отчеты реализуются посредством технологии ASP.Net и ASP.Net MVC. Что тут сказать - современный и востребованный подход.
Список возможных экспортов отчета достаточно большой:
- Acrobat PDF;
- Images Jpeg/PNG/BMP/GIF/TIFF;
- RichText;
- Word OOXML (docx);
- PowerPoint OOXML (pptx);
- HTML;
- MHT (web archive);
- Microsoft XPS;
- Excel OLE;
- Excel XML;
- Excel binary (xls);
- Excel OOXML (xlsx);
- Comma separated values (CSV);
- DBF (table);
- Open Document Speadsheet (OpenOffice);
- Open Document Text (OpenOffice);
- Email;
- PostScript;
- Json;
- LaTex;
- FTP;
- Text File / Matrix Printer;
- Clouds (DropBox);
- Clouds (Box);
- Clouds (FastReport Cloud);
- Clouds (GoogleDrive);
- Clouds (OneDrive).
Обратите внимание, последние элементы списка – Clouds – это по сути сохранение отчета в облачные сервисы.
Формат файла отчета – frx, такой же, как и в FastReport.Net. Да, собственно, отчеты совместимы между FR.Net и FR.Mono.
Разработчики, выбирая логотип для FastReport.Mono, проявили остроумие. Судите сами. Вот логотип платформы Mono:
А вот логотип FastReport.Mono:
В заключение хочу отметить, что перенос FastReport.Net на платформу Mono, было стратегически верным решением. Сейчас это актуально как никогда, в контексте «Импортозамещения» и «Гослинукса».