RSend Project - Free Windows Instant Messenger for LAN and WAN
RSend - бесплатное программное обеспечение для обмена мгновенными сообщения в сетях Microsoft Windows
RSend эффективно работает с большим количеством компьютеров в распределенных сетях и с медленными каналами связи. RSend не требует инсталляции и сопровождения, интегрирован с Active Directory, имеет простой и функциональный интерфейс, развертывание осуществляется с использованием групповых политик.
Основные характеристики RSend
Видео (HD) с демонстрацией RSend в реальной производственной среде (!) Вы можете посмотреть по ссылке
youtube.com/watch?v=m8pwtwxtl3k
Скриншоты
Почему появился проект RSend
Программное обеспечение для обмена мгновенными сообщениями между сотрудниками всегда было востребовано
во многих организациях и компаниях, и наша компания не является исключением. В первую очередь его используют IT
специалисты и другие сотрудники, ощутившие удобство данного продукта.
В предыдущие годы в нашей компании для обмена сообщениями использовались средства ОС Novell Netware,
а после перехода на доменную структуру Microsoft Windows - утилита Net Send. По мере увеличения компании
(в настоящее время это несколько сотен компьютеров, половина из которых находится в региональных подразделениях со
своими подсетями и соединены VPN каналами с главным офисом) дальнейшее использование Net Send стало
невозможным ввиду ограничений при работе с подсетями через маршрутизаторы (UDP протокол). Ситуация усугубилась
после появления операционных систем Windows Vista и выше, в которых утилита Net Send вообще была исключена
по вопросам безопасности. Были попытки использования других продуктов для передачи мгновенных сообщений.
К сожалению, по ряду причин они также не совсем соответствовали нашим потребностям. В первую
очередь - это возможность работы с большим количеством компьютеров в других подсетях.
При более детальном изучении данного вопроса пришло понимание, что возможным решением является
использование продукта с “клиент-сервер” архитектурой. В результате взор был обращен на различные программы для чата.
С одной стороны, они позволяли решить вопрос обмена сообщений с подсетями, с другой стороны вставали вопросы о
дополнительных трудозатратах на конфигурирование пользователей, увеличении лишнего трафика на VPN каналах.
Чат предполагает активное участие пользователя в переписке.
Реализуется это, как правило, частым обращением клиента к серверу за проверкой поступивших сообщений и, как следствие,
генерируется трафик между сервером и клиентом, как во время общения, так и в режиме ожидания. Можно снижать
объем ненужного трафика путем увеличения таймаута между обращениями клиента к серверу, но это в свою очередь
приведет к задержкам при доставке сообщений.
Обмен мгновенными сообщениями является вспомогательным программным обеспечением в
производственной среде и отдавать ему трафик на VPN каналах было бы неправильным. Поэтому было принято решение
реализовать новый продукт - мессенджер, отвечающий новым реалиям работы компании. В задании на проектирование были определены следующие основные характеристики (смотрите слева).
Для реализации “клиент-сервер” архитектуры проекта была выбрана технология .NET Remoting, которая уже давно и успешно
используется. К тому же на всех компьютерах с операционной системой Windows XP уже имелась среда .NET Framework 3.5,
которая была развернута ранее для использования технологии Windows Remoting. В качестве языка разработки использовался С#.
В большинстве случаев .NET Remoting используется по классической схеме: клиент инициирует подключение к серверу
по TCP (или HTTP) каналу, осуществляет регистрацию и затем периодически вызывает на нем функции для передачи/получения
необходимых данных. Этот подход решает большинство требований, определенных в задании на проектирование,
за исключением двух: быстрой доставки сообщений и минимизации трафика.
Клиент --------------- > Сервер
Для реализации двух этих требований классическая схема работы была изменена следующим образом: клиент инициирует подключение к серверу по TCP каналу, осуществляет регистрацию и переходит в режим ожидания сообщений (listening). При получении сервером сообщения от клиента, сервер в соответствии со списком получателей инициирует обратное подключение к этим клиентам и вызывает соответствующие удаленные функции на клиенте (сервер и клиент меняются местами).
Клиент --------------- > Сервер Клиент < -------------- Сервер
В результате отпала необходимость частого обращения клиента к серверу для проверки наличия входящих сообщений и, как
следствие, снижение трафика в режиме ожидания. Клиент обращается к серверу только для подтверждения своего присутствия
в сети. Частота обращения клиента регулируется с помощью параметра в конфигурационном файле. Например, при установленном
таймауте в 90 секунд дневной трафик между клиентом и сервером составляет менее 150 Kb. Чтобы снизить время доставки
сообщений их передача сервером была реализована в асинхронном многопоточном режиме на конкурентной основе. Первые же
тестовые испытания показали достаточно высокую скорость передачи. 5 сотрудников одновременно отправляли 400 пользователям
сообщения, которые были доставлены в среднем за 2-3 секунды (для размещения серверной части RSend использовался файловый
сервер на базе HP G5 с Windows 2003 R2).
* В 2015 году в компании было уже более 900 сотрудников, однако
быстродействие RSend осталось на прежнем уровне.
Разработанный алгоритм передачи сообщений полностью отвечал поставленной задаче. Оставалось реализовать
пользовательский интерфейс и придумать название программы. После недолгих раздумий программа получила
название RSend (Remoting Send) в честь технологии .NET Remoting.
В процессе разработки пользовательского интерфейса родилось несколько новых идей, которые впоследствии были
реализованы: личные группы, встроенный фильтр, быстрый ответ отправителю, горячие клавиши, онлайн помощь, многоязыковой
интерфейс и др. Развертывание RSend в производственной среде было осуществлено с использованием групповой политики, и
с сентября 2012 года RSend успешно эксплуатируется.
Более подробную информацию о проекте RSend можно найти в Руководстве администратора и
Руководстве пользователя.
С уважением, Игорь Грунт
MCSD App Builder
MCSA Windows Server 2012
P.S.
Хочу поблагодарить Федоренко Владимира за идею разработки RSend и Васильца Сергея за полезные советы при реализации пользовательского интерфейса.
