Обработка различий в возможностях между версиями уровня обслуживания - PullRequest
0 голосов
/ 07 февраля 2011

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

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

1 Ответ

1 голос
/ 08 февраля 2011

Если различия главным образом заключаются в представлении, частичное представление и замена RenderPartial на собственное расширение RenderPartialIfSupported должны сохранять код достаточно чистым. Расположите представления в папках версий, и вам не нужно указывать нужную версию непосредственно в коде основного представления.

Если различия в версии легко связать с действиями, атрибут фильтра действий является хорошим подходом - тогда вы можете просто добавить [RequireVersion (1.1)] к каждому действию, которое поддерживается не всеми.

Вы также можете комбинировать их с пользовательской версией ActionLink, которая находит соответствующее действие и его атрибут RequireVersion и ничего не отображает, если действие не поддерживается.

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