Для этого мне нравится помещать <link>
элементы в страницу <head>
, содержа URL для использования для запросов. Они могут быть сгенерированы Вашим языком серверной стороны, таким образом, они всегда указывают на правильное представление:
<link id="link-action-1" href="${reverse_url ('action_1')}"/>
становится
<link id="link-action-1" href="/my/web/root/action-1/"/>
и может быть получен JavaScript с:
document.getElementById ('link-action-1').href;
Это определенно возможно.
Вам нужно будет определить довольно полный интерфейс, который представляет все, что должны будут делать ваши плагины. Вы должны подходить к этому, различая, что является «ядром» вашего приложения и где находятся точки расширяемости. Например, где будут доступны плагины? Будут ли они вкладками на странице или ссылками на боковой панели? Какие свойства должен иметь каждый плагин, чтобы поместиться в контейнер плагина?
Как правило, плагины перечисляются посредством отражения путем поиска сборок, реализующих интерфейс плагина.
Просто для поощрения, мы сделали это с помощью корпоративный продукт, который обеспечивает общую структуру для интерфейсов «управления» для веб-сайтов. Разработчикам просто нужно добавить подключаемый модуль dll, который создает определенные страницы свойств,
Всегда существует dll-путь, в котором вы определяете некоторые интерфейсы, которым следуют плагины.
Но для веб-приложения, особенно ASP.NET MVC, вам нужен контроллер, представления и так далее. Вероятно, их можно включить в файл dll, используя подготовленную фабрику контроллеров, чтобы справиться с этим, но было бы сложно разработать эти плагины. Некоторое вдохновение для встроенного содержимого кода (или db): Хаккнул, что
ASP.NET MVC версии 2 будет поддерживать области, в которых вы можете поместить некоторые части приложения в разные папки в приложении. Таким образом, вы можете просто загрузить несколько файлов, и приложение распознает эти новые файлы. Подробнее читайте здесь Блог Haacked
PS: Я нашел другого человека здесь, на SO, который задает тот же вопрос, что и я: Архитектура подключаемого модуля для ASP.NET MVC Это может быть полезно для тех, кто исследует ту же тему.