2012-07-04 3 views
2

Я работаю в металлургическом предприятии, где мы производим собственное производительное программное обеспечение. Мы рассматриваем возможность изменения нашего плана распределения в соответствии с нашими текущими потребностями. Я надеялся, что вы могли бы дать некоторые идеи.Лучший план распространения WinForms

Наше приложение представляет собой WinForms, C# Framework 4.0. Он расположен в интранете. Он разделен на три проекта (UX, бизнес-уровень и слой модели). Приложение разделено «логически» в модулях, где каждый из них выполняет разные задачи, но у них есть некоторые функции (т. Е. Коммерческий модуль, финансовый модуль, модуль цитирования).

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

У нас есть два сценария (возможно, вы могли бы добавить другие):

Сценарий 1.

Все приложение только один EXE распространяется с ClicOnce.

PROs:

  • Легко обнаружить какие-либо изменения и как она влияет.
  • Только один распределение

ПРОТИВ:

  • Небольшие изменения влияют на всю компанию (почему обновление, если изменение не не влияет на мое "модуль"?)
  • Распределение тяжелее
  • Необходимо улучшить тестирование, чтобы вы оставили меньше ошибок в дистрибутиве.

Сценарий 2.

Одно небольшое приложение (EXE), что "пожары" разные EXEs (один на каждый модуль).

PROs:

  • Обновления зажигалки.
  • Изолированные ошибки.
  • Изолированные разработки.

Недостатки:

  • должен обнаружить каждое изменение, чтобы перекомпилировать/распределить каждый модуль (EXE) затронуты.
  • Создайте новый проект, чтобы хранить общие материалы (формы, классы и т. Д.).

Что вы думаете? Знаете ли вы другие планы распространения?

Спасибо!

Хавьер

+0

Я знаю, что это немного не по теме, но многие из этих проблем уходят с веб-приложением в Интернете. Почему бы не получить с этим? Технически это другой тип плана распределения. –

+1

Возможно, перекодирование всего большого приложения немного «дорого»? – Steve

+0

Мне это похоже на что-то для [программистов] (http://programmers.stackexchange.com/). – CodeCaster

ответ

3

Я бы взять гибрид двух ваших сценариев и имеют развертывания ClickOnce для каждого модуля. Изменения в общем коде будут «запускать» новое развертывание для каждого зависимого модуля.

Вы можете изучить System.Deployment namespace, в частности ApplicationDeployment.CheckForUpdate method для интеграции требования «серьезного обновления», чтобы приложение само обновление.

+0

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

0

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

Вы должны

  • 1 ех: графический интерфейс пользователь с очень простым кодом: только вызовы к модулям

  • п длл: модули с четким API будут называться либо GUI или другими модули.

Затем вы можете легко заменить один модуль на автоматические обновления. Так работает IE.

+0

Является ли IE примером хорошего приложения;] – MoonKnight

+0

ну, может быть, и не совсем :) – Kek

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