Каковы преимущества и проблемы разработки веб-приложений по сравнению с настольными приложениями? - PullRequest
17 голосов
/ 25 апреля 2009

У меня возникли некоторые проблемы с менеджерами, потому что они считают, что (интуитивно) создавать настольные приложения проще, чем создавать веб-приложения (потому что у вас меньше ограничений). Но, на мой взгляд, это сложнее по ряду причин:

  • Литература для настольных приложений значительно меньше, чем для веб-приложений
  • Кодирование панелей и кнопок сложнее, чем использование декларативного подхода (HTML)
  • Природа http без состояния заставляет вас переосмыслить запрос / ответ

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


Редактировать : Я восстановил свой первоначальный вопрос, так как кто-то отредактировал его, и он потерял оригинальное содержание. Если кто-то решит отредактировать вопрос, пожалуйста, оставьте значимый комментарий, чтобы я мог хотя бы узнать, почему какая-то часть была изменена.

Ответы [ 14 ]

18 голосов
/ 25 апреля 2009

Большинство ответов (так или иначе) пока что сосредоточены на том, насколько простым или трудным будет выбор. Вся цель приложения, как настольного, так и веб-ориентированного, заключается в обслуживании конечного пользователя. Что должно быть отправной точкой обсуждения.

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

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

Итак, при попытке решить, какую технологию использовать в первую очередь, учитывайте пользователя. Им нужен высокопроизводительный, богатый пользовательский интерфейс? Нужно ли им иметь возможность легко делиться своими данными с другими людьми в сети? Это приложение, которое они будут использовать восемь часов в день или просто случайно? Будут ли они использовать его в основном для редактирования локальных файлов или для совместной работы с людьми по сети?

Для тех, кто говорит «веб-приложения всегда лучше», позвольте мне задать вам вопрос: подумайте об инструментах, которые вы используете каждый день. Ваш текстовый редактор, программирование IDE, ваш браузер, ваш почтовый клиент. Какие из этих веб-приложений? Вероятно, нет, за исключением, может быть, вашего почтового клиента. Есть причина, по которой вы не хотели бы использовать сетевую среду разработки для написания программного обеспечения (или для написания книги, или для серьезных манипуляций с изображениями).

Все сводится к пользователю и каковы его цели. Иногда их потребности лучше всего удовлетворять веб-интерфейсом, иногда - настольным. Иногда либо подойдет. Конечно, вам также необходимо взвесить такие параметры, как распространение и обновление, кроссплатформенность и т. Д., Но все начинается с пользователя и его целей. Если вы сосредоточены на удовлетворении конечного пользователя, ответ, скорее всего, станет довольно очевидным.

9 голосов
/ 25 апреля 2009

IMHO Web Develoment более напряженный ... вы должны бороться с Internet Explorer за несоответствие стандарту, медленное соединение, странное поведение css, использование браузера.

6 голосов
/ 25 апреля 2009

В большинстве случаев разработка веб-приложений намного проще и создает одну из больших проблем - развертывание и развертывание новых версий, исчезновение.

Вам не нужно иметь дело с разными версиями операционной системы, установленными библиотеками, реестром, COM и т. Д. Вам приходится иметь дело с разными браузерами, но это гораздо меньше.

Я не могу себе представить развертывание настольного приложения на 2-3 миллионах клиентов каждый месяц - то, что хорошо работает с веб-сайтами.

Что касается разработки с веб-разработкой, то у вас есть:

  • более короткие пути выполнения
  • меньше состояний для управления
  • вам вряд ли придется иметь дело с параллелизмом самостоятельно
  • Значительно меньше или нет ресурсов для управления - без дескрипторов ОС

Единственным недостатком является то, что для настройки компьютера разработки обычно требуется больше времени, а отладка веб-приложений была более сложной. С текущим состоянием инструментов отладка больше не является проблемой.

Поэтому всегда предпочитайте веб-приложение, если это возможно.

4 голосов
/ 25 апреля 2009

Есть довольно много различий между этими двумя, которые создают проблемы или выгоды. Для веб-приложений:

  • Состояние - HTTP-запросы не имеют состояния и должны управляться путем передачи переменных сеанса через все запросы или файлы cookie. Это накладные расходы в веб-приложениях, и ASP.NET часто подвергается критике за огромные сгустки данных сессий.
  • Централизовано - Внесение изменений в веб-приложение так же просто, как обновить биты на сервере по сравнению с настольными приложениями, где исправления должны быть развернуты для всех пользователей. Централизованная природа также облегчает аналитику и тому подобное. Это большое удобство. Я помню, GMail однажды исправил дыры в безопасности менее чем за 4 часа. В отличие от этого, по-прежнему существует множество уязвимых машин без исправлений Windows.
  • Архитектурный - толстый сервер, тонкие клиенты делают платформу веб-приложений независимой. Это также помогает в управлении балансом ... например, сортировку таблиц, проверку ошибок, математические вычисления или графику (например, в случае с флэш-памятью) можно выполнять на клиенте или сервере, в зависимости от распределения ресурсов. Из-за тонкого клиента это означает, что можно полностью перестроить сервер, не оказывая влияния на клиента вообще. Такой уровень гибкости действительно удобен.
  • Безопасность - Настольные приложения работают в доверенной среде, где они могут делать все, что угодно, поскольку веб-приложения работают в изолированной среде, что делает их по своей природе более безопасными для клиента. Тем не менее, веб-приложения требуют некоторой настройки, так как это касается сертификатов, элементов управления ActiveX и т. Д.
  • Управление версиями - Стоимость управления версиями намного выше для настольных приложений. Это восходит к более утомительному процессу выталкивания изменений. И опять же, скачок номеров основных версий означает увеличение дохода за счет обновления пользователей. В веб-приложениях управление версиями в основном предназначено для самих разработчиков, и гораздо проще выполнять небольшие итеративные улучшения. Вот почему настольные приложения по-прежнему придерживаются цикла разработки «водопада», потому что внесение изменений стоит дорого, и вы должны получить его с первого раза. Настольные приложения также имеют стоимость обратной совместимости, такую ​​как поддержка Windows 98, XP и Vista или поддержка более старых процессоров, драйверов и т. Д.
  • Среда - Веб-приложения работают в предсказуемой среде, что опять-таки очень удобно. Между IE / FF / Opera и т. Д. Существуют проблемы кросс-браузерной разработки, но гораздо проще тестировать и отлаживать, чем, например, запускать сложное приложение в настольной системе с различными графическими процессорами, антивирусным программным обеспечением или сборками.
  • Отзывчивость - Веб-приложения медленнее реагируют из-за постбэков, но AJAX сделал это намного проще и веселее.

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

4 голосов
/ 25 апреля 2009

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

OTOH Поскольку у рабочего стола меньше границ, может быть, дизайн немного сложнее, поскольку у вас больше возможностей - хотя я с этим не согласен.

2 голосов
/ 25 апреля 2009

Настольные приложения - это путь. Текущая веб-технология (HTML, Javascript, HTTP, ...) никогда не была разработана с учетом приложений. Он был разработан для документов. И вы чувствуете это с каждой строкой кода, которую вы пишете.

2 голосов
/ 25 апреля 2009

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

Я бы никогда не выбрал разработку чего-либо на рабочем столе, если бы вместо этого была возможность сделать это в Интернете.

2 голосов
/ 25 апреля 2009

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

Распространение / поддержка настольного приложения имеет проблемы, которые всегда зависят от пользователя, в то время как веб-приложение может быть отлажено без какого-либо участия пользователя. Это никогда не должно быть сведено к минимуму, поскольку может потребоваться чрезмерное количество времени для отладки дефекта, который есть у одного пользователя в Айдахо, которого нет у другого пользователя.

Развитие двух требует другого менталитета. Веб не имеет состояния по своей природе, а рабочий стол - полный. При переключении между ними я часто расстраиваюсь, потому что я привыкаю к ​​одному, а затем пробую тот же самый паттерн / технику в другом, и он терпит неудачу.

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

Дополнительная информация в вопросе поможет, так как этот вопрос слишком широк, чтобы его охватить.

2 голосов
/ 25 апреля 2009

Веб-разработка - сложнее в моем опыте, вы не можете себе позволить легко поддерживать состояние; Кроме того, вам придется иметь дело с проблемами форматирования (CSS отлично, но это трудно освоить).

2 голосов
/ 25 апреля 2009

Я очень сомневаюсь, что веб-программистам нужно знать winapi. Я говорю, что программирование GUI требует больше времени для изучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...