LINUX.ORG.RU

Принцип плагинной архитектуры


0

1

Сделал бота для IRC. Функционал хотелось бы вынести в плагины. Но приложения такого типа я ещё не писал. Т.е. ПОЛНОСТЬЮ модульное приложение - это для меня что-то новое.

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

Мне нужна литература по этому вопросу. Лучше объёмные доки, но подойдут и статьи. Не откажусь также от дельных советов.

★★

Забей на плагины :)

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

Хочешь реальную расширяемость - сделай биндинги к языку высокого уровня, например Python и главную логику напиши на нём. Тогда твою программу будет легко изменять.

welkam ★★
()
Ответ на: комментарий от welkam

Не, всё это мне понятно. Но бота я хочу выполнить именно в таком стиле. Не отговаривайте.

troorl ★★
() автор топика

Не забивай на плагины :)

Надо понимать одно: приложение, основанное на плагинах - это фактически библиотека (подпрограмм или классов). Соответственно читай о проектировании библиотек и философии software tools (лежит в основе Unix, который есть первая широко используемая плагинная среда :), читай Кернигана и Плоджера "Программные инструменты" (издана лет 25 назад на русском), Реймонда "Art of Unix Programming" (имеется в свободном доступе в Сети). Поройся документацию по Eclipse (особенно OSGi).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Реймонда я уже читал. Щас вот взял, снова перелистал и нашёл промер с GIMP. Я вижу это так:

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

Затем пишется маленькая программка с бесконечным цыклом, в которой вызываются все методы класса.

Но вот как собственно плагины в эту схему вкручивать? Может создать базовый класс, который будут наследовать все плагины? Но всё-равно мне не понятно, каким макаром передавать управление и параметры плагинам... Самое непонятное - это точка входа.

troorl ★★
() автор топика
Ответ на: комментарий от troorl

Так ты хочешь въехать в архитектуру или побыстрее начать кодить? Определись.

Тебе вряд ли кто-то здесь возьмется давать конкретные советы, не зная точно, что ты хочешь делать.

> Затем пишется маленькая программка с бесконечным цыклом, в которой вызываются все методы класса.

_Все_ методы? Зачем? Я не понимаю (но пусть это тебя не останавливает, если ты уверен в своих силах :))

Плагинные программы можно строить в 2-х стилях: Unix, когда некая порция данных проводится по цепочке обработчиков; Windows, когда ядро определяет список событий, на которые плагин может реагировать, и некие общие данные, которые плагин меняет, обрабатывая события (конечно, каждый плагин может определять дополнительные события и данные). Можно, конечно, определить и гибридную схему.

А ты уверен, что IRC-бот стоит плагинной архитектуры? ;)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Так ты хочешь въехать в архитектуру или побыстрее начать кодить? Определись.

И то, и другое =) Просто мне мешает непонимание конкретно взятого момента - точка входа.. Как это реализуется на практике? Откуда ядро знает, куда передавать данные, как оно взаимодействует с плагинами? Лучше делать это на уровне базовой библиотеки или через ядро или ещё как-нибудь? Вот этот узкий момент мне совершенно неясен.

> _Все_ методы? Зачем? Я не понимаю (но пусть это тебя не останавливает, если ты уверен в своих силах :))

Это я неудачно выразился =)

> А ты уверен, что IRC-бот стоит плагинной архитектуры? ;)

Нет конечно. Но я уже месяц ничего не писал. И стимула у меня нет совершенно - работа не располагает. Стимул появился, когда пришла в голову идея вот такого бота. Хотелось бы его красиво написать =)

troorl ★★
() автор топика
Ответ на: комментарий от troorl

> Просто мне мешает непонимание конкретно взятого момента - точка входа..

Не понимаю я, чего ты не понимаешь :) Программа запускается, считывает конфигурацию, грузит плагины, они привязываются к событиям. Программа объявляет событие "Я готова к установлению связи", какой-нибудь плагин говорит ей "свяжись с XXX", она связывается, объявляет событие "связь установлена", кто-то говорит ей "Пошли туда сообщение 'Привет, казлы!", и т.д. Набор событий/API ядра и событий/API плагинов придумай сам.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.