Приложение веб-форм ASP.Net с проблемой подключаемой архитектуры

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

Например, у меня есть MyHostApplication с главной страницей и файлом default.aspx. Когда он скомпилирован, в основном проект будет иметь файлы Site.Master и Default.aspx в основном каталоге и MyHostApplication.dll в " бин/" реж. Все плагины будут, скажем, в каталоге «plugins/». Затем я создаю подключаемый модуль калькулятора как новый проект с его веб-страницей Calc.aspx в этом каталоге и сборкой Calculator.dll в каталоге "bin/"... или с web.config я могу переместить его куда-нибудь. Я могу загрузить сборку в хост-приложение с помощью LoadAssembly и получить основной класс (который у меня есть как базовый класс, и все базовые классы плагинов наследуют этот класс) и получить от него некоторую информацию в свойствах, такую ​​как имя, версия, положение в меню и др.

Теперь проблема: когда я перехожу к /plugins/Calculator.aspx (скажем, из меню «Инструменты», которое я создал на хосте плагина), он загружает свою сборку и не знает об основном хосте. заявление. Но это должно пройти через основное приложение. Также было бы лучше, если бы я каким-то образом мог использовать главную страницу основного приложения со страницей плагина.

Может ли кто-нибудь дать мне несколько подсказок здесь? Заранее спасибо.


person Vasil Popov    schedule 16.09.2010    source источник


Ответы (3)



Атрибуты могут быть очень полезными в качестве механизма интеграции.

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

Во-первых, вам нужно спроектировать (на бумаге / доске / в голове) набор атрибутов, которые дадут вам то, что вам нужно — вы просто хотите использовать атрибуты для «нахождения» веб-форм — или вы хотите использовать их для предоставления других полезных метаданных?

После этого:

  • Разработайте фактические атрибуты в подходящем месте в вашей системе (возможно, в общей библиотеке типа osme).
  • Украсьте каждую веб-форму атрибутами
  • Разработайте компонент, который использует отражение для поиска классов. (веб-формы), украшенные соответствующими атрибутами
  • Используйте данные, извлеченные во время отражения, для построения навигации.

Если вы не знакомы с атрибутами, прочтите это руководство может помочь.

person Adrian K    schedule 17.09.2010
comment
Я делал все кейсы на бумаге раньше, поэтому мне ясно, что нужно делать. Проблема для меня заключалась в том, что с идеей веб-форм, когда мы запрашиваем некоторые из веб-страниц, которые были скопированы с помощью плагина, как он идентифицирует основное приложение, потому что оно будет запускать свою сборку, больше ... проверка лицензий и если зарегистрированы пользователь может использовать этот плагин. Также использование мастер-страницы сложно. - person Vasil Popov; 20.09.2010