Метод кирпича

| Нет трекбэков

Все в реальной жизни состоит из маленьких кусочков. Частичек. Кирпичиков. Модулей...

Очевидно что строить большой объект из нескольких маленьких гораздо проще, чем создавать его сразу на пустом месте. При этом так же понятно, что эти кирпичики должны обладать определенным согласованным интерфейсом друг с другом. Например, при строительстве дома все кирпичи обладают одинаковыми размерами, иначе построить дом неполучится.

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

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

Хочу сразу предупредить - это мой первый опыт использования OSGi, поэтому описанная ниже реализация не является оптимальной, а возможно и содержит ошибки. В процессе дальнейшей работы архитектура бота может быть изменена.

И так, в процессе преобразования бот был разбит на несколько модулей, или по терминологии OSGi - бандлов:

  • jimbot.core - это ядро системы, реализует базовые функции и описывает общие интерфейсы для всех остальных модулей.
  • jimbot.logger - сюда была переведена существующая в боте реализация системы логирования.
  • jimbot.mysql - по сути содержит только библиотеку работы с mysql.
  • jimbot.protocol.icq - реализация протокола icq.
  • jimbot.http - реализация http-сервера на базе jetty и веб-админки для управления ботом.
  • jimbot.script - реализация скриптов для бота, по сути представляет собой просто библиотеку.
  • jimbot.anek - реализация анекдотного бота.
  • jimbot.anek.command - в этом модуле содержатся все команды для анекдотного бота.

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

  • jimbot.testbot - тестовый бот, реализующий простейший автоответчик. Показывает как можно создать свой собственный модуль с ботом.
  • jimbot.protocol.test - реализация тестового протокола, эмулирует прием и отправку сообщений, может использоваться для тестирования ботов.
  • jimbot.anek.command.ext - реализует модуль с дополнительной командой для анекдотного бота. Показывает как можно создать модуль с дополнительными командами для бота.

На сегодня все. В следующих статьях я подробнее остановлюсь на внутренней архитектуре и взаимодействии бандлов друг с другом.

А теперь обещенные ссылки.

Исходные тексты бота можно найти здесь, основная папка - проект jimbot.core, в него вложены проекты остальных модулей. Файлы проектов для eclipse прилагаются.

Основную информацию по OSGi я почерпнул из цикла статей Павла Самолысова, автора библиотеки ICQ, на основе которой работает наш бот.

Как создавать проекты OSGi в Eclipse с картинками описано тут.

Запуск OSGi: eclipse.org/equinox/documents/quickstart.php

Прочее: 1 2 3

UPD.08.04.2010. Забыл про еще одну полезную ссылку. Советую скачать и хотя бы поглядеть эту книжку.

Нет трекбэков

URL для трекбэков: http://jimbot.ru/cgi-bin/mt-tb.cgi/112

Loading

Об этой записи

Сообщение опубликовано 07.04.2010 23:57. Автор — Spec.

Предыдущая запись — JimBot для самых маленьких

Следующая запись — Описание модулей 0.5.0 - jimbot.core

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.

Хостинг для чата

Рейтинг@Mail.ru службы мониторинга серверов