На этом сайте представлена бесплатная библиотека создания клиент-серверных приложений для сценарного языка 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. На размер данных влияют ограничения браузера и системные.
  • Если быть точным серверов в библиотеке два. Это важно и об этом подробнее в разделе Как это работает.