Перенос классического ASP - Webforms или ASP.NET MVC?

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

По-видимому, по крайней мере HTML ASP может быть проще преобразовать в MVC, чем было бы вырывать фрагменты HTML и превращать их в элементы управления ASP.NET, репитеры, datagrids и т.д. Кроме того, добавить в обработку и логику для ViewState и т.д. можно добавить работу.

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

Предположим, что этот код ASP написан очень хорошо (что не всегда верно, конечно), так что на самом деле вопрос заключается в том, что лучше всего хорошо спроектированный ASP-сайт лучше переносится на MVC, чем WebForms?

(Заметьте, что я очень новичок в ASP.NET MVC, поэтому мне может быть что-то не так важно).

Ответ 1

Это зависит от того, как структурировано классическое приложение asp.

Тег сервера, смешанный с HTML, похож на asp.net mvc, но MVC не такой грязный (или не должен быть). Возможно, вы сможете переместить классический код презентации asp в MVC-представление легче, чем в веб-форму. Также классические приложения asp обычно разрабатывались с учетом безгражданности Интернета. Вероятно, в вашем классическом asp нет ничего похожего на postabacks или viewstate. Классический ASP также использует обычные элементы html, а не элементы управления веб-формой asp.net. В этом отношении он сопоставляет MVC намного ближе, чем веб-формы.

Если вы не знаете веб-формы asp.net или asp.net mvc, я бы сказал, что MVC - это путь.

Если вы хорошо знаете веб-формы и не знаете много о MVC, я бы сказал, что веб-формы - это путь.

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

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

Ответ 2

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

Ответ 3

Я не думаю, что было бы проще конвертировать то другое.

Вы можете закодировать ASP.NET почти так же, как и код ASP, если хотите разместить несколько ключевых элементов в коде, которые вы можете получить в aspx. Нет привязки данных, нет gridview и нет ретранслятора. Состояние представления здесь, чтобы помочь вам легко понять, нет необходимости использовать его, если вы этого не хотите, и его можно отключить в файле web.config и включить атрибут страницы. В веб-формах также есть AspCompat, который позволяет получить доступ к объектам Request and Response или asp, что позволит при необходимости преобразовывать страницы за страницей.

Что касается MVC.net, то метод отображения HTML очень похож. Это, на мой взгляд, то, где сходство заканчивается. Вам все равно нужно будет отделить всю вашу логику от модели MVC.

Начиная с ASP и перейдя в Web.Form и теперь MVC.Net, я могу сказать вам, что WebForms были немного раздражающими/разочаровывающими, чтобы учиться, причем 90% учебных пособий MS учат вас наихудшим возможностям IE (SQL-соединения на страницу, перетаскивая наборы данных в дизайнерах). Однако, как только вы пройдете мимо этого, вы сможете многое сделать гораздо быстрее, чем в asp (разбиение на страницы или создание простого документа, например, с редактированием, например), однако я никогда не видел большого проекта веб-форм с n-уровневым дизайн, который, как я думал, легко отслеживать, внедрять и использовать.

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

Я лично попробую webforms, чтобы вы знали, насколько лучше MVC, когда вы начнете его использовать.

Ответ 4

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

Я бы сказал, что MVC будет лучшим местом для начала.

Ответ 5

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

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

Я говорю MVC всю дорогу!

Ответ 6

В любом случае, всегда лучше начинать с нуля и реализовывать только логику.

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

На мой взгляд, и, оглядываясь назад на мои знания ASP, я бы пошел в Web Forms вместо MVC, во-первых, это язык, на котором он на "рынке" некоторые некоторые ёры теперь и очень используются во всем мире, в то время как MVC все еще находится в бета-версии, поэтому не подходит для производственной среды (говорит Microsoft, даже если этот сайт написан в MVC).

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

Ответ 7

Это зависит. ASP.NET MVC не является серебряной пулей и во многих отношениях делает несколько шагов назад с точки зрения производительности разработчиков.

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

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

Ответ 8

Определенно ASP.NET MVC лучше с точки зрения стиля. (Тем не менее, вам не нужно использовать Repeaters и другие глупые элементы управления в приложении WebForms, вы можете просто использовать встроенный код так же, как в MVC.)

MVC в целом, хотя и был бы более легким портом, обеспечил бы лучшую структуру и стал бы более приятным.

Ответ 9

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

Ответ 10

ASP.NET MVC лучше, чем веб-формы для автоматизированного модульного тестирования пользовательского интерфейса. Однако автоматическое тестирование модулей в целом - это плохая практика и еще хуже для пользовательского интерфейса. Ручное тестирование - лучший способ создать качественное приложение и наилучшим образом использовать время разработки. Создание автоматических модульных тестов - пустая трата времени, и вы получаете код нежелательной почты для поддержки основного кода. Многие разработчики, такие как автоматизированные модульные тесты, потому что считают, что они доказали, что их приложения работают, что неверно. Они также стараются избегать разработки приложений с использованием UML, поэтому они используют тестовую разработку для разработки с использованием кода, который отвечает за плохо разработанные приложения. С TDD вы являетесь рефакторингом кода, который вы написали плохо, не задумываясь о большой картине с использованием моделей в первую очередь.

Итак, MVC бесполезен. Web Forms использует лучшую объектно-ориентированную модель, тогда как MVC больше похожа на старый стиль классического ASP и другие старые шаблоны дизайна. Это 2010 и MVC мертв. Веб-формы похожи на ORM для пользовательского интерфейса.