Tuesday, October 4, 2011

Священная война: веб против десктопа (web vs desktop)

Моя программа - десктопное приложение. Прежде, чем начать делать ее как десктопное приложение, я довольно много времени потратила на то, чтобы выяснить, какая технлогия лучше и почему. Все было хорошо до недавнего времени. Разумеется, и после начала работы зерна сомнения время от времнени прорастали, но плодов еще пока не давали. И вот недавно мне показалось, что зря, пожалуй, я связалась с десктопом. И вот почему.
Я работаю ("на дядю") в небольшой страховой фирме, наша задача в основном заключается в том, что мы переписываем на .Net уже существующую систему, которая была создана еще на VB6. Первую часть, предназначенную для внутренного пользования, мы успешно переписали. Среди моих задач было повышение производительности, и мне удалось, используя разные методы, приблизить скорость работы нового десктопного распределенного приложения к скорости работы старого приложения.

Следующим этапом стало переписывание приложения для брокеров. Брокеры - это фирмы, которые заключают страховые контракты с клиентами. Несколько тысяч брокеров разбросаны по всему городу, и данные, полученные от них, сливаются в нашу БД. Первоначально мы собирались делать такое же десктопное приложение, для которого, правда, наш архитектор выбрал WPF. Эту технологию мы сразу невзлюбили, а особенно паттерн MVVM, но, как выяснилось, горевали мы зря. Потому что буквально через месяц после начала работы над проектом наши исполнительные директора схватились за волосы и закричали "Больше никаких десктопных приложений! Только веб!" В чем же было дело? А дело было в том, что наша старая программа, написанная еще на VB6, после поставки обновления отказалась работать у нескольких брокеров. Наш самый главный гуру, который знал эту систему как свои пять пальцев, не смог решить эту проблему. Кроме того, приложение в ряде случаев запускалось через терминальный сервис, к которому у нас не было доступа, а тот, у кого этот доступ был, то ли не мог установить программу, то ли еще что-то, но короче, наши директора узнали, что есть такая замечательная альтернатива всему этому геморрою, которая называется "веб". Не надо ничего устанавливать. Если ты что-то обновляешь, можно об этом даже не заявлять, все происходит максимально прозрачно для конечного пользователя.
Поскольку я в свободное время занимаюсь собственным проектом, неожиданно эта проблема встала и передо мной. Ведь я обязательно буду поставлять обновления (они у меня даже запланированы), и что каждый раз делать? Просить пользователя скачать их? Или вылезать каждый раз как Adobe? Или нудить без конца как Evernote? Лучше всего делать это прозрачным образом, как делает Chrome, но существуют ли приемлемые по затратам пути реализовать такой подход? Кроме того, я использую локальную базу данных, и ее структура тоже, возможно, будет меняться, и не один раз. Тогда придется отслеживать, какая именно версия установлена, и запускать скрипты обновления, следя при этом, чтобы не потерялись уже существующие данные. Словом, геморроя вагон и маленькая тележка. То ли дело - веб! Никаких закачек, никаких апдейтов, мечта поэта. Но есть куча других "но"... О том, как уяснить себе, какая технология подходит лучше, в следующем посте.

2 comments:

  1. Выход в веб сопряжен с затратами. Впрочем, даже чтобы начать писать игрушки под WP7 - тожно нужно заплатить...
    ДотНет поддерживает кстати запуск с веба. Если версия обновилась - он сам скачает новые модули и все установит. За совместимость будет отвечать CLR. В нашем зоопарке (>50000 клиентов) это работает.

    ReplyDelete
  2. Если начинать сразу с веб, то затраты будут такие же. Другое дело, если для десктопа уже есть, и вот надо теперь выходить в веб. Что касается дотнета... всем хороша платформа, кроме одного - сложно убедить домашнего пользователя скачать и поставить себе фреймворк. У вас, наверное, корпоративные клиенты?

    ReplyDelete