О dc++ Протокол NMDC/ADC Вопросы Клиенты Ссылки

Сообщество dc++ не может порадовать разнообразием клиентов для своей сети. Большинство программ базируется на одном общем предке dc++/c++, остальные (такие, как NMDC/VB, DCPro/delphi и т.п.) вымерли, не выдержав конкуренции.

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


Клиент: dc++
Автор: Jacek Sieka, aka arnetheduck
Сайт: http://sourceforge.net/projects/dcplusplus/

Автор обчитался теоретиков объектной c++-разработки, паттернов проектирования и архитернурного дизайна программ. В результате проект получился модульным, хорошо продуманным и легко расширяемым. Внимание разработчика уделяется не функциональности программы, а тестированию технологий и подходов к проектированию. Ядро программы часто претерпевает существенные изменения, если обнаруживается более красивое решение, чем используемое в предыдущей версии. Часто код сильно переписывается из-за появления интересных библиотек (таких как boost, smartwin - при переходе на неё с WTL произошло полное переписывание интерфейса программы). Не удивительно, что проект обладает самой низкой функциональностью, но неплохой читаемостью исходного кода.


Клиент: StrongDC++
Автор: Big Muscle
Сайт: http://sourceforge.net/projects/strongdc/

Ответвление dc++. Автор сконцентрировался на наращивании сетевого потенциала программы, хотя дорабатывается и интерфейс, и все остальные компоненты. Архитектурными соглашениями dc++ часто жертвуют в пользу быстрого появления нужной возможности, что снижает стабильность ядра. Оптимизируются параметры для увеличения скорости передачи данных, здесь первой появилась многопоточная закачка. С другой стороны, нововведения не отличаются глубокой продуманностью реализации. Когда в dc++ появилась более изящная и более функциональная многопоточная закачка, её собственная реализация в StrongDC была безжалостно заменена.


Клиент: ApexDC++
Авторы: Crise, Lee
Сайт: http://sourceforge.net/projects/apexdc/

Ответвление StrongDC++, всегда синхронизируется с изменениями в его коде. В рамках этого проекта развивается пользовательская функциональность. Ядро, то есть управление соединениями, файлами, хешированием, можно считать идентичным StrongDC++. В истории версий прослеживаются метания разработчиков удовлетворить самые разные запросы юзеров, которые имеют слабое представление о внутренностях программы и возможностях протокола DirectConnect. Например, форматирование текста чата тегами bold, italic, underline (позже было убрано из-за несовместимости с другими чатами), теневое сканирование оператором списка юзеров для получения IP (хотя это должен делать бот хаба либо настройка хаба, моментально передающая IP всех пользователей), панель управления Winamp-ом (тоже позже была удалена).

Отдельно можно отметить неудачные системы плагинов (первоначально - PeerGuardian, затем - "полноценная" система плагинов). Обе попытки были завязаны интерфейсом плагинов на версию STL (в частности, STLPort), используемую при сборке клиента. В результате DLL плагинов нельзя писать на языках, отличных от c++, не используя c++ переходник, также нельзя обновлять версию STLPort, чтобы не потерять совместимость со старыми плагинами.

Пользователей зачастую недооценивают, предлагая автоматически установить программу в автозагрузку, разрешить в бранмауэре Windows XP любые соединения этой программе, поместить ярлык на панель задач/рабочий стол, скачать обновленную версию и заменить exe-файл, перезапустив программу. Такие операции явно могут быть выполнены пользователем без всяких затруднений. (Таким образом, проект пополняет аудиторию поклонников за счёт "чайников").

В-общем, неудачные доработки не проникают вглубь кода, поэтому не портят программу, если ими не пользоваться. Из полезных вещей, сделаных ApexDC++ для сообщества DirectConnect, можно отметить превосходное качество иконок и картинок на кнопках. Безупречно с технической стороны - правильно используется 32-битный цвет с каналом прозрачности, и с эргономической - изображение на кнопках соответствует их назначению (в некоторых "модификациях" понарисуют непонятного расплывчатого месива и хвалятся обновленной графикой). Благодаря ApexDC++, интерфейс dc++-клиентов не выглядит застывшим в 2000 году, а использует возможности Windows XP.










© greylink team
12.06.2008