Создание динамических форм в asp.net c #

Итак, мне нужен некоторый рефакторинг ввода для приложения asp.net (C #), которое в основном представляет собой основу для создания динамических форм (любые формы ). С точки зрения высокого уровня, есть таблица с формами, а затем есть таблица со всеми полями формы, где между ними от одного до многих. Существует таблица проверки, в которой каждое поле может иметь несколько типов проверки, от таблицы полей формы до таблицы проверки.

Таким образом, проблема в том, что это приложение было продано как самое лучшее. универсальное настраиваемое решение для всех клиентов. Итак, идея в том, какую форму они хотят, мы можем построить просто с использованием конфигураций БД. Дело в том, что это не всегда возможно, потому что существует сложная взаимосвязь между полями и сложная взаимосвязь между самими формами. Кроме того, кодовая база существует только один раз, и это для нескольких клиентов, каждый из которых размещает ее самостоятельно. Для каждого клиента существует очень специфическая логика, и ВСЕ они находятся в одной кодовой базе без реального разделения. Иногда было слишком сложно сделать его универсальным, поэтому бывают случаи, когда он имеет жестко запрограммированную логику (например, если formID = XXX, тогда выполните _ ). Вы также можете иметь вложенные формы, например, по одному набору полей в каждой форме.

Обычно, когда один клиент запрашивает изменение, мы вносим это изменение и развертываем его на этом клиенте, но затем другой клиент запрашивает другое изменение, и мы вносим это изменение и развертываем его для ЭТОГО клиента, но изменение от более раннего клиента нарушает его, и его попытки отладки являются головной болью, потому что ВСЕ динамическое. Невозможно откатить более раннее изменение, потому что тогда другой клиент будет запутан.

Это не сделано в реальной трехуровневой архитектуре - это веб-сайт со ссылками на класс БД и библиотеку классов. Бизнес-логика есть на самом веб-сайте, в библиотеке классов и в хранимых процедурах базы данных (проверка выполняется в сохраненных процедурах).

Я был назначен ответственным за реорганизацию всего этого, и эти мои мысли / вопросы:

  1. Я думаю, что это плохая модель в целом, потому что одна из вещей, которые, как я слышал, сказал один из разработчиков, заключается в том, что каждый раз, когда какой-либо клиент вносит изменение, мы должны развертывать его для всех - но это не реалистично, если у нас есть, скажем, 20 клиентов - потребуется регрессионное тестирование ВСЕГО, поскольку мы не знаем воздействия ...

  2. Всего существует около 100 форм, и в них есть некоторое сходство (не много). Но я думаю, что идея о том, что динамический движок может решать ВСЕ запросы формы, тоже была нереалистичной. Клиенты приходят с самыми странными просьбами. Например, у них есть этот движок, выполняющий обычную форму ввода данных И форму поиска.

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

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

Я читал Мартина Фаулера «Рефакторинг» и Майкла Фезерса, эффективно работающего с устаревшим кодом "- и они хороши, но я чувствую, что они были написаны для приложения, которое было" немного "лучше спроектировано, где это все еще трехуровневая архитектура и есть" некоторое "сходство логики ..

Мысли / ввести кого-нибудь?

О, и «Помогите!»

7
задан M.R. 12 August 2011 в 17:49
поделиться