2012-05-08 2 views
2

Я разработчик Windows (с некоторым опытом IOS Objective-C), и я очень стараюсь выбрать правильный язык, чтобы сделать довольно простой демон для MacOS.Каковы мои языковые варианты для создания демона MacOS?

Приложение будет загружать и выгружать файлы, обмениваясь данными с нашими веб-службами .NET, которые уже существуют.

Установка будет производиться нетехническими ежедневными пользователями, поэтому попросить их сделать много настроек/сценариев на их конце не является вариантом. Обязательным является пакет.

Я вижу, мой выбор, как:

  1. Objective-C
  2. Java
  3. Mono
  4. Scripting

Objective-C имеет то преимущество, что он является родным, но я не самый сильный с этим языком.

Java очень прост, но все ли у него есть пользователи? Это будет проблема с просьбой установить его?

Моно позволит мне использовать мои навыки .NET, но будет ли он элегантно устанавливать как демон?

Scripting может быть вариантом, поскольку это очень просто, что приложение должно делать, но является ли это нормой, чтобы доставить такой продукт?

-

EDIT

Там не будет никакого графического пользовательского интерфейса. Я в порядке, не скрывая код, хотя UID/PWD будет необходим для доступа к веб-сервисам (разные для каждого клиента). Он всегда будет работать для всех клиентов.

+0

Будет ли это безликим фоновым демоном (так что вообще нет GUI) или вы думаете о чем-то вроде меню Extra, которое у пользователя будет иметь некоторый контроль? Будет ли он работать всегда для всех пользователей или в контексте сеанса входа в один пользователь? Как секрет, вы хотите сохранить код демона (который может исключить язык сценариев)? И какие варианты вы рассматриваете для метода установки (файл установщика '.pkg', приложение, которое будет установлено при первом запуске, перетаскивании и т. Д.)? – morgant

+0

еще один выбор, который вы не указали, был простой старый C или C++, и вы можете вызывать функции MacOS с использованием основы Core Foundation и API. –

+0

Посмотрите здесь: http://en.wikipedia.org/wiki/List_of_programming_languages –

ответ

3

Объектив-C/Cocoa или C (особенно с использованием Core Foundation), безусловно, даст вам самую оригинальную реализацию с преимуществами интеграции производительности и ОС.

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

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

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

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

Для установки пользователи Mac используются для двух способов установки: установка через файл установщика .pkg, который пользователь дважды кликает, а затем переносится через процесс установки или перетаскивает приложение в папку «Приложения» и дважды щелкает запуск. Как разработчик, первый дает вам большой контроль над текстом README/license, работает pre- пост-полевых сценариев, создает метапакеты для установки одного или нескольких пакетов (как упоминалось выше: возможно, включая Mono runtimes прямо в вашем собственный установщик), а также дает пользователю OS & возможность видеть, какие файлы будут установлены, где и когда (после установки), если они того пожелают. В качестве альтернативы, многие демоны будут реальными приложениями Mac OS X, которые затем будут установлены в качестве фоновых процессов при первом запуске. Первый будет независим от вашего выбора языка, но последний будет склоняться к реализации Objective-C/Cocoa.

Это подводит меня к руководству. Большинство демонов захотят пройти через launched как LaunchDaemon (для всех пользователей, обычно запускаемых при загрузке) или LaunchAgent (для определенных пользователей, обычно запускаемых при входе в систему). Если вы хорошо интегрируетесь с launched, все будут счастливее и должны быть работоспособными в любом из ваших вариантов языка.

Возникает вопрос, будет ли пользователь вообще управлять демоном? Если это так, это чаще всего реализуется либо как MenuExtra, либо панель предпочтений. В любом случае демон может быть разработан на любом языке и контролироваться (например, через launched) с помощью панели MenuExtra/Preference, но в некоторых случаях MenuExtra действительно может функционировать как демон и поэтому вы хотите разработать в Objective- С/какао.

См. Также: Документация от Apple Designing Daemons & Services.

2

Objective-C - лучшая ставка, родная, самая быстрая и подходящая для демона, в противном случае вы можете разработать ее на Java 6, которая уже установлена ​​в Mac OS X, хотя ее было бы не так просто установить демон.

Мой совет пойти с Objective-C или простой C ...

Однако, если вы привыкли работать с .NET вы можете установить и использовать моно mono-service, чтобы запустить службу в качестве демона, даже на OS X, но в этом случае пользователи должны установить моно на своей машине, поэтому, если вы можете справиться с этим компромиссом, это может быть жизнеспособным решением.

Смежные вопросы