i.e. Является ли MVP еще лучшим выбором, когда MVC не является вариантом?Рефакторинг устаревшего приложения WebForms для лучшего разделения проблем
Я думал, что попрошу об этом здесь, так как я уверен, что есть другие, такие как я, у которых нет роскоши быть в проекте с зеленым полем и вы хотите реорганизовать интерфейс webforms для лучшего разделения презентации от бизнес-объектов ...
Я работаю над устаревшим приложением, которому необходимо добавить относительно небольшие дополнительные требования, улучшения и исправления ошибок.
Часть приложения, к которому я обращаюсь здесь, может быть охарактеризована как пользовательский интерфейс для набора CRUD-операций над бизнес-объектами, которые сохраняются в реляционной базе данных.
Существующий пользовательский интерфейс использует элемент управления MultiView для перемещения между редактированием связанных бизнес-объектов (ассоциаций один или один-много/родитель-ребенок). Да, это правильно - все на одной странице. К сожалению, есть очень экономное использование UserControls, поэтому разметка и код-код составляют сотни строк.
При каждом представлении FormView управляет CRUD над бизнес-объектами через различные объекты ObjectDataSources. Внутри элемента ItemTemplate каждого FormView различные серверы связывают привязку данных к полям или методам объекта ObjectDataSource.
Я хотел бы представить больше разделения проблем и получить некоторые из кодов кода из кода страницы.
Мои исследования до сих пор подсказывает мне, что я мог бы рассмотреть:
Use a flavour of Model View Presenter; более конкретно - use an ObjectContainerDataSource from the Web Client Software Factory, чтобы упростить переход между текущим пользовательским интерфейсом и набором новых классов Presenter.
Сборка с нуля с помощью рамки MVC (не опция).
Оставить хорошо в покое; шаблон MVP оправдан только в том случае, если мне нужно повторно использовать мою презентацию в разных сценариях пользовательского интерфейса?
Если я согласен с (3), я все равно хотел бы знать, как начать рефакторинг, чтобы лучше разделить презентацию.
Что вы хотите сделать? любые другие идеи с благодарностью получили ...
Вот еще фон для любого, кто заинтересован:
Домен в фармацевтических исследованиях, но это довольно неуместными и вы можете думать о нем, как довольно типичный линейчатым бизнес-пользовательская конфигурация семейства настроек, которые формируют условия работы другой части приложения.
Слой бизнес-объекта уже построен в очень последовательном порядке. Хотя мне это может и не понравиться, я не могу оправдать его. Каждый объект - это собственный объект репозитория/доступа к данным, в котором существуют статические методы для «get by ID» и «get list by criterion». По возможности общие операции выполняются в абстрактном базовом классе. Каждый бизнес-объект делегирует работу доступа к данным на уровень доступа к данным, который использует ADO.NET 2.0 Поставщики фабричных механизмов остаются относительно абстрагированными от конкретного Поставщика. В этом отношении он имеет много общего с любым приложением, которое использует блок приложений доступа к данным из Microsoft Enterprise Library.
В NUnit есть довольно исчерпывающие интеграционные тесты, которые устанавливают тестовую базу данных с нуля, поэтому они берут возраст для запуска, но по крайней мере они проверяют, что материал работает так, как должен (в какой-то момент в любом случае ;-). На данный момент практически нет настоящего модульного тестирования (пока).