2012-06-13 3 views
1

В ситуации:ASP.NET - Повторное использование пользовательского интерфейса для нескольких проектов?

Некоторое время назад я создал интерфейс для добавления/изменения/удаления элементов в БД. Он был создан как отдельный проект, и мы все еще используем этот конкретный экземпляр кода. Я буду называть эту «версию 1».

Через некоторое время после того, как я это закончил, я продублировал код и интегрировал его в гораздо более крупный проект. Я скопировал все таблицы БД, которые были использованы в БД исходного проекта, в БД, который этот проект уже использовал. Мне также пришлось дублировать внешний интерфейс здесь, но это задняя часть, с которой я связан. Требования для этого интерфейса (я буду называть это «версия 2») были немного сложнее, поэтому мне пришлось продолжать работать над ним, а также внести некоторые изменения в таблицы БД.

Это по существу две разветвленные версии одного и того же интерфейса. Тем не менее, версия 1 не получила большого внимания, поскольку концепция версии 2. Некоторые изменения, которые я внес в версии 2, были не просто новыми функциями, но улучшениями/исправлениями ошибок, которые имеют отношение к версии 1. Я тоже должен был внести эти изменения в версию 1, но, к сожалению, я этого не сделал. В будущем мне нужно будет сделать улучшения для обеих версий, и некоторые из этих улучшений применимы к обоим.

Я бы очень хотел объединить 2 интерфейса, так как я уверен, что это уменьшит мою нагрузку в долгосрочной перспективе. Честно говоря, я бы хотел, чтобы отказался от версии 1 и адаптировал версию 2 UI к DB версии 1.

Мой первый инстинкт - переносить все на пользовательский элемент управления, который имеет атрибут «версия». Затем эта версия будет использоваться для скрытия/отображения элементов управления, которые являются или не имеют отношения к этой версии, и она также будет использоваться для определения того, какие запросы/хранимые процедуры БД использовать. Проблема в том, что весь этот интерфейс охватывает 5 страниц. Некоторые из этих страниц открываются в виде диалогов с одной из 5 страниц. Я полагаю, что я мог бы просто иметь один div на интерфейс, а затем, когда! IsPostBack, я могу установить свойство Visible каждого div в соответствии с переменной querystring. Однако, похоже, это было бы ужасно грязно, и это было бы много кода и разметки на одной странице. Я предполагаю, что в качестве альтернативы я мог бы иметь 5 пользовательских элементов управления, но это просто похоже на нечетный дизайн.

Есть ли другие жизнеспособные решения?

ответ

0

я уже поддержание 4 продуктов с почти одинаковыми интерфейсами:

  • они начали с одного проекта
  • получил клонированного и разветвленные
  • я уже медленно вновь сливаясь их

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

После этого у меня есть файл настроек project-local, который определяет, какие функции не должны существовать в одном или другом.

+0

Спасибо за ответ, но я не совсем понимаю логистику того, как это реализовать. В основном для версии 2 он не работает как отдельный проект; прямо сейчас это всего лишь папка в проекте нашего основного продукта. Он должен использовать файл web.config основного проекта для строки подключения к аутентификации/БД, и я должен иметь доступ к нему через диалог, созданный в нашем основном проекте. Для версии 1 я не требую никакой проверки подлинности, и это будет отдельный проект. Надеюсь, у меня есть смысл.Я добавлю несколько деталей к моему вопросу. – Itison

Смежные вопросы