EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
479 stars 107 forks source link

Поддержка внешних компонент Native API для Linux #1058

Closed lintest closed 3 years ago

lintest commented 3 years ago

Цель:

Зачем:

Подробности:

  1. Библиотеку ScriptEngine.NativeApi.dll необходимо собрать для Linux
  2. Включить библиотеку в состав пакетов DEB и RPM (в архитектуре 32 и 64 бит)
  3. Обеспечить сборку примера компоненты для тестирования
steelvan commented 3 years ago

Тоже этот функционал очень интересен. Прошло пять месяцев на середину июня с момента постановки и почти три месяца с последней записи в запросе изменения #1059

Некая сумма поддержки на https://oscript.io/dev/contribute поможет ускорить решение сего вопроса ?

EvilBeaver commented 3 years ago

Это вопрос к @lintest

EvilBeaver commented 3 years ago

@steelvan а какую задачу планируете решить подключением ВК 1С к 1скрипту на линуксе?

steelvan commented 3 years ago

Какую, какую => хочу попробовать оскрипт вместо node.js пользовать на убунте как веб-сервер ;)

У меня есть родные 1Сные вкашки с http сервером, которые тормозят поток выполнения в цикле "Пока Истина Цикл" до поступления запроса. Запрос поступил => цикл выполнил очередной проход и опять стал ждать следующего запроса (типа sleep команды) на вкшке. Т.е. эмуляция бесконечного цикла событий. Типа синхронный event loop в оскрипте. Сейчас сие работает на 1С серверной версии, хочу попробовать на оскрипте поднять такую конструкцию.

Интересно попробовать поднять несколько оскриптов в виде демонов, прокидывать к ним запросы через апачевский балансовщик нагрузки. Как центральное хранилище данных между экземплярами оскрипта пользовать редиску.

Если будет такая конструкция 1000-1500 звс (запросов в секунду) обрабатывать, будет очень хорошо. Пока не работал с оскриптом в вебе и даже не представляю его пропускную способность.


Вторая вкшка это шаблонщик. Можно пользовать https://infostart.ru/public/549791/ через собрать и Выполнить(), но плюсовый в виде родной дллки всяко быстрее.

Да, подключение родных компонент 1С к вашему движку немного меняет расклады веб-разработки :)

nixel2007 commented 3 years ago

Может быть вы просто возьмёте OneScript.Web, который уже может параллельно обрабатывать запросы, умеет в фоновые задания, авторизацию и вообще в MVC?

lintest commented 3 years ago

Тоже этот функционал очень интересен. Прошло пять месяцев на середину июня с момента постановки и почти три месяца с последней записи в запросе изменения #1059

Приятно узнать, что кому-то интересен функционал поддержки внешних компонент для Linux. Обещаю вернуться и доделать его через пару месяцев. Планировал использовать его для автоматизированного тестирования внешннй компоненты VanessaExt для Linux.

steelvan commented 3 years ago

@nixel2007 Спасибо за предложение :) Мне нужна совместимость как можно большая с 1С кодом. Плюс нужна стабильность. OneScript.Web вроде даже версию 1.0 не имеет.

@lintest Конечно интересен ! Да и многие ваши разработки вполне интересны. Например, на протоколе хрома по вашим мотивам и с вашей обработкой с синхронными веб-гнездами сделал разбор сайтов грузовозителей dhl, fedex и прочих для Заказчика. Ему по номеру слежки нужна была информация о состоянии доставки. Сделал запуск и управление обозревателем через devtools протокол. Вполне рабочая схема получилась. Хотел на инфостарте отписаться о примере применения, но Заказчик возразил.

Так что да, ждем родные вкшки для линукса :)

EvilBeaver commented 3 years ago

@steelvan версии os.web не имеют никакого значения. Версии присваиваю я, так, как мне кажется правильным. Я придерживаюсь semver, но отсутствие единицы в мажорной версии говорит не о стабильности кода, а просто потому, что я так решил. Мне абсолютно никто не мешает поднять номер и сломать внутри все к чертям. Это к слову.

@nixel2007 абсолютно прав для серверной части надо брать os.web. Он базируется на MS Kestrel, который очень быстрый и гораздо проще забалансируется чем "демонические" 1скрипты с внешней компонентой 1С.

steelvan commented 3 years ago

@EvilBeaver Спасибо за предложение.

Далее мои рассуждения вслух как возможного пользователя os.web движка. У меня два варианта.

Вариант 1 Брать оскрипт и работать с ним по принципам и подходам, почти полностью совпадающим с теми, которые я могу применить к 1С серверной версии. Чтобы работать с базами 1Сными или оскриптовыми на веб-тыле по одному подходу, принципу, с общей кодовой базой. Критичные несовместимости выносить в родные вкшки, которые можно одинаково пользовать в 1С и односкрипте =>увеличение совместимости кодовой базы.

Вариант 2 Сервером брать node.js движок. Чтобы с обозревателем работать с одним языком и на одном js v8 движке.

Итого варианты на почти все случаи Сервер на 1С (1Сная база или оскриптовая) Клиент в обозревателе на js Так я в двух языках/средах, между которыми переключаюсь.

Добавлять сюда еще и третий язык/движок "... os.web. Он базируется на MS Kestrel ..." зачем мне это ? Кратко глянул os.web, на русском esta bien, но синтаксис <> 1С совсем => не интересен. Переключаться между проектами будет сложнее.


Это сугубо мысли вслух :)

EvilBeaver commented 3 years ago

Как это "синтаксис <> 1С"? Esta falso..

lintest commented 3 years ago

Переделал логику, вся работа с указателями tVariant теперь выполняется на стороне C++, тесты проходят без ошибок. https://github.com/EvilBeaver/OneScript/pull/1092

steelvan commented 3 years ago

Отлично !

Теперь надо ждать новый выпуск от @EvilBeaver ?

EvilBeaver commented 3 years ago

@steelvan сборки делаются для каждого коммита в develop и выкладываются на сайте. Скачать можно тут: https://build.oscript.io/job/1Script/job/develop/lastSuccessfulBuild/artifact/ или в разделе "ночная сборка" на https://oscript.io/downloads

lintest commented 3 years ago

Похоже, что в состав пакетов RPM и DEB не попали необходимые для полноценной работы файлы:

EvilBeaver commented 3 years ago

@dmpas не найдется ли у тебя времени пофиксить deb/rpm?

dmpas commented 3 years ago

Сегодня гляну

dmpas commented 3 years ago

@EvilBeaver а он и (.so) вообще собираются? Сборка же только под виндой, под ней только DLL собирается у тебя. То есть, тут фиксом deb/rpm не ограничиться.

EvilBeaver commented 3 years ago

Хм... пичалька... Там в принципе на CMake сборка сделана. @lintest нет ли готовой командной строки/скриптика который поможет сборку на линуксе на CI перенести?

lintest commented 3 years ago

Сейчас в тестах всё собирается https://github.com/EvilBeaver/OneScript/blob/b5aa003c90e06b69d7ef2b730d16eb8985eb68dc/tests/native-api.os#L22

/src/ScriptEngine.NativeApi/build.sh

@aliczin, поможете со сборкой для Linux? Вы уже делали когда-то сборку https://github.com/lintest/OneScript/pull/1

dmpas commented 3 years ago

@EvilBeaver в теории можно заморочиться с кросс-компиляцией на винде под линух. (Но я этого не говорил...)

EvilBeaver commented 3 years ago

Лучше скриптик из тестов запихать в докер

aliczin commented 3 years ago

@dmpas - ты видимо про WSL ? Я сейчас если локально его использую.

@lintest чем помочь ? я в прошлый раз по аналогии делал - через Docker сборщик с ГеЦеЦой

lintest commented 3 years ago

@lintest чем помочь ? я в прошлый раз по аналогии делал - через Docker сборщик с ГеЦеЦой

@aliczin, Нужно повторить прошлый PullRequest, чтобы собиралось через Docker

steelvan commented 3 years ago

Всех Приветствую !

Уважаемые @lintest @nixel2007 @EvilBeaver @dmpas @aliczin !

Разрешите узнать, решение данной задачи откладывается ?

EvilBeaver commented 3 years ago

Задача формально решена, но в сборке возникла проблема

EvilBeaver commented 3 years ago

@lintest @aliczin - что такое "прошлый пулреквест"? Где его взять, чтобы повторить?

lintest commented 3 years ago

Попробовал повторить, но конвейер сборки как будто не обновляет Jenkinsfile

nixel2007 commented 3 years ago

@lintest да, это защита от запуска вредоносного кода из форков.

nixel2007 commented 3 years ago

@lintest хотя судя по последнему коммиту - начала тригериться, да?

lintest commented 3 years ago

Рано приняли pull request, пока собирается только 64 битная версия прокси в докере. И в дистрибутив не попала.

lintest commented 3 years ago

На выходных попробую доделать

lintest commented 3 years ago

@steelvan можете использовать сборку пакета deb, она готова и вполне работоспособна https://build.oscript.io/blue/organizations/jenkins/1Script/detail/feature%2Fdocker-cp/2/artifacts

steelvan commented 3 years ago

@lintest благодарю ! @EvilBeaver Разрешите узнать, когда примерно будет следующий выпуск сборки oscripta со включенными доработками ?

asosnoviy commented 3 years ago

@steelvan Как только тут develop зазеленеет https://build.oscript.io/blue/organizations/jenkins/1Script/activity , можно забирать из ночников https://oscript.io/downloads

nixel2007 commented 3 years ago

@lintest

можете использовать сборку пакета deb, она готова и вполне работоспособна

с учетом невлитого https://github.com/EvilBeaver/OneScript/pull/1093 она вряд ли работоспособна

lintest commented 3 years ago

@lintest

можете использовать сборку пакета deb, она готова и вполне работоспособна

с учетом невлитого #1093 она вряд ли работоспособна

Работает, я проверял вчера

EvilBeaver commented 3 years ago

@lintest можно закрывать задачу?

lintest commented 3 years ago

Да, задачу можно закрывать. Спасибо!