На этом сайте представлена бесплатная библиотека создания клиент-серверных приложений для сценарного языка OneScript.
Основой проекта послужила разработка автора Halil ibrahim Kalkan A Complete TCP Server/Client Communication and RMI Framework in C# .NET - Implementation
под лицензией The Code Project Open License (CPOL) 1.02
С моей стороны была проведена адаптация вышеуказанной разработки для использования в коде односкрипта, а так же добавлена новая функциональность.
Возможности библиотеки:
Обмен сообщениями. Сообщение может быть экземпляром классов:
СообщениеБайты (ByteMessage) (соответствует типу ДвоичныеДанные из 1С),
СообщениеБулево (BoolMessage),
СообщениеДата (DateTimeMessage).
СообщениеТекст (TextMessage),
СообщениеЧисло (NumberMessage) (соответствует типу данных decimal из C#),
Размер пересылаемого сообщения для этих классов ограничен 128 мегабайтами.
Файлы превышающие этот размер нужно будет предварительно разбить на фрагменты.
Вызов клиентом методов на сервере и получение ответа в виде значения с базовым типом данных, или типом ДвоичныеДанные.
Методы будут исполнены в контексте сервера.
Вызов клиентом методов на другом клиенте и получение ответа в виде значения с базовым типом данных, или типом ДвоичныеДанные.
Методы будут исполнены в контексте другого клиента.
Многопоточность и асинхронность работы сервера. Сервер многопоточный (каждый клиент в своем потоке живет), асинхронный
(обработка клиентов происходит асинхронно).
Производительность. Для замера производительности на одном и том же компьютере были запущены сервер и клиент.
За одну секунду сервер подключил 1700 клиентов (экземпляров класса TCPКлиент(TcpClient)).
В другом замере клиент успешно послал 15000 коротких текстовых сообщений за одну секунду.
Сервер так же может обрабатывать подключения нативного клиента TCPСоединение / TCPConnection из библиотеки
односкрипта. На размер данных влияют системные ограничения.
К серверу можно подключаться из браузера и обмениваться данными по протоколу http. На размер данных влияют ограничения браузера и системные.
Если быть точным серверов в библиотеке два. Это важно и об этом подробнее в разделе Как это работает.