ASP.Net веб-приложение с проблемой подключаемой архитектуры - PullRequest
1 голос
/ 16 сентября 2010

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 17 сентября 2010

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

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

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

После этого:

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

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

0 голосов
/ 20 сентября 2010

Спасибо за ответы! Наконец-то я получаю то, что искал :) ... Я видел учебник только для моего случая, который решается с помощью MVC v.2, и идеально подходит для моей идеи.

Здесь можно найти здесь . Он очень простой, но он решает проблему со страницами плагина и использованием главной страницы, также мы можем очень легко управлять лицензиями для плагина и его версий. Другое дело, что мне нравится jQuery, который тесно используется с ним, поэтому идея работает для меня:)

0 голосов
/ 16 сентября 2010

Не прямой ответ на ваш вопрос, но вы изучили MEF

Он основан на тех же принципах и может помочь вам получить преимущество в том, чего вы пытаетесь достичь.

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