ЕСЛИ мы говорим.NET, попробуйте приложения.NET Сценариев VBScript на CodeProject. Много конкретных примеров там.
Ниже сайты, реализовывая различные методы расширения приложения
Вместо того, чтобы перестраивать колесо, используйте платформы в руке. Eclipse и Netbeans оба поддерживают основанные на плагине расширения. Необходимо работать в Java все же.
Контроль "CAB" - Microsoft Платформа Стандартных блоков Приложения Состава . Я думаю, что у них есть "веб-версия" этого также...
Я только что начал разрабатывать умное клиентское приложение. Это две опции, которые я рассматриваю.
Используя Microsoft Система. Пространство имен AddIn . Выглядит очень перспективным, однако это может быть немного комплекса для нашего решения для конца.
Или Умный Клиент - Составной объект Блок приложений UI от Microsoft
Недавно, я посмотрел на взятие компонентов и Составной объект Блок приложений UI и Система. Пространство имен AddIn для создания моего собственного. Так как исходный код доступен для CAB, который легко расширить. Я думаю, что нашим решением для конца будет версия легкого веса CAB, definatly использование Блок приложений
ЕдиницыКонечно, существует известное, Открывают Closed Principle - http://en.wikipedia.org/wiki/Open/closed_principle
Вы пытаетесь достигнуть двух конкурирующих голов:
Объяснение: Для поощрения повторного использования кода необходимо быть в состоянии расширить существующие классы и назвать их методы. Это не возможно, когда методы объявляются "частные", и классы являются "окончательными" (и не может быть расширен). Таким образом для удовлетворения этой цели все должно быть общедоступным и доступным. Никакие частные данные или методы.
при выпуске второй версии программного обеспечения Вы найдете, что многие идеи версии 1 были просты неправильный. Необходимо изменить много интерфейсов или код, имена методов, удалить методы, повредить API. Если Вы сделаете это, многие люди будут отворачиваться. Таким образом, чтобы быть в состоянии развить Ваше программное обеспечение, компоненты не должны представлять ничего, что не абсолютно необходимо - за счет повторного использования кода.
Пример: Я хотел наблюдать положение курсора (каре) в SWT StyledText. Каре не предназначено, чтобы быть расширенным. Если Вы сделаете это, Вы найдете, что код содержит проверки как, "этот класс в пакете org.eclipse.swt", и много методов является частным и окончательным и этажерка. Я должен был скопировать приблизительно 28 классов из SWT в мой проект только для реализования этой опции, потому что все заблокировано вниз.
SWT является хорошей платформой для использования и ад для расширения.
OSGI является хорошим практическим примером технической платформы, позволяющей сделать то, что Вы после.
Расширяемость и способность записать плагин должны иметь дело с [1 122] сервисный жизненный цикл
Одна из основных функций модуля как единица deployment†¦ что-то, что мы можем или создать или загрузить и установить для расширения функциональности нашего приложения.
Вы найдете хорошее введение здесь на центральном понятии [1 123] сервис (который связан с Вашим вопросом, и которые объясняют некоторые проблемы вокруг сервисов, ключевого компонента для расширяемости).
Извлечение:
, Почему сервисы тогда так важны раз так, много приложений могут быть созданы без них? Ну, сервисы являются самым известным способом разъединить компоненты программного обеспечения друг от друга.
Один из самых важных аспектов сервисов - то, что они значительно минимизируют проблемы загрузки класса, потому что они работают с объектами-экземплярами, не с именами классов. Экземпляры, которые создаются поставщиком, не потребителем. Сокращение сложности довольно удивительно
Не, только делают сервисы минимизируют конфигурацию, они также значительно сокращают количество общих пакетов.
Архитектура подключаемых модулей становится очень популярной благодаря своей расширяемости и, следовательно, гибкости.
Для c ++ сервер Apache httpd фактически основан на подключаемых модулях, но вместо этого используется концепция модуля. Большинство функций apache реализованы в виде модулей, таких как кеширование, перезапись, балансировка нагрузки и даже потоковая модель. Я когда-либо видел это очень модульное программное обеспечение.
А для java Eclipse определенно основан на плагинах. Ядро Eclipse - это модульная система OSGI, которая управляет пакетами - еще одна концепция плагинов. Bundle может предоставлять точки расширения, на которых мы можем создавать модули с меньшими усилиями. Самая сложная вещь в OSGI - это его динамическая характеристика, что означает, что пакеты могут быть установлены или удалены во время выполнения. Больше никакого синдрома остановки мира!
Ну, это зависит от языка.
В зависимости от того, на каком языке вы используете, я мог бы порекомендовать некоторые учебные пособия / книги. Я надеюсь, что это было полезно.
Статья написание приложений на основе плагинов четко объясняет обязанности различных частей архитектуры, используя очень простой пример; Исходный код предоставляется (vb.net). Я нашел это очень полезно в понимании основных концепций.