Зависящие от состояния функции

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

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

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

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

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

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

    • Дескриптивная графика® корневые объекты, которые сохраняют данные

    • Настройки и настройки MATLAB или MATLAB тулбокса

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

  • Загрузка объектов MATLAB (классов MATLAB) в MATLAB. Если вы получаете доступ к объекту MATLAB каким-либо образом, он загружается в MATLAB.

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

Методы защитного кодирования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внимание

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