Prognoz Platform: от кофеварки до суперкомпьютеров

Блог Форсайт

На протяжении последних десяти-пятнадцати лет в мире растет интерес к переходу на свободное программное обеспечение (СПО). Что же для этого может предложить Prognoz Platform?

С 2001 года началось массовое использование СПО в государственном секторе — сначала в Германии, затем в Австрии, Франции, Бельгии, Норвегии, Дании, Венгрии, некоторых муниципальных образованиях США, Малайзии, Индии, Бразилии, Китае. В 2007 году этот вопрос был впервые поднят в России. Сегодня периодически появляются новости о разработках национальной операционной системы, национального поисковика, даже основной вендор на рынке операционных систем компания Microsoft открывает исходные коды своих флагманских технологий .NET, ASP.NET для возможности запуска приложений, разработанных для Windows под другими операционными системами (ОС), в том числе и Linux.

Prognoz Platform, начиная с версии 8.0, тоже можно установить и на Linux.

Возможности платформы под Linux

На текущий момент кроссплатформенное ядро позволяет запускать Prognoz Platform на следующих ОС с ядром Linux:

  • Red Hat Enterprise Linus 6 и выше;
  • Ubuntu 12.04 Precise Pangolin и выше;
  • Debian 6 Squeeze и выше;
  • Astra Linux Special Edition 1.3 и выше.

Под указанными системами доступен следующий функционал версии Prognoz Platform из Windows:

  • Аналитические панели;
  • Отчеты;
  • Аналитические запросы (OLAP);
  • Анализ временных рядов;
  • Моделирование и прогнозирование;
  • Поддержка внутреннего языка Fore.

Поддерживаемые СУБД:

  • Oracle Database 9 и выше;
  • PostgreSQL 8 и выше;
  • Teradata.

Поддерживается экспорт в форматы:

  • .xls
  • .xlsx
  • .pdf
  • .rtf
  • .emf
  • .html

Техническая часть

Группа, в которой я работаю, занимается доработкой ядра Prognoz Platform для возможности ее запуска на Unix-подобных ОС и процессорах, отличных от Intel x86. Основная наша задача — минимальные изменения исходного кода оригинальной Windows-ветки. При разработке мы используем следующие инструменты:

  • компилятор GCC версии 4.7;
  • система сборок CMake8;
  • среда разработки Eclipse CTD;
  • система контроля версий TFS;
  • гипервизор Hyper-V.

Выбор GCC 4.7 связан с необходимостью поддержки сертифицированной для специальных нужд ОС на базе ядра Linux (Astra Linux SE). Это позволяет нам минимизировать ошибки сборки Prognoz Platform для этой ОС и официально поддерживаемых Linux дистрибутивов. Для Eclipse есть официальный плагин для доступа к TFS, а CMake умеет генерировать проекты для Eclipse. Hyper-V активно используется при разработке Windows-версий платформы. В последних версиях ядер Linux драйверы для поддержки сети, мыши, управления памятью идут из коробки.

Prognoz Platform под Linux состоит из двух частей:

  • web-сервисы;
  • стандартное web-приложение.

Кроссплатформенное ядро написано на C++ и представляет собой набор динамических библиотек (в форме so), загружаемых в процессе обработки SOAP-запросов веб-сервером Apache HTTPD c помощью модуля mod_axis2.

На этапе переноса ядра нами были реализованы:

  • GDI/GDI+;
  • COM;
  • часть WinAPI функций;
  • msxml.

GDI/GDI+

Вызовы GDI+ функций/методов транслируются в вызовы методов библиотеки QT. Много работы проделано для соответствия шрифтов (anti-aliasing, hinting и т. п.).

COM

С++ поддерживает COM (https://ru.wikipedia.org/wiki/Component_Object_Model) естественным образом. Структура COM-объекта в памяти такая же, как у C++ объекта. Что нам нужно было реализовать:

• DllGetClassObject – поиск фабрики класса по GUID. Ведется глобальная мапа GUID -> so; • функции работы с типом variant, safearray; • все используемые темплейты (смарт-поинтеры и др.), макросы, базовые классы ActiveX Template Library; • что-то придумать с расширениями синтаксиса, uuidof, property и др. без массовых правок исходников; • парсинг библиотек типов (tlb) и реализация IDispatch (http://en.wikipedia.org/wiki/IDispatch). WinAPI

В платформе используются следующие функции WinAPI:

  • реестр;
  • файлы;
  • локали;
  • строки;
  • кодировки;
  • память;
  • дата-время;
  • системный журнал;
  • потоки-процессы-синхронизация и др.

Часть транслируется в соответствующие POSIX аналоги, часть написаны с нуля.

MSXML

Мы реализовали интерфейсы MSXML (IXMLDOMDocument и др.) на основе библиотеки Xerces.

В планах на будущее – расширение линейки поддерживаемых дистрибутивов и поддержка платформ, отличных от x86.

В заключение

Мир меняется, системы становятся все более гетерогенными. Мы открываем новые возможности для своих клиентов, такие как портирование существующих проектов на СПО и разработка совершенно новых кроссплатформенных решений. Пока запустить Prognoz Platform на кофеварке не получится, но важные шаги в этом направлении уже сделаны 🙂

Комментарии

Email не будет опубликован.
Подробнее о политике использования персональных данных