Какой лучший кроссплатформенный подход (Windows / Mac) для развертывания простого сервиса / демона (с простым пользовательским интерфейсом) - PullRequest
4 голосов
/ 15 сентября 2009

Я запутался в связи с набором вариантов разработки и развертывания простого кода и пользовательского интерфейса для Windows и Mac. Может ли кто-нибудь помочь в правильном направлении здесь. Мне действительно нравится Ruby, но если имеет смысл отойти от этого (например, Java, C #), то пусть будет так. Какой вариант развития люди предложат для этого?

ТРЕБОВАНИЯ 1. Поддержка Windows и Mac 2. Установка должна быть в один клик и максимально упаковать все необходимые зависимости. 3. Требуется возможность планирования - либо через (а) установленную как сервис / демон, либо (б) возможность установки для планирования периодического вызова скрипта (предпочтительнее первый) 4. Требуется функциональный компонент - возможность доступа / разбора веб-сайтов, а затем возможность делать HTTP (S) вызовы на мой сайт для хранения проанализированных данных. Так что тя на HTTP (S) методы. В приложении требуется поддержка прокси, поэтому пользователь может ввести хост / порт / имя пользователя / пароль для прокси-сервера.

Варианты разработки ?? - Здесь мне нужна помощь / совет. Некоторые из множества вариантов, которые приходят на ум: 1. Разработайте в Ruby, а затем найдите упаковочный продукт для создания установочных пакетов для Windows и Mac - не знаете, насколько это выполнимо? Особенно, если мне нужна установка для эффективной установки в качестве службы. 2. Разработать на Java для кроссплатформенности? но тогда нужно, чтобы пользователи установили JRE? 3. Разработать как аддон Firefox? Я не сталкиваюсь с этим, но даже если вы можете написать собственный код, тогда проблема в Firefox должна быть запущена, я думаю. 4. Разрабатывайте версии для Windows и Mac отдельно, например, используя Visual Studio Express для разработки версии для Windows (при условии, что она может выполнять работу HTTP и создавать пакеты для установки служб).

Что бы люди предложили здесь? (было бы неплохо написать один раз, нажать кнопку, а затем выплеснуть установочные пакеты для Mac и Windows)

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 сентября 2009

Я написал кроссплатформенный код C ++, и с таким решением мы столкнулись.

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

Предложение 1:

  • создайте приложение в Mono
  • построить две стратегии развертывания, разделяя проблемы развертывания на «установщики»
  • в Windows развертывается с помощью некоторого языка сценариев или приложения-установщика, которое вставляет ваше приложение в планировщик задач, или пишет некоторый простой код C # (см. Ниже)
  • на Mac используйте встроенный UNIX cron демон, чтобы периодически вызывать ваше приложение.

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

Предложение № 2:

  • написать независимый от платформы код в виде сборки
  • при необходимости напишите код для каждой платформы:
    • в Windows это служба Windows или запланированное приложение, установленное с помощью однократного нажатия
    • Я достаточно далеко от Mac, что не знаю, какая там стратегия
  • снова, дополнительные усилия для развертывания

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

Примечание: интерфейс C # к планировщику задач Windows здесь К сожалению, он, вероятно, не совместим с Mono.

2 голосов
/ 15 сентября 2009

Mono будет поддерживать требования кроссплатформенных Windows и Mac.

Mono позволил мне разработать исполняемую сборку Windows Forms в моей среде Windows, а затем просто выполнить точно такой же исполняемый файл, используя Mono на OS X.

Некоторые элементы управления GUI ведут себя немного по-другому, но если вы пишете Сервис, вы, вероятно, не будете создавать сложный GUI.

Проверяя mono docs , я вижу, что класс System.Net.WebClient реализован и предоставляет простой кроссплатформенный способ получения данных по HTTP.

Я использовал Visual Studio 2008 на компьютере с Windows для полной разработки приложения, как и любое другое приложение .NET Windows Forms. Затем полученный исполняемый файл можно запустить непосредственно на компьютере Mac, передав его в качестве аргумента монофонической среде выполнения.

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

...