exponenta event banner

Функции, зависящие от состояния

Код MATLAB ®, который требуется развернуть, часто содержит состояние - определенное значение данных в программе или переменной программы.

Переносит ли моя функция MATLAB состояние?

Пример состояния переноса в программе MATLAB включает, но не ограничивается:

  • Изменение или использование пути MATLAB и пути класса Java ®

  • Доступ к состоянию MATLAB, которое по своей природе является постоянным или глобальным. Некоторые примеры этого включают в себя:

    • Начальные числа случайных чисел

    • Обработка корневых объектов Graphics ®, сохраняющих данные

    • Параметры и установки панели инструментов MATLAB или MATLAB

  • Создание глобальных и постоянных переменных.

  • Загрузка объектов MATLAB (классов MATLAB) в MATLAB. При любом доступе к объекту MATLAB он загружается в MATLAB.

  • Вызов MEX-файлов, методов Java или методов C #, содержащих статические переменные.

Защитные методы кодирования

Если функция MATLAB не только несет состояние, но и полагается на него для правильного выполнения, необходимо предпринять дополнительные шаги (перечисленные в этом разделе) для обеспечения сохранения состояния.

При развертывании приложения рассмотрите случаи, когда вы несете состояние, и при необходимости защитите его от повреждения. Предположим, что ваше состояние может быть изменено и код защищен от этого условия.

Ниже приведены примеры практики «защитного кодирования»:

Сброс системных значений в развернутом приложении

Например, если используется начальное число случайных чисел, сбросьте его в развернутой прикладной программе, чтобы обеспечить целостность исходной функции MATLAB.

Проверка глобальных или постоянных значений переменных

Если необходимо использовать глобальные или постоянные переменные, всегда проверяйте их значение в развернутом приложении и при необходимости сбрасывайте.

Обеспечение доступа к кэшу данных

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

Использовать простые типы данных, когда это возможно

Простые типы данных обычно не привязаны к определенному приложению и средству сохранения состояния. По мере того как типы данных становятся менее сложными и специфичными, возможности выбора соответствующего инструмента сохранения состояния возрастают.

Избегайте использования функций обратного вызова MATLAB

Избегайте использования обратных вызовов MATLAB, таких как timer. Функции обратного вызова позволяют прерывать и переопределять текущее состояние рабочего Server™ MATLAB Production и могут давать непредсказуемые результаты в многопользовательских средах.

Методы сохранения состояния

Наиболее подходящий метод сохранения состояния во многом зависит от типа данных, которые необходимо сохранить.

  • Базы данных обеспечивают наиболее универсальные и масштабируемые средства для хранения данных с данными о состоянии. База данных действует как универсальный репозиторий и, как правило, может работать с любым приложением в среде разработки предприятия. Он не накладывает требований или ограничений на структуру или формат данных. Другой связанный метод заключается в использовании файлов с разделителями-запятыми в таких приложениях, как Microsoft ® Excel ®.

  • Данные, специфичные для стороннего языка программирования, например, Java и C #, могут быть сохранены с использованием ряда методов. Ознакомьтесь с онлайн-документацией соответствующего стороннего поставщика для получения информации о передовых практиках сохранения состояния.

Внимание

Использование MATLAB LOAD и SAVE функции часто используются для сохранения состояния в приложениях и рабочих областях MATLAB. Хотя в некоторых случаях это может быть успешным, настоятельно рекомендуется при необходимости проверить и сбросить данные, если они не хранятся в универсальном репозитории, таком как база данных.