Лучший способ расширить существующую функциональность веб-сайта при сохранении функциональности базовых библиотек? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть существующая сборка сайта в c # 3.5 с использованием asp.net mvc 1.

Есть раздел сайта, требующий дополнительного поведения.По сути, необходимо настроить объект, который находится в одной из базовых библиотек, на расширенные функции.Если эти расширенные функции были указаны в объекте, то на странице сведений об этом объекте должно быть представлено дополнительное содержимое / функциональность.

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

Мои проблемы начинаются на уровне контроллера / представления.Все действия контроллера уже записаны и находятся в базовой библиотеке, которую я не хочу изменять.Я могу внести незначительные изменения в них - однако, нельзя вносить какие-либо критические изменения, и все существующие функциональные возможности должны быть сохранены, поскольку библиотека используется в другом месте.Однако я могу создать столько новых контроллеров / служб, сколько мне захочется.

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

Это делает мою страницу с данными очень грязной.Теперь мне нужно выяснить, был ли объект уже расширен, и если нет, показать элементы управления, которые позволяют пользователю преобразовать его в расширенный тип.Если объект был расширен, тогда мне придется отобразить весь его расширенный контент на странице.Это было бы хорошо, если бы функциональность была изолирована для определенного раздела страницы (да, одно рендеринг!), Но расширенный контент будет выводиться через различные части страницы.Кажется грязным делать всюду разные рендеры, которые должны выводить разный контент только в зависимости от того, является ли он расширенным объектом или нет.

Я наполовину подумал сделать один Ajax-запрос, а затем динамически отображать каждый изразделы, использующие javascript при загрузке страницы сведений.

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

Каков наилучший способ приблизиться к этомутип проблемы?

1 Ответ

1 голос
/ 21 ноября 2011

Не могли бы вы создать интерфейс, соответствующий существующей функциональности. Затем внедрите интерфейс с новыми функциями и используйте заводскую загрузку, какую бы она ни потребовалась.

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

просто мысль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...