Общая информация о среде

From SunFlurry wiki
Jump to: navigation, search

Система SunFlurry в обычном варианте исполнения (как учетная система организации) состоит из модулей, показанных на рисунке 1. Ниже дано более подробное описание каждого из модулей.

Студия (среда разработки)

Студия (Studio) -- основная программа разработчика использует понятие "проект" для описания определенной конфигурации данных, набора модулей и форм. Студия не оперирует фактическими данными, а создает и изменяет метаданные (структуру). В понятие метаданные входит:

  • Основные установки проекта, его название, идентификатор, информация о нем и пр.
  • Набор установок таблиц и полей базы данных, представляющих конфигурацию базы данных на серверах баз данных. К примеру, таблица, отвечающая за документ имеет набор полей со своими наименованиями и свойствами, которые будут созданы с базе данных и будут содержать реальные данные.
  • Файловая структура папок, позволяющая разработчику удобнее работать с метаданными. Все объекты базы данных (такие как справочники, документы и пр.) располагаются в системе папок, для удобства разработчика.
  • Набор исходных текстов -- модулей. Разработчик использует модули для хранения функций и фрагментов программы, которые будут вызваны в процессе работы пользователя или консольного клиента. На сервере, кроме тестовых модулей, присутствуют также скомпилированные бинарные файлы, использующиеся для ускорения работы клиентов.
  • Набор визуальных форм, описывающих интерфейс работы клиентов с системой. Студия позволяет визуально редактировать формы (добавлять элементы, типа кнопок, таблиц и пр., и изменять их свойства), и также задавать программные события для визуальных элементов (к примеру, действие при нажатии на кнопку). На сервере, кроме обычных форм, присутствуют также скомпилированные бинарные файлы форм, использующиеся для ускорения работы клиентов.
  • Набор электронных таблиц. Такие таблицы чаще всего используются в клиенте как шаблоны для создания отчетов и печатных форм, они содержат части отчетов из которых программа клиент конструирует целые отчеты по требованию пользователей.
  • Дополнительные бинарные и текстовые файлы (в том числе исполняемые) могут быть импортированы внутрь проекта, если программа использует их в процессе работы.
  • Другие метаданные, такие как библиотека картинок, набор связанных элементов-кнопок, конфигурация меню программы клиента, настройки панелей инструментов программы клиента, и пр.

Студия не только позволяет разрабатывать проекты, изменяя метаданные, но и выполняет компиляцию этих метаданных в бинарные файлы для более быстрого исполнения на клиентских машинах, а также содержит список серверов баз данных, задаваемый разработчиком. После обновления метаданных и компиляции, разработчик может выполнить обмен с одним или несколькими серверами базы данных, выгрузить произведенные изменения на эти серверы, с тем, чтобы изменения были применены на реальных данных и пользователи получили возможность работать с измененными данными. Во время применении изменений на сервере, текущим пользователям необходимо будет временно прекратить работу с клиентом, но только если изменения модифицируют структуру базы данных; при изменениях в модулях, формах, таблицах и пр., пользователи не будут затронуты процессом обновления информации на сервере. Для получения более подробной информации см. следующую статью.

Студия предоставляет удобные возможности для развертывания обновлений как сервера базы данных, так и визуального и консольного клиентов. Новые версии программ автоматически попадают на сервер при обмене и далее передаются с сервера на клиентские машины в момент входа в систему пользователями. Процесс удобен тем, что он не затрагивает работающих в данных момент пользователей (если, конечно, это не обновление исполняемых файлов самого сервера).

Сервер базы данных

Сервер базы данных является отдельной программой, доступной с помощью TCP/IP соединения, по которому он получает запросы и от клиентов. Сервер транслирует эти запросы в SQL язык, передает SQL серверу для обработки и возвращает ответ клиентам. Кроме запросов к базе данных, сервер также:

  • Предоставляет клиентам доступ к метаданным: файлу структуры данных, модулям, формам, таблицам или другим файлам метаданных.
  • Хранит промежуточные переменные пользовательских программ.
  • Блокирует таблицы и объекты, накапливает и передает информацию о таких блокировках.
  • Клиентам с административными правами позволяет просматривать и редактировать учетные записи пользователей.
  • Осуществляет контроль за синхронизацией между метаданными и структурой данных SQL сервера.
  • Выполняет обмен информацией со Студией, получает обновления метаданных, измененные модули, формы, таблицы и пр.
  • Осуществляет контроль за целостностью данных в базе данных сервера SQL.
  • Получает от клиентов и хранит подробную информацию о фатальных ошибках внутри программ клиентов, информация может потребоваться для исправления ошибок в коде.
  • Выполняет другие важные задачи.

Сервер состоит из исполняемого файла и библиотеки, осуществляющей подключение к SQL серверу (либо к другой библиотеке в случае SQLite), поэтому при изменении типа SQL сервера, необходимо также сменить тип используемой библиотеки подключения к нему. Сервер обычно не оперирует большим объемом памяти, поэтому, его удобно располагать на той же машине, на которой работает SQL сервер (исключение составляют связки типа SQLite), если же систему использует большое количество пользователей, в момент, когда они одновременно формируют ёмкие запросы (отчеты), может получиться ситуация, когда серверу (временно) будет необходимо большое количество памяти. В случае, если такие ситуации возможны, необходимо использовать 64-битную версию сервера и увеличить количество памяти на машине, где он работает (если это необходимо). Для получения более подробной информации см. следующую статью. Ниже дана диаграмма взаимоотношений сервера с другими программами.

Визуальный клиент

Визуальный клиент является основным инструментом пользователей и администраторов для работы с системой. Клиент представляет собой программу с удобным и простым интерфейсом. Ниже перечислены некоторые особенности клиента.

  • Многозадачность, встроенная в язык системы, позволяет пользователям работать одновременно с несколькими потоками. Пока один поток занят формированием отчета, пользователь продолжает работу с системой в другом потоке. Интерфейс группирует печатные формы разных потоков, упрощая работу.
  • Быстрый поиск по столбцам таблиц позволяет операторам накладывать несколько фильтров на таблицу быстрым и естественный образом.
  • Сохранение настроек форм вплоть до последнего позиционированного элемента, а также хранение списка настроек, помогает ускорить выполнение ежедневных операций.
  • Встроенные электронные таблицы обладают рядом возможностей при печати, недоступных другим программам (неразрывные регионы, размещение на одной странице с учетом разрывов страниц, повторяющиеся столбцы или строки и пр.), имеют возможности выбора цветовых тем и пр.
  • Журнал регистрации событий доступен как отдельный отчет и из любого элемента справочника или документа (может зависеть от проекта).
  • Информация по блокировкам объектов базы данных доступна в виде единой таблицы, при попытке открыть объект, заблокированный другим пользователем система предоставляет полную информацию о том, кто заблокировал этот объект.
  • Попытка отмены исполнения операции пользователем не приводит к несогласованному состоянию данных (конструкции Finally ... EndTry будут выполнены до завершения исполнения). Пользователь не стеснен в возможностях и не может неверными действиями навредить данным.
  • Администраторам доступен весь спектр инструментов управления непосредственно из клиента:
    • Полная информация о текущих пользователях и собранная по ним статистика в режиме реального времени (объем полученной или отданной информации, количество и время запросов к серверу и пр.)
    • Работа с учетными записями пользователей. Учетные записи могут быть связаны с учетными записями контроллера домена (NTLM) или могут быть введены вручную.
    • Возможность исполнить произвольный фрагмент кода позволяет быстро справляться с нестандартными ситуациями в процессе сопровождения системы.
    • Система содержит отчеты по накопителям, информацию по физическому объему различных таблиц базы данных и пр., позволяющих контролировать различные важные параметры базы данных.
    • Встроенный отладчик и профайлер позволяет исправить ошибки в программах и оптимизировать их выполнение непосредственно в момент их возникновения.
    • Если в клиенте в процессе работы обнаружена системная ошибка (исключение, зависание и пр.), он автоматически сохранит всю техническую информацию по исключению (с помощью встроенного регистратора исключений), после чего информация передается на сервер базы данных и разработчик системы может исправить некорректную ситуацию в дальнейшем.
  • Клиент обладает большим количеством оптимизаций и обдуманных мелочей для работы пользователей, поэтому работать с ним можно удобно и быстро. Описывать в таком списке все особенности не имеет смысла. Для более подробной информации, см. статьи по клиентской части (Общая информация о консольном и визуальном клиентах и пр.) и проекту "Торговля и производство".

Консольный клиент

Консольный клиент предназначен для выполнения серверной работы (т.е., работы, в которой не участвует оператор). Если серверная работа требует большого времени выполнения и может быть разделена на отдельные рабочие потоки (к примеру, при ответах на Web-запросы), консольных клиентов может быть запущено несколько для распределения нагрузки между ними. Консольный клиент может быть установлен как сервис для осуществления бесперебойной деятельности на машинах без необходимости участия администраторов. Консольный клиент обладает всеми программными возможностями визуальных клиентов, однако, формы в нем не используются. Клиент может быть применен для:

  • Выполнения заданий проекта по расписанию (отправка файлов обмена торговым партнерам, пересчет себестоимости и пр.)
  • Как сервер и клиент автоматического обмена информацией между базами (к примеру, между центральной базой и периферийными и пр.)
  • Сервер Web-решений (как система, генерирующая Web-страницы на основе входящих запросов и данных БД)
  • Промежуточный сервер Web-решений (как система, отвечающая на запросы в формате xml или json, используя базу данных для хранения информации, см. пример)
  • Как сервер печати для удаленный клиентов, работающих с помощью сервера терминалов в Интернет (создан соответствующий проект).
  • Для осуществления автоматической загрузки цен в торговое оборудование (весы, кассы и пр.)
  • Для автоматической синхронизации данных с производственным оборудованием (станки и пр.)
  • Для многих других областей деятельности.

Текущие издания, версии и прочая информация

Система успешно работает как с x86, так и с x64 архитектурой, с несколькими видами СУБД. В данный момент она используется только в нескольких организациях, ограничивая область применения и являясь сдерживающим фактором для портирования системы для других операционных систем и СУБД. При необходимости, такое портирование может выполнить разработчик системы. Расширения применимых СУБД для серверной части является более простой задачей, чем портирование клиента под другие архитектуры и ОС. В таблице, данной ниже, перечислены текущие требования и возможности каждого из компонентов системы:

Имя компоненты Версия x86 x64 Windows Другие ОС Комментарии
Студия 1.0 Да Нет Да (Windows 2000 и старше) Нет x64 версия пока не планируется, так как отсутствует необходимость в увеличении количества памяти, предоставляемой Студии. Создание такой версии не представляет трудности.
Визуальный клиент 1.1 Да Да Да (Windows 2000 и старше) Нет Версии под другие ОС находятся под рассмотрением (на данный момент отсутствует необходимость). Создание таких версий может занять некоторое время.
Консольный клиент 1.1 Да Да Да (Windows 2000 и старше) Нет Версии под другие ОС находятся под рассмотрением (на данный момент отсутствует необходимость). Создание таких версий не является сложной задачей.
Сервер базы данных 1.1 Да Да Да (Windows 2000 и старше) Нет Версии под другие ОС находятся под рассмотрением (на данный момент отсутствует необходимость). Создание таких версий не является сложной задачей.

Работа 32-битных клиентов с 64-битным сервером базы данных допускается. Архитектура или операционная система, под которой работает клиент, никак не влияет на требования к архитектуре или операционной системе сервера. Сервер базы данных поддерживает следующие типы систем управления БД:

  • MS SQL 2000 и старше (в т.ч. Express версии). Рекомендуется использование MS SQL 2005 или старше (из-за накопления замедления при создании временных таблиц у MS SQL 2000).
  • SQLite3.dll. Сервер будет использовать библиотеку SQLite, которая позволяет хранить базу данных в заданном файле на диске, при этом, установка дополнительного ПО для работы с БД не требуется. Библиотека загружается в память совместно с сервером и использует память для нужд создания буфера данных и таблиц, поэтому, из-за ограниченности адресного пространства в 32-битной версии, для больших баз данных желательно использование 64-битной версии сервера. Обладая меньшей масштабируемостью, такая конфигурация, однако, не требует лицензирования стороннего серверного ПО и может использоваться, к примеру, для работы небольших автономных центров, которые производят обмен с центральной базой данных.
  • PostgreSQL (9.2 и старше). Бесплатная СУБД, позиционируемая как альтернатива коммерческим СУБД типа MS SQL. Может использоваться для организаций произвольной величины, обладает хорошим функционалом, высокой скоростью записи, сравнимой с MS SQL, хорошей скоростью выполнения запросов, высокой точностью чисел, быстрым резервным копированием.
  • MariaDB (10.4.5 и старше) или MySQL (5.7 и старше). Бесплатные СУБД, обычно используются для Web-приложений. Скорость записи (сохранения данных, обработки документов) при работы с этими СУБД заметно ниже чем для баз на MS SQL или SQLite, однако, в отличие от SQLite, они работают с более точными числами (см. сл. статью), и, в отличие от MS SQL, бесплатны. Рекомендуется использование СУБД для проектов, где запись происходит редко а чтение часто, либо не сильно важна скорость записи, однако, применение быстрых накопителей может существенно увеличить скорость записи.

Интересные факты, связанных с системой

  • Общее количество функций, описанных в данной документации (с учетом псевдонимов): 1,614 (см. Functions and properties). Документация постоянно дополняется новыми функциями, исправляются уже существующие описания и примеры.
  • Общий размер исходных текстов системы (за исключением дополнительных утилит, тестов и прочего, на декабрь 2020 года): около 17Мб, программный код размещен на 503 тыс. строках текста.
  • Общий размер исходных текстов проекта "Торговля и производство" (на январь 2021 года): около 5.2 млн. символов, размещенных на 120 тыс. строках текста.
  • Система содержит большое количество оптимизаций для того, чтобы обработки системы работали быстро для любых задач. Не все оптимизации, однако, работают автоматически. Использование некоторых оптимизаций остается на усмотрение разработчика. Статья Оптимизация отчетов и обработок собирает основные из этих оптимизаций в одну таблицу.
  • Для демонстрации некоторых возможностей системы при работе с веб-страницами, в данную документацию добавлены три демонстрации: демонстрация функций генерации штрихкодов и 2D символов, демонстрация исполнения программного кода с веб-страницы и вывода результата на нее, и защита от внешних атак (работающая для обеих демонстраций), выполненная с помощью теста Captcha, описание которой ищите в статье Онлайн демонстрации.