пятница, 19 августа 2011 г.

Sharing ASP.NET MVC views across multiple projects (apps)

Если ведется разработка нескольких проектов, использующих ASP.NET MVC, вполне возможна ситуация, когда появляются представления (views), или частичные представления (partial views) с идентичной функциональностью. Например, календарь для выбора даты. Но попытка получить из одного приложения доступ к ресурсам другого будет пресечена политиками безопасности (что, в принципе, разумно).

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

Для решения задачи целесообразно применить возможность IIS создавать виртуальные директории. Теперь, при разворачивании (deployment) решения, необходимо создать одну физическую директорию (physical directory), содержащую общие представления (shared views), и после этого создать по виртуальной директории (virtual directory) для каждого проекта, которые будут отображаться на эту единственную физическую.

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

Комментариев нет:

Отправить комментарий