Возвращаясь к ASP.Net Webforms от ASP.Net MVC. Рекомендовать шаблоны / архитектуры?

12

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

Сейчас я работаю над проектом, в котором мы ограничены .Net 2.0 и Visual Studio 2005.

Мне понравилось четкое разделение проблем при работе с ASP.Net MVC, и я ищу что-то, чтобы сделать веб-формы менее невыносимыми. Есть ли рекомендуемые шаблоны или практики для людей, которые предпочитают asp.net MVC, но застряли на .net 2.0 и visual studio 2005?

jlnorsworthy
источник
Спасибо за все предложения, ребята - хотелось бы выбрать более одного ответа.
jlnorsworthy
1
Я надеюсь, что ваше новое задание предназначено только для существующего проекта, а не для чего-то, начинающегося с нуля. Есть много основных вещей, от которых вы будете зависеть, чего не хватает, например, использование Linq для простых запросов к коллекциям. Большое разочарование будет вызвано тем, что вы посмотрите на сгенерированный HTML и увидите, что это совсем не то, что вы ожидали. Удачи, и я надеюсь, что вы успешны.
Крис

Ответы:

7

Я бы порекомендовал Model View Presenter (MVP). Мы использовали это в недавнем приложении WebForms, и это повысило нашу тестируемость и позволило нам обеспечить разделение задач.

http://msdn.microsoft.com/en-us/magazine/cc188690.aspx - отличная статья Джина Пола Буду по этому шаблону; загрузка кода также хороша. Вы можете обнаружить, что вам не нужны DTO и интерфейсы для DTO.

Еще одна хорошая статья на codeproject.com: http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx

Изменить: есть также фреймворк под названием WebForms MVP, но я не знаю много об этом.

Киран
источник
MVP Webvorms выглядит действительно круто, но проект, похоже, зашел в тупик (последний выпуск 07/10). Существует не так много документации или учебных пособий
jlnorsworthy
Также, кажется, требуется .NET 3.5 с пакетом обновления 1 (SP1), поэтому может быть не слишком полезным для вас Тем не менее, образцы и источник могут помочь вам оценить шаблон MVP.
Ciaran
Хорошая мысль, я даже этого не заметил. Я буду следить за этим проектом в том случае, если мне придется делать веб-формы с компанией, которая использует текущие технологии :)
jlnorsworthy
4

Я бы порекомендовал вам понять жизненный цикл страницы .net 2.0

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

Карлс младший
источник
3

Как вы, возможно, уже поняли, вам необходимо отучиться от нескольких вещей, которые вы изучили с ASP.NET MVC (кстати, то же самое происходит, когда человек ASP.NET начинает изучать ASP.NET MVC). Вы все еще можете реализовать шаблон MVC в ASP.NET, но разделение View и Model очень размыто в ASP.NET из-за архитектуры событий / пост-обратной отправки.

По моему мнению, большая часть вашего нового обучения будет связана с Page Life Cycle и Eventing & Controls. Обычные вещи взаимодействия Session, Cache, ViewState и DB остаются прежними.

НТН ...

sajoshi
источник
2

Оформить заказ шаблона Front Controller и Реализация Front Controller в Asp.Net. Делайте это только в том случае, если ваш проект будет хорошего размера. Выполнение этого для небольшого проекта не будет оправдывать возврат инвестиций.

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

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

Прадип
источник
0

В темные дни .NET 1.1 я создал (думаю, как и все) своего рода систему MVC для приложения, которое работало так.

Страница была сделана, чтобы быть своего рода «поддельным» мастером. Это было немного сантехника, чтобы показать меню, сценарии, стили и т. Д.

«Представления» были отдельными пользовательскими элементами управления.

Там была таблица с информацией о каждом представлении. Например, «Продукт» будет загружен ~/Controls/Product.ascxв заполнитель. В таблице также есть поле, которое содержит имя типа класса модели (как будто). В каждой модели реализован известный интерфейс. Этот класс был создан с использованием Activator.CreateInstance()и вызван для инициализации, а затем был передан самому элементу управления (инверсия управления?). Затем элемент управления вызывал различные методы для получения наборов данных или еще чего-нибудь. Сам интерфейс был нормализован, чтобы иметь обычные методы CRUD (Read / Write / List / Delete). Под этим был также слой DAL / ORM.

Это было не красиво, но работало хорошо. Было легко тестировать и разрабатывать, и большинство разработчиков, которые пришли на борт, довольно быстро освоились. Больше всего его было относительно просто создать.

kprobst
источник