Преимущество для “.app” файла в Erlang?

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

7
задан jldupont 28 November 2009 в 21:22
поделиться

2 ответа

The *.app along with the *.rel file is used to generate boot scripts. A boot script is used to automatically launch my application when erlang is started up. An application resource file describes what applications need to be running before my application can be launched. For instance, if I use mnesia and indicate that in the .app file for my application, when I generate a boot script and use it to start my application it will start mnesia for me when starting my own application.

While you may get automatic dependency installation/handling with other package managers the boot script is useful for managing dependencies in the startup of your application which is important in an OTP application setup.

note: applications in otp refers to a bundle of running processes and/or code. applications can depend on other applications in a number of ways. Either they require the code to be installed or they require the application to be running.

11
ответ дан 6 December 2019 в 10:00
поделиться

Они используются при сборке выпусков (с * .rel для генерации сценариев загрузки). Я рекомендую просто начать с файла * .app и обратного вызова поведения приложения. Что касается запуска с OTP. Это хороший вариант при разработке:

-module(foo).
-export([start/0]).
start() ->
    [application:start(A) || A <- [sasl, inets, x, y, etc]].

запустить все приложения, которые должны запускаться для вашего приложения, с помощью простого

$ erl -s foo
  • . Если ваш проект будет использоваться в качестве службы или фреймворка для других проектов, другой Преимущество заключается в том, что эти приложения Erlang, в свою очередь, могут зависеть от вашего приложения или включать его. Приложение Erlang - это единица, в которой предоставляются службы и даже библиотеки (stdlib - это библиотека, без "движущихся частей", только библиотечные модули).
  • Приложение на Erlang дает вам простой способ передать параметры конфигурации вашему приложению . Когда вы передаете -mnesia dir '"/ some / path"' в erl, приложение mnesia обращается к нему как application: get_env (mnesia, dir) . Если вы определяете приложение с именем foo , вы можете передать -foo ключ 'some-Erlang-literal' в erl. Файл * .app может содержать значения по умолчанию в разделе env , файл * .rel переопределяет их, а командная строка переопределяет это.
  • В файле * .app есть разделы, в которых вы перечисляете модули и зарегистрированные процессы, которые вводит ваше приложение. Это используется при построении выпусков для проверки отсутствия конфликтов между приложениями.

Некоторые дополнительные функции приложений Erlang, которые я плохо знаю:

  • Фазы запуска. Используется для приложений, требующих сложных запусков, таких как «частично работающие» в течение некоторого времени.
  • Распределенные приложения. Используется для определения того, где приложение должно запускаться в кластере.
  • Takeover. Используется для освобождения машины от распределенного приложения, например, если он нуждается в обслуживании или обновлении.

В конце концов, вы начнете хотеть запускать набор приложений более структурированным образом, и именно тогда весь сценарий выпуска / загрузки станет более понятным. Или, наоборот, вы подумаете, что это избыточно для ваших конкретных нужд. Просто начните с простого * .app и модуля с обратными вызовами поведения приложения. Ты не оглянешься назад.

8
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: