Я пишу приложение Windows Forms, которое будет продаваться малым и средним корпорациям и использоваться пользователями в локальной сети.
Чтобы упростить работу сетевых администраторов, я думаю об использовании .Net 3.5 SP1 и запуска приложения из общего сетевого ресурса. Таким образом, установка клиента минимальна (я знаю, что у них должен быть установлен .Net 3.5 SP1).
Администратор установит приложение на сервер, запустит установщик Windows, а затем отправит пользователям электронное письмо с указанием пути к сети, чтобы они могли начать использовать приложение. Альтернативный вариант - попросить администратора установить приложение на сотни ПК, чего я стараюсь избегать. Каждый раз, когда я обновляю приложение, администратору нужно только переустановить его на одном сервере.
Я хочу узнать ваше мнение, использовали ли вы такое развертывание, каковы подводные камни и что мне следует знать.
Заранее спасибо.
Обычно я бы предпочел, чтобы вы просто упаковали приложение в пакет установщика Windows (MSI). Я могу безболезненно развернуть это на любом количестве ПК всего за несколько минут.
Я бы предпочел, чтобы приложение было на жестких дисках моих компьютеров, а не в «общей папке» на сервере. Велика вероятность того, что приложение будет запускаться очень плохо, если «общая папка» на сервере находится через медленную линию WAN, но пользовательский интерфейс приложения в отношении доступа к удаленной базе данных SQL Server может быть приемлемым по той же линии WAN. . Поэтому я бы предпочел, чтобы приложение было на жестком диске ПК.
Я также считаю, что пропускная способность моей локальной сети является ценным товаром, и перетаскивание программы по сети при каждом запуске пользователя кажется мне расточительным.
Эван делает очень хорошие замечания. Я хотел бы также коснуться вашего процесса обновления: хотя я понимаю, что вы хотите упростить процесс обновления, это может быть опасно. Просто непросто.
Я бы (как администратор) хотел бы увидеть установщик MSI (с деинсталлятором). Таким же образом следует обрабатывать обновления. Таким образом, наш процесс установки также может быть нашим процессом обновления.
Могу я также добавить ваш первый запрос функции? Сделайте параметр реестра, содержащий информацию о версии приложения. Это должно быть установлено во время установки и сброшено во время обновлений. Это парадигма Windows, хотя я и не являюсь большим поклонником реестра. Это намного проще, чем проверять версию DLL (или любых файлов, которые вы будете использовать).
Большое вам спасибо за то, что спросили у системных администраторов, чего мы хотим. Пожалуйста, возвращайтесь, когда у вас возникнут вопросы, и приводите своих друзей.
Вы должны изучить ClickOnce Развертывание. Описание в Википедии.
+1 за развертывание clickonce. Я использую это для управления более чем 100 машинами 3 приложений в 4 странах.
Я хотел бы добавить, что приложение .NET, выполняемое по сетевому пути, выполняется с низкими привилегиями. В зависимости от того, что делает ваше приложение, это может не иметь большого значения. Но вы должны проверить это, прежде чем выбрать этот путь. В этом потоке есть хорошие предложения - щелкните один раз, MSI и развертывание через GPO. Могу сказать, что в какой-то мере я использовал их все. С Click Once вам не потребуется помощь администратора, за исключением настройки виртуального каталога для размещения приложения форм.
Я определенно предлагаю вам ИЗБЕЖАТЬ этого. Если вы планируете запускать приложение через общий сетевой ресурс, то в случае сбоя вы зависите от сети Windows. Общие ресурсы Windows работают медленно и часто ненадежно, когда к одному общему ресурсу обращается много пользователей. Это связано со сложной сетевой моделью.
У меня есть приложение, которое считывает файлы с общего ресурса. Часто мы получаем случайные ошибки, которые не позволяют нам попасть в общий ресурс. Есть множество проблем, которые вызывают недоумение. Я настоятельно рекомендую вам избегать наезда на акцию.
Могу я порекомендовать другое решение? Перекодируйте свой пользовательский интерфейс в веб-службу. Затем запустите ваше приложение на веб-сервере. После этого ваши клиенты смогут использовать ваше приложение в браузере. Winforms можно легко преобразовать в веб-формы.
Что ж, этот тип развертывания очень хорошо зарекомендовал себя, он использовался практически на заре компьютерных технологий. Конечно, он работает нормально, но явно создает большую нагрузку на сеть, если это находится в офисе, где нет ничего, кроме ссылок 100 Мб / 1 Гб и большой емкости сервера, тогда все будет в порядке, но это будет больно запускать через Интернет или подключение с низкой пропускной способностью.
Рискуя получить удар по голове, я бы предпочел, чтобы вы разработали свое приложение для конечного пользователя, а не для системного администратора. У меня есть несколько причин для этого:
Что делать, если сети нет? Вы ограничиваете свою потенциальную клиентскую базу, если ваше приложение не может быть установлено и полностью работать на одной машине.
А как насчет компаний, у которых нет сетевых администраторов? Сколько работы будет, если кто-то, кто обычно занимается счетами к оплате, будет выполнять ваши установки и обновления? Им, вероятно, потребуется нанять консалтинговую компанию, чтобы помочь им, поэтому вы только что увеличили совокупную стоимость владения для своего приложения. Вы также сделали свое приложение зависимым от наличия определенной инфраструктуры.
Нет ничего, что я ненавижу больше, чем приложение, которое должно запускаться из общего сетевого ресурса. Загрузка exe и DLL по сети - рецепт для проблем. Мгновенная потеря соединения или перегрузка, и ваше приложение перестает работать правильно, потому что оно потеряло соединение с необходимыми exe и DLL и т. Д.
Я системный администратор, мне бы хотелось, чтобы моя работа была легкой, но иногда это не так, и это факт работы. Иногда моя работа требует, чтобы я посещал конечных пользователей для установки и обновления программного обеспечения. Если я не хочу этого делать, то, вероятно, я ошибаюсь в работе.
Когда вы строите автомобили, вы строите их для потребителей, а не для механиков.