6

i.e. Является ли MVP еще лучшим выбором, когда MVC не является вариантом?Рефакторинг устаревшего приложения WebForms для лучшего разделения проблем

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

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

Часть приложения, к которому я обращаюсь здесь, может быть охарактеризована как пользовательский интерфейс для набора CRUD-операций над бизнес-объектами, которые сохраняются в реляционной базе данных.

Существующий пользовательский интерфейс использует элемент управления MultiView для перемещения между редактированием связанных бизнес-объектов (ассоциаций один или один-много/родитель-ребенок). Да, это правильно - все на одной странице. К сожалению, есть очень экономное использование UserControls, поэтому разметка и код-код составляют сотни строк.

При каждом представлении FormView управляет CRUD над бизнес-объектами через различные объекты ObjectDataSources. Внутри элемента ItemTemplate каждого FormView различные серверы связывают привязку данных к полям или методам объекта ObjectDataSource.

Я хотел бы представить больше разделения проблем и получить некоторые из кодов кода из кода страницы.

Мои исследования до сих пор подсказывает мне, что я мог бы рассмотреть:

  1. Use a flavour of Model View Presenter; более конкретно - use an ObjectContainerDataSource from the Web Client Software Factory, чтобы упростить переход между текущим пользовательским интерфейсом и набором новых классов Presenter.

  2. Сборка с нуля с помощью рамки MVC (не опция).

  3. Оставить хорошо в покое; шаблон MVP оправдан только в том случае, если мне нужно повторно использовать мою презентацию в разных сценариях пользовательского интерфейса?

Если я согласен с (3), я все равно хотел бы знать, как начать рефакторинг, чтобы лучше разделить презентацию.

Что вы хотите сделать? любые другие идеи с благодарностью получили ...


Вот еще фон для любого, кто заинтересован:

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

Слой бизнес-объекта уже построен в очень последовательном порядке. Хотя мне это может и не понравиться, я не могу оправдать его. Каждый объект - это собственный объект репозитория/доступа к данным, в котором существуют статические методы для «get by ID» и «get list by criterion». По возможности общие операции выполняются в абстрактном базовом классе. Каждый бизнес-объект делегирует работу доступа к данным на уровень доступа к данным, который использует ADO.NET 2.0 Поставщики фабричных механизмов остаются относительно абстрагированными от конкретного Поставщика. В этом отношении он имеет много общего с любым приложением, которое использует блок приложений доступа к данным из Microsoft Enterprise Library.

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

ответ

2

http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx имеет хороший пример выполнения MVP с веб-формами. Преимущество заключается не только в том, что ваш пользовательский интерфейс отделен от BL - реальное удовольствие заключается в том, что вы можете писать тесты для кода.

3

WebForms теперь вытекая усилие в виде ASP.NET Web Forms MVP project

»... Есть еще целый ряд убедительных преимуществ Web ASP.NET формы.

АГУ. Проект NET Web Forms MVP - это ... подход, облегчающий разделение проблем и проверяемости , поддерживая при этом быстрое развитие, что веб-формы были построены для доставки «

Rob Conery has concerns, что это может быть затраченных усилий и ненужным отвлечение теперь у нас есть MVC, но на данном этапе я все еще думаю, что исходный код стоит посмотреть ...