Как вы решаете, должен ли проект быть веб-или настольным?
У меня возникли проблемы с решением вопроса о том, хочу ли я, чтобы мой проект был веб-(как в веб-приложении), настольным (настольным приложением) или настольным приложением, которое может синхронизировать или подключаться к облако.
Я не знаю, будет ли кто-нибудь интерес к этому приложению, и это будет только для меня, поэтому я склоняюсь к настольному приложению. Если по какой-то причине я закончу его, отпустите, и людям это действительно понравится, я мог бы также увидеть его синхронизацию с облаком (думаю, v2). Но я не уверен, как трудно сделать такое радикальное изменение, и я не хочу, чтобы в итоге было что-то хорошее, что бесполезно, потому что я сделал плохой выбор, прежде чем я даже начал проект.
Есть ли какие-нибудь рекомендации для этого? Любые эмпирические правила или лучшие практики? Любые личные переживания?
Если язык имеет значение, я думаю о Java просто потому, что мне это наиболее удобно, и это легко позволит мне поделиться им с моими друзьями для тестирования, и если я застрял и мне нужна помощь от кого-то еще человек.
Ответы
Ответ 1
Обычно я задаю несколько вопросов:
- Можно ли это сделать в Интернете? Что-то, что я не слишком давно использовал компонент редактирования изображений, и должен был быть веб-приложением. Это потребовало большой боли, чтобы получить эту работу, и настольное приложение было бы гораздо лучшим способом.
- Нужно ли мне получить доступ к нему из любого места? Да, вы можете загрузить его на флэш-накопитель, но в этом случае сеть намного более возможна.
- Будет ли несколько пользователей? Это может идти в любом случае, но "длинный хвост" обычно означает сеть.
- Какие технологии вы хотите использовать? Последний и самый большой пользовательский интерфейс на основе WPF? Рабочий стол (да, да, серебристый свет, пусть не идет туда нормально?). Мозг мертвого глупого простого управления пользователями Django или других? Web.
- Если это было веб-приложение, вам нужно будет беспокоиться об общих атакующих векторах, таких как SQL Injection, XSS и т.д.? В настольном приложении также есть свои проблемы, но они имеют меньшую экспозицию.
- Насколько ресурсоемкий? Будет ли 10 пользователей убивать производительность веб-сервера?
- Вершина на рабочем столе может быть болью, тогда как с помощью webapp все находятся на одной и той же версии. Это может укусить вас, но, пожалуйста, нажмите кнопку "Новый Facebook".
EDIT:
- Стоимость также может быть фактором. Веб-приложение с базой данных базы данных обычно означает веб-сервер. Если вы хотите придерживаться, скажем, Microsoft Stack, вам понадобятся лицензии для SQL Server, которые могут стать дорогостоящими. Открытый исходный код дешевле, но не всегда возможен вариант. "Обслуживание" настольного приложения, как правило, дешевле.
Ответ 2
Если вы отпустите в качестве веб-приложения, вам не придется его переносить. У вас также будет доступ к нему, куда бы вы ни отправились.
Ответ 3
Я основываю свой выбор на графическом интерфейсе в основном. Если графический интерфейс будет сложным и (должен быть быстрым или иметь аспекты, на который потребуется много времени для обработки), я поеду с рабочего стола. Если это просто и всегда будет работать с небольшими наборами данных, я поеду с Интернетом.
Я работал над приложением, которое было сделано в виде веб-приложения, когда оно явно лучше подходит для рабочего стола. Это был массовый провал. Я не знаю, КАК клиенты мирились с этим, потому что я, конечно, не использовал бы его. Версия для настольных ПК (которая заняла более 6 месяцев для повторной записи) вывела веб-версию из воды.
Говоря, я видел несколько хороших веб-приложений.
Ответ 4
Все, что я могу предложить, - это несколько факторов, которые были бы важны. Как вы определяете ответ и вес для фактора зависит от вас и других обстоятельств:
- Какова ваша аудитория? У вас есть контроль над ними?
- Насколько сложны взаимодействия, которые вы ожидаете реализовать?
- Вам нужны обновления данных в реальном времени?
- Как часто вы ожидаете обновления приложения после первого выпуска?
- Ожидаете ли вы определенного набора клиентских платформ или можете ли вы не прогнозировать это?
Обратите внимание, что ваш выбор также может включать приложение Java WebStart, которое смягчает некоторые из недостатков типичного настольного приложения.
Ответ 5
Я бы сказал, что большинство приложений должны быть на рабочем столе. Преимуществами являются более быстрые и более гибкие приложения.
Вы должны создавать веб-приложение только в том случае, если от него очевидны преимущества, такие как доступ извне. (Если это необходимо для вашего приложения.)
Недостатком веб-приложений также может быть то, что он зависит от разработчика, если вы прекратите поддерживать его, все ваши пользователи (если у вас есть) больше не смогут его использовать. Кроме того, есть вероятность, что пользователи не захотят хранить свои данные в Интернете.
В конечном счете это зависит от того, какое приложение вы хотите написать. Даже если вы создадите его как настольное приложение, вы можете позже переписать его для Интернета. Часто версия программного обеспечения 2.0 нуждается в почти полной перезаписи в любом случае.
Ответ 6
Когда-то сеть может быть хорошей, а иногда нет. Мы находимся в новой волне, которая идет в Интернете, но не забывайте о немногих вещах:
- GUI в сети более сложный из-за нескольких браузеров
- Людям, которые должны работать в вашей системе, может не понравиться работать целый день в браузере.
- Для некоторых приложений Web может быть медленнее (редактирование изображений, сложная работа, требующая большого количества процессора).
- Rapid Gui, как Visual Studio для winform, быстрее, чем для веб-сайтов.
Но сеть имеет много преимуществ в развертывании и в переносимости. Если ваша система хорошо структурирована, вы можете сделать оба или изменить один на другой позже с чем-то, созданным с помощью MVC. Просто измените визуальность, и все будет хорошо.
Ответ 7
Если это приложение, которое будет использоваться моими несколькими пользователями, с общими данными, вы, вероятно, захотите получить сервер в любом случае. В этом случае я склоняюсь к веб-приложению.
В противном случае у вас будет сложность синхронизации данных между рабочим столом и сервером.
Ответ 8
Два важных вопроса, не включенных в список:
- Будет ли первая версия иметь какие-либо функции, требующие низкого уровня доступа к оборудованию?
- Будут ли в будущих версиях иметь какие-либо игровые приставки, которые нуждаются в низкоуровневом доступе к оборудованию?
Это довольно легко ответить на первый, но при этом вторая мысль может сэкономить вам некоторую головную боль по дороге.
Ответ 9
Мой выбор по умолчанию заключается в том, чтобы пойти с веб-решением, поскольку его проще развернуть и, как правило, многоплатформенную. Единственный раз, когда я иду с приложениями winforms, - это когда есть неотложные проблемы безопасности, производительности или функциональности, требующие этого.
Ответ 10
Раньше вы написали бы настольное приложение, поскольку инструмент был бы лучше для этого, и вы бы записали его быстрее. Раньше люди хотели веб-приложений, но всегда заканчивались рабочим столом.
В настоящее время все по-другому, вы можете написать веб-сервис так же быстро и легко, чтобы не было причин не ходить в Интернете.
Преимущества веб-интерфейса - гибкость, масштабируемость и простота развертывания. Это не будет столь же отзывчивым, как настольное приложение, но это не так много, если вы думаете о своем дизайне.