Является ли ASP.NET MVC плохим выбором для крупного корпоративного проекта? - PullRequest
25 голосов
/ 20 февраля 2009

Мы собираемся запустить приложение для крупного предприятия. Я серьезно рассматриваю возможность использования ASP.NET MVC, потому что:

  1. Нам нужно использовать технологию Microsoft (логика бизнеса - это все C #)
  2. Производительность критична
  3. Я бы хотел проверить как можно больше

Моя команда использовала только PHP для веб-разработки, но у нее большой опыт работы с WinNET-формами (так что в любом случае у нас есть кривая обучения). Меня беспокоит то, что некоторые люди выражают беспокойство по поводу масштабируемости ASP.NET MVC для больших приложений. Но из того, что я читаю, у веб-форм есть и свои проблемы.

Должен ли я пересматривать веб-формы или придерживаться своей интуиции и использовать ASP.NET MVC?

Связанный:

Должен ли я создать свое следующее веб-приложение в ASP.NET MVC? https://stackoverflow.com/questions/521388/from-webforms-to-asp-net-mvc

Ответы [ 11 ]

30 голосов
/ 20 февраля 2009

ASP.NET веб-формы имеют большой вес и оставляют на ваших веб-страницах огромное количество материала, как в html / javascript, так и в сериализованном режиме просмотра. Я помню мой первый веб-сайт ASP.NET, в результате которого GC взорвался из-за того, что все недолговечные объекты были повторно гидратированы из этого ужасного состояния. О, когда я был молод и наивен (то есть 2 года назад) ... Вы должны очень хорошо понимать веб-формы, чтобы создавать из них масштабируемые веб-сайты. Возможный? Определенно. Легко? Не.

ASP.NET MVC сложнее кодировать изначально , но SO гораздо проще в разработке, чем веб-формы. Самое сложное для изучения: 1) условные обозначения, называемые «волшебными строками», 2) HTML + встроенный код, называемый ASP, и 3) HTML-формы.

С MVC вы не можете сойти с ума от государственного кошмара, который так часто встречается в разработке веб-форм, а это означает, что ваши веб-страницы очень тонкие. Это также означает, что вы должны кодировать свое состояние немного умнее. Код также НАМНОГО проще и масштабируется НАМНОГО лучше, чем традиционные веб-формы, imho.

Кроме того, тестирование с ASP.NET практически невозможно из-за жестко закодированных и немодируемых зависимостей, встроенных в платформу. ASP.NET MVC заменил все это членами System.Web.Abstractions, которые являются поддельными обертками для этих плохо спроектированных и непроверяемых объектов.

Беги, не ходи, к MVC.


Для очевидных, если вы используете фреймворк, который находится поверх фреймворка ASP.NET, такой как MVC или любой другой, который вы написали или написал кто-то еще, ЯВНО некоторые из этих замечаний не применяются

Если, с другой стороны, вы кодируете, как это делал ранний человек, для модели веб-форм ASP.NET (например, Response.Write () в Page_Load), мои комментарии применяются.

Можете ли вы написать код, который можно тестировать на ASP.NET? Конечно. Можете ли вы сделать это без включения специального кода тестирования, который вы или кто-то другой написал? Конечно. Если у вас есть TypeMock.

27 голосов
/ 20 февраля 2009

ASP.NET WebForms очень похож на Winforms и допускает RAD (быстрая разработка приложений). Это очень быстро, чтобы получить что-то в кратчайшие сроки. Проблема с этим заключается в том, что тестирование может быть серьезной проблемой, и если оно используется для чего-либо общедоступного, это может означать некоторые серьезные проблемы с ViewState. WebForms могут удерживать состояние, делая такие вещи, как волшебник, легким в использовании.

ASP.NET MVC, с другой стороны, может занять немного больше времени для разработки и требует, чтобы разработчики понимали, как работает HTTP. Это архитектура без состояния, означающая, что каждый запрос - это его собственный маленький мир, и обычно он не знает о предыдущих запросах. Фреймворк также обеспечивает высокую тестируемость.

С точки зрения производительности они, вероятно, одинаковы, поскольку ASP.NET MVC - это просто инфраструктура, построенная на основе существующей архитектуры ASP.NET. Хотя для клиентского опыта я бы сказал, что MVC немного быстрее.

Что касается масштабируемости, я бы сказал, что они примерно такие же, как и технические. Что касается использования API и его интеграции, MVC, вероятно, будет немного проще.

Веб-сайт, который вы сейчас используете, чтобы задать вопрос о данной версии, построен на ASP.NET MVC и имеет 2 веб-сервера и мощный db-сервер.

9 голосов
/ 23 февраля 2009

ASP.NET MVC не является проблемой для Enterprise, но не является ASP.NET, Silverlight и т. Д. Все они являются технологиями пользовательского интерфейса. В любом случае большая часть логики вашего приложения должна существовать в библиотеках под слоем пользовательского интерфейса, поэтому практически любой пользовательский интерфейс можно использовать.

  1. Нам нужно использовать технологию Microsoft
  2. Производительность критична
  3. Я бы хотел проверить как можно больше

Исходя из вышесказанного, ASP.NET MVC будет работать. Но вы можете переместить код ниже пользовательского интерфейса и протестировать. Если ваши алгоритмы находятся ниже пользовательского интерфейса, вы можете настроить их без изменения пользовательского интерфейса. И, если слой пользовательского интерфейса очень тонкий, перфомент для пользовательского интерфейса незначителен.

3 голосов
/ 20 февраля 2009

Нет. Одна вещь, которую ASP.NET MVC имеет по сравнению с веб-формами ASP.NET с точки зрения производительности, заключается в том, что она не использует дерево элементов управления. Дерево элементов управления потребляет много памяти на стороне сервера и очень сильно загружает сборщик мусора на страницах с большим количеством элементов управления. Я бы сказал, что вы получите превосходную производительность от ASP.NET MVC. Аспекты юнит-тестирования - это настоящая победа.

Обратной стороной этого является то, что вы не можете использовать все удобные встроенные элементы управления, которые вы получаете с ASP.NET Web Forms, и вы, вероятно, в конечном итоге будете выполнять больше клиентской JavaScript-разработки, поэтому начальная разработка бюджет, вероятно, должен быть больше, если вы выберете ASP.NET MVC вместо веб-форм, но в долгосрочной перспективе у вас будет превосходное решение.

2 голосов
/ 20 февраля 2009

Придерживайтесь своей интуиции. ASP.NET MVC помогает упростить тестирование, поскольку почти весь API происходит от интерфейсов.

1 голос
/ 15 августа 2013

Использовали WebForms в течение многих лет и никогда не любили их. Теперь используйте Asp.Net MVC в течение нескольких лет, и это намного лучше. Конечно, рекомендую MVC.

Asp.Net MVC имеет отличную архитектуру и является открытым исходным кодом. Так что, если вы обнаружите узкие места в цепочке обработки http, вы можете это исправить. В большинстве случаев вы сможете исправить проблемы с производительностью, используя одну из многих точек расширения, предоставляемых Asp.Net MVC, например Binders в качестве примера.

0 голосов
/ 15 августа 2013

Мое мнение: используйте ASP.NET Webforms.

Отключить ViewState в Web.Config.

Нет необходимости сохранять состояние, потому что все, что вам действительно нужно, находится в объекте Request. Используйте Javascript в сочетании с AJAX для извлечения данных для визуализации элементов управления вашего пользовательского интерфейса на стороне клиента.

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

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

У меня скорее нет кода для спагетти, такого как MVC. Был там с PERL / PHP и классическим ASP.

0 голосов
/ 02 февраля 2012

Если вы можете использовать хранимые процедуры, вам не нужен большой промежуточный уровень, подобный тем, которые сгенерированы MVC. Все, что вам нужно сделать, это передать XML вашим хранимым процессам через простой обработчик HTTP, получить результаты обратно из сохраненного процесса и преобразовать результаты в JSON. MVC и другие вещи среднего уровня служат только для зарабатывания денег для компаний, которые продают IDE, такие как VS.

0 голосов
/ 20 февраля 2009

"С MVC вы не можете сойти с ума от государственного кошмара, который так часто встречается в разработке веб-форм, а это значит, что ваши веб-страницы тонкие как у наркоманов "

Модифицировано для этой цитаты!

0 голосов
/ 20 февраля 2009

Все, что я читал об asp.net MVC, говорит, что он способен обслуживать больше запросов страниц, чем веб-формы asp.net.

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

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

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