Является ли разработка WPF быстрее или медленнее, чем классическая ASP.NET (веб-формы)

У вас есть опыт работы с кодированием ASP.NET и WPF? Если да, то буду признателен, если поделитесь опытом, пожалуйста.

Мы оцениваем проект WPF на 100 экранов. Наша методология оценки включает определение сложности каждого экрана. Затем мы применяем стандартное число для времени разработки, исходя из сложности и технологии. Стандартный номер основан на том, что разработчик хороший, а не суперзвезда.

Например, вот скрин:

Пользователь выбирает строку в основной сетке, затем редактирует данные в деталях и сохраняет изменения. Ajax используется для заполнения и сохранения деталей без обратной передачи. Слой данных уже есть, а стилем будет заниматься кто-то другой. Задача включает в себя написание соответствующего набора модульных тестов; интеграционное тестирование отдельно.

Мы бы охарактеризовали этот экран как средний и выделили X часов для задачи, для классического ASP.NET (в отличие от MVC).

Нам нужна помощь, чтобы выяснить, каким должен быть X для WPF.

Мой вопрос:

Если бы экран создавался в WPF кем-то хорошо в WPF, потребовалось бы X часов, или 0,7 X, или 1,3 X? Какова относительная производительность WPF по сравнению с классической ASP.NET?

Другой вопрос: если задача требует (выбор числа) 10 часов написания кода ASP.NET, сколько часов потребуется, чтобы выполнить ее с помощью WPF? 5? 15?

Мы хотели бы знать, является ли WPF (выбирая число) на 50% более производительным, чем ASP.NET, поэтому мы можем предложить более низкую цену и быть уверенными, что сможем выполнить проект в рамках бюджета.

[Изменить] Еще один вопрос: это обсуждение ASP.Net или WPF (C#)? есть куча ответов. Выбранный «правильный» ответ — «Причины выбора WPF», а первая причина — «Разработка намного быстрее и проще, чем ASP.NET и jQuery».

Верен ли этот ответ? Насколько намного быстрее?


person hoytster    schedule 30.03.2011    source источник
comment
WPF — это скорее клиентская вещь, а ASP.NET — серверная. Вы сравниваете две совершенно разные стороны .NET. (Что бы это ни стоило, я изучил веревки ASP.NET WebForms и новичок в WPF.)   -  person BoltClock    schedule 30.03.2011
comment
Я не знаю, справедливо ли сравнивать яблоки с апельсинами. В любом случае я думаю, что это больше похоже на материал Programmers.SE.   -  person R. Martinho Fernandes    schedule 30.03.2011
comment
Подождите, если у вас нет никого с достаточным опытом работы с WPF, чтобы дать оценку, ответ, вероятно, будет «Нет, быстрее не будет».   -  person R. Martinho Fernandes    schedule 30.03.2011
comment
Я не думаю, что это так же, как яблоки к апельсинам, как вы подразумеваете. Языки, соглашения и фреймворки одинаковы. Ruby on Rails и ASP.NET — это веб-фреймворки, но это, вероятно, больше яблок, чем апельсинов, поскольку это требует изучения нового языка и фреймворка. Переход с ASP.NET на WPF не требует большого изменения набора навыков.   -  person NerdFury    schedule 30.03.2011
comment
BoltClock: ASP.NET используется для создания веб-страниц — на клиенте. Правильно?   -  person hoytster    schedule 30.03.2011
comment
Мартиньо: Что такое материал для программистов SE? Google находит эту фразу еще в одном месте, также в StackOverflow. Я не понимаю яблоки и апельсины. База данных, уровень данных, бизнес-объекты одинаковы. Это разные пользовательские интерфейсы для демонстрации этих вещей. Можно ли создать один пользовательский интерфейс быстрее, чем другой? Что касается вашего второго комментария, о недостаточном опыте WPF: верно, у нас нет опыта, но мы должны сделать эту оценку. Специалисты по WPF выполнят кодирование, но они не могут помочь с оценкой. СЕЙЧАС, не могли бы вы высказать свое мнение об относительной производительности WPF, пожалуйста?   -  person hoytster    schedule 30.03.2011
comment
@Hoyster, я потратил около двенадцати лет на программирование в веб-домене и около 200 часов, работая в WPF, так что принимайте это как хотите. На мой взгляд, продуктивность человека или команды в WPF будет очень низкой, если только их опыт работы с WPF не будет очень высоким. Предполагая, что ваш хороший программист входит в это с нулевым опытом ни в вебе, ни в технологии wpf, он заставит колеса вращаться в Интернете намного, намного быстрее.   -  person Jesse Hallam    schedule 04.04.2011


Ответы (4)


Из личного опыта:

В ASP.NET легче войти, чем в WPF. ASP.NET очень похож на другие технологии на стороне веб-сервера. WPF отказывается от классической настольной разработки и добавляет множество функций, к которым нужно время, чтобы привыкнуть.

Тем не менее, фактическая разработка опытными разработчиками может быть намного быстрее в WPF. Мой личный фактор стресса — это совместимость браузера (чтобы он отображался одинаково в нескольких (версиях) браузерах; это просто занимает слишком много времени).

Вы не получите от меня никаких цифр, так как их очень сложно дать на основе того, что вы предоставили.

person Emond Erno    schedule 30.03.2011
comment
О, конечно же, браузерное безумие! Это должно было быть в начале моего списка болевых точек ASP.NET. На данный момент не хватает чего-то лучшего - я буду интерпретировать, что вы можете быть намного быстрее в WPF как на 33% быстрее. Я дважды смею вас исправить это число. Как дела, Макфлай -- ЦЫПЛЕНОК!?? (Простите, что прибегаю к психологии школьного двора, но мне очень нужна цифра.) - person hoytster; 31.03.2011
comment
Единственное «нормальное» число, которое я могу вам дать, это 42... Серьезно: вы обманываете себя (и других), когда просто выбираете число. По крайней мере, добавьте к нему поле, чтобы указать, насколько вы уверены в этом числе. (Также: то, как вы здесь себя ведете, похоже на троллинг) - person Emond Erno; 31.03.2011
comment
Извиняюсь за тролльский тон. Не понял. Пытался позабавить, явно промахнулся. Спасибо за Ваш ответ. - person hoytster; 31.03.2011
comment
@hoyster: не беспокойся. Цифры должны быть подкреплены реальными данными. Простое выкрикивание числа серьезно обесценивает значение числа. - person Emond Erno; 31.03.2011

Слишком много переменных. Причина номер 1 для выбора инструмента — знакомство с ним пользователя. Если ваша команда уже знает и чувствует себя комфортно с ASP.NET, она будет в несколько раз лучше и быстрее. Если ваша команда не знакома с WPF, то будет период наращивания, и как только они будут полностью налажены, они, вероятно, будут такими же быстрыми, как и с ASP.NET.

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

Если вы пытаетесь разделить свои проблемы и использовать подход в стиле Model View Presenter с asp.net, я думаю, что это займет больше времени и требует больше работы, чем MVVM в WPF, потому что существует отличная поддержка привязки. Но все же есть кривая обучения.

В asp.net или WPF нет ничего, что делало бы одно быстрее другого. Что определяет скорость разработки, так это талант команды и то, что им удобно.

person NerdFury    schedule 30.03.2011
comment
В asp.net или WPF нет ничего неявного, что делало бы одно быстрее другого. Вы говорите из реального опыта? Мне кажется, вы просто уходите от вопроса. - person Joe White; 30.03.2011
comment
Спасибо за ответ, NerdFury. Думаю, я не ясно дал понять, что способность программиста является константой - хороший кодер ASP.NET и хороший кодер WPF. Вопрос не в том, использовать ли WPF или ASP.NET. Мы собираемся использовать WPF. Меня интересует их относительная продуктивность, о которой вы говорите в последних двух абзацах. Спасибо! - person hoytster; 31.03.2011
comment
@Джо Уайт - я использовал ASP.NET и WPF для разработки приложений. Я не ухожу от вопроса. Я говорю, что если бы я воспользовался своим первым подходом к приложению и использовал элементы управления перетаскиванием с логикой в ​​событиях нажатия кнопки, я, вероятно, был бы таким же быстрым в любой среде. Но я могу написать разметку aspx намного быстрее, чем xaml. Я могу использовать MVVM с WPF проще, чем шаблон MVP в asp.net. Все это связано с комфортом и весельем. Я пишу быстрее, когда получаю удовольствие и использую удобный инструмент. Изучать новые инструменты тоже весело, но дорого. - person NerdFury; 31.03.2011
comment
Нет ничего неявного... ЕСТЬ внутренние различия, ИМО. С ASP.NET вам необходимо знать элементы управления сервером, HTML и CSS. Добавьте Javascript и графическое программное обеспечение, если вы хотите менее обыденный пользовательский интерфейс. Чтобы избежать постбэков, добавьте Ajax и веб-сервисы. Прямо Javascript, jQuery или какая-то другая библиотека? МЫЛО или ОТДЫХ? JSON, XML, XSLT? Вы должны управлять состоянием и кэшированием по 5 способов. Ваши решения зависят от вашего оборудования: веб-фермы, сеансового сервера? Модель событий достаточно хорошо эмулирует VB6, чтобы сбить вас с толку. WPF: C#, XAML, надежная модель событий и Blend для улучшения пользовательского интерфейса. - person hoytster; 31.03.2011
comment
@hoyster - Единственное, что вы упомянули, относящееся к ASP.NET, - это элементы управления сервером. Остальные в значительной степени необязательны и относятся к темам веб-разработки и клиентской разработки. Не ASP.NET против WPF. Если у вас есть интеллектуальный клиент, у вас все еще могут быть проблемы с веб-сервисами и мылом/остатками. Если вы получаете данные из БД, вам все равно нужно кэшировать. В корне у обоих есть модели событий и элементы управления, которые можно перетаскивать на холст, а затем реагировать на события из элементов управления. Какие дизайнерские решения вы примете после этого, повлияют на сложность вне любой из этих рамок. - person NerdFury; 31.03.2011

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

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

Например, не проблема создать такие вещи, как создание кнопок странной формы (звездообразные, круглые и т. д.), создание раскрывающихся списков с флажками для фильтрации данных, создание таблиц данных с разными пользовательскими интерфейсами для разных строк на основе данных, всплывающих окон, которые сделать фон полупрозрачным или размытым, или перетаскиваемые объекты, которые действительно показывают перетаскиваемый объект. Это все вещи, с которыми я играл, которые очень просты в WPF.

Когда я впервые начал работать с WPF, у него не было большой поддержки, но я считаю, что это изменилось. Большинство проблем, с которыми я сталкиваюсь, имеют решение где-то в Интернете, или ответ можно быстро получить, спросив на SO

Единственное ограничение, которое я вижу в WPF, заключается в том, что он связан с платформой .Net.

person Rachel    schedule 31.03.2011

Я думаю, можно с уверенностью сказать, что WPF в таком проекте, как вы описываете, может быть на 33% быстрее, в основном потому, что результаты более предсказуемы и контролируемы. В конце концов, каждый хочет, чтобы он выглядел так, как он хочет.

WPF гораздо более естественно подходит для повторного использования и масштабирования, чем любой проект ASP.NET. Все, что вы создаете, можно легко превратить в пользовательский элемент управления со встроенной привязкой. Я предпочитаю MVVM MVC.

Я бы сказал, что вы можете заставить что-то (например, представление базы данных) работать быстрее в ASP.NET, но заставить его выглядеть так, как вы хотите, будет намного сложнее. Таким образом, ваше время разработки действительно зависит от того, насколько гибкими являются ваши требования к пользовательскому интерфейсу. Если вы хотите создать новый элемент управления, это займет намного больше времени в ASP.NET, и вам будет сложнее описать, как использовать этот элемент управления другим.

Я также недавно начал программировать с помощью VB6 для настольных приложений и JQuery с PHP. С этими языками разработка идет намного быстрее, чем с чем-либо, связанным с .NET, потому что .NET должен быть скомпилирован. Это большой недостаток этого языка. Часто на компиляцию сложного веб-сайта может уйти довольно много времени. По этой причине для личного использования я буду использовать jQuery, веб-сервисы PHP и MySQL.

person Jordan    schedule 17.06.2011