Цирцея - проект IRC-клиента.
IRC - протокол для обмена сообщениями, позволяющий организовать общение пользователей при помощи приватных чатов и отдельных каналов.
Спецификация протокола описана здесь: https://tools.ietf.org/html/rfc2812
Проект реализован на C# при помощи технологий Windows Forms и WPF.
Изначальная архитектура была разработана таким образом, что основные классы форм - MDIParent, MDIChild, MDIChildServer и т.д. содержали реализацию протокола IRC и бизнес-логику приложения.
В дальнейшем проводился рефакторинг с целью отделить реализацию протокола от бизнес-логики и отображения, за счёт чего появились отдельные проекты IRC.Client.Base, CIRCe.Base и т.д. Но эта работа не была закончена, и поэтому в настоящий момент в проекте сосуществуют две архитектуры - прежняя, полноценная, и новая, недоделанная.
Сам клиент Цирцеи реализован как MDI-приложение с поддержкой добавления собственных плагинов. Каждый плагин выполняется в отдельных потоке и AppDomain'е.
В настоящий момент разработка проекта не ведётся. Любой желающий может продолжить разработку своими силами.
Структура решения IRCClient:
- AddonsChecker: проверка корректности подгружаемых плагинов
- CIRCe.Base: базовая модель приложения Цирцеи, в том числе передаваемая плагину для расширения
- CIRCeAddonTemplate: шаблон для написания собственного плагина для Цирцеи
- CIRCeSetup: установщик Цирцеи
- IRC.Client: реализация IRC-клиента (реализация протокола без UI)
- IRC.Client.Base: модель IRC-клиента
- IRC.Client.Test: простейший тест IRC-клиента
- IRCConnection: управление IRC-подключением (прежняя архитектура)
- IRCProviders: общие приципы работы IRC-клиента (прежняя архитектура)
- IRCWindow: основной проект, поддерживает обе архитектуры
- SIIRC: плагин для проведения SIGame в Цирцее
Для сборки проекта используется Microsoft Visual Studio 2017.
После запуска нужно поменять учётные данные пользователя (кнопка "Настроить свои данные"), заполнив англоязычное имя пользователя и задав адрес почты, иначе не получится подключиться к серверу.
Приложение содержит базовый файл помощи.