Веб-разработка на 1С (1Script)




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

80 Comments

  1. amon_ra

    ух-ё, Андрей, такими темпами ты скоро сделаешь свою 1с с блэкджеками и всем остальным))) Круто!

    Reply
  2. Infactum

    Без dockerfile для evilbeaver/oscript-web информация по развертыванию не полная.

    И как с производительностью всего этого безобразия? Прочитал на гитхабе.

    Мне, как 1С-нику не нравятся никакие языки кроме 1С.

    Охотно верим. А движок на С# стало быть не вы написали ?)

    Reply
  3. Evil Beaver

    (2)

    И как с производительностью всего этого безобразия? Прочитал на гитхабе.

    Что именно прочитал? Там не помню чтобы было написано что-то серьезное про производительность. Предполагаемая производительность — на уровне прочих скриптовых языков. (Не считая компилируемого в машинный код варианта исполнения)

    Reply
  4. Infactum

    (3)

    Не стоит ждать способности создания highload-сайтов.

    Думаю это достаточно точно дает понять, что вопрос производительности не поднимается совсем. В общем то целевой аудитории это, скорее всего, не важно. Я больше «для галочки» спросил.

    Reply
  5. Evil Beaver

    (4) Наверное, у нас с вами разное представление о highload-сайте. Я имел в виду гитхаб, фейсбук, озон/амазон и подобное. Любой инет-магазин средней руки будет держать не хуже, чем PHP/Джанго.

    Reply
  6. sandybaev

    (2) Я вот думаю, мне зачем нужен 1Script?

    я понимаю вы автор, продвигаете ее, все понимаю, но для меня это сложно. Да и зачем это 1С-нику.

    или может я что-то не «вкуриваю», сори…

    Reply
  7. Evil Beaver

    (6) Да нет никаких проблем. Обычно этими разработками начинают пользоваться, когда уже понимают зачем. Пока понимание не пришло — можно не заморачиваться.

    Reply
  8. Evil Beaver

    (2)

    Без dockerfile для evilbeaver/oscript-web информация по развертыванию не полная.

    Полная. Докерфайл не нужен, готовый образ уже лежит в хабе докера. Т.е. FROM evilbeaver/oscript-web:dev вполне себе вытягивает нужный образ-основу автоматически.

    Reply
  9. Infactum

    (8) Это для hello world норм.

    Внутри контейнера что? Asp.Net core? Mono?

    Исходники же «движка» вы выложили. А этот компонент почему оставили в виде черного ящика?

    Reply
  10. Infactum

    (5) Для меня highload это когда проект не может работать на «типовых» решениях. Перечисленные вами сервисы конечно входят в эту категорию.

    И все-таки ваш довод по производительности чем-то подтвержден или это только предположение?

    P.S. Не стоит сравнивать язык и фрэймворк (PHP / Django).

    Reply
  11. ArchLord42

    (9) вчера открывал сорцы onescript’а, видел там в солюшене проджект для веба, думаю это он)

    Reply
  12. Evil Beaver

    (9) никаких черных ящиков, все выложено. Просто в архиве на инфостарте — 1С-ная часть. То, что пишет автор сайта.

    А этот контейнер — это движок. Он тоже опенсорсный и все на гитхабе есть. Внутри контейнера сейчас ASP.NET Core, выполняемый под mono, но в ближайшее время будет вместо mono — родной netcore.

    Reply
  13. Evil Beaver

    (11) Нет, это не он. Это другой веб-обработчик. Немного не про то, хотя и перекликаются.

    Reply
  14. Infactum

    (12) Так дайте ссылку, пожалуйста. Потому что я не нашел. Ожидал увидеть тут.

    Reply
  15. Evil Beaver

    (14) На что ссылку? Про производительность и highload где было написано? Там оно и лежит.

    Reply
  16. Infactum

    (15) Это был ответ на комментарий относительно контейнера.

    Вроде infostart их прекрасно в виде дерева показывает.

    Reply
  17. Evil Beaver

    (16) докерфайл для сборки движка лежит там же. Про инфостарт не понял… что он в виде дерева показывает? Докер-контейнеры?

    Reply
  18. dalgaso2010

    Однозначно +.

    Идея безусловно классная, но вот с применением ее для разработки реальных веб-приложений есть ряд вопросов. Буду следить за темой, интересно послушать детали реализации. Пока не совсем понятно, как будет решаться вопрос с дополнительными пакетами, которых под тот asp .net core написано предостаточно.

    Reply
  19. sanjakaiser

    Всем привет! Это мой первый коммент за всю историю бытия на инфостарте. Андрюх, ты молодец, но может лучше не лезть 1С-ом в веб-разработку? Ну не перекликаются эти области никак меж собой, в этом болезнь всех современных решений, ну нельзя впихнуть невпихуемое

    Reply
  20. blackhole321

    (6)Ну если применительно к web — он может быть полезен в тех случаях, где создаваемый сервис, является частью информационной системы на платформе 1С:Предприятие, а использование 1С по каким либо причинам не очень удобно, в связи с лицензионной нагрузкой или особенностями размещения инфраструктуры. К примеру, создание форм ввода, с передачей данных в 1С, личных кабинетов, небольших сервисов, типа ботов телеграм etc.

    Reply
  21. Boris_1c

    Это мега круто!! Так мы скоро увидим аналог 1с для простых проектов. Автору огромное спасибо.

    Reply
  22. Lars Ulrich

    Веб разработка на 1С, имхо, бесперспективна. Человеку, который понимает суть вещей, проще сделать без надстроек. И такое решение (не сочтите за дерзость) будет иметь большее отношение к 1С.

    Хотя безусловно работа интересная.

    Reply
  23. alexey.karmanov

    Андрей, я же правильно понимаю, что при помощи описанной тобой технологии можно будет делать веб-интерфейс для десктопных приложений на OneScript? На мой взгляд отсутствие интерфейса для скриптов на OneScript является сдерживающим фактором от того, чтобы писать на нём приложения для конечного пользователя. Если это так, то я вижу главную силу встроенного веб-сервера именно в этой части, так как сейчас многие кроссплатформенные приложения (на том же .net) организуют интерфейс для пользователя именно этим путём, запуская свой веб-сервер и общаясь с пользователем через браузер.

    Reply
  24. Evil Beaver

    (23)

    веб-интерфейс для десктопных приложений на OneScript?

    Не, такое как раз не планировалось. Теоретически наверное возможно, но я не планирую ничего делать в этом направлении. Все-таки, все разработки делаются в том числе и для себя. У меня нет таких задач. Исходники открыты — так что велком, в принципе.

    Reply
  25. Evil Beaver

    (22)

    Человеку, который понимает суть вещей, проще сделать без надстроек.

    Вот я, например, понимаю суть вещей, но мне не проще вспоминать ПХП или изучать с нуля ноду.жс

    Они может и замечательные, но мне НЕ ПРОЩЕ, чем написать движок под разработку на 1С. Бонусом развлечение от процесса.

    Reply
  26. Evil Beaver

    (21) это вряд ли. Нет цели делать аналог 1С.

    Reply
  27. Evil Beaver

    (18) А никак. Считайте, что внутри нет никакого core, считайте что там голый ассемблер, чорный-пречорный ящик. И только язык 1С в вашем распоряжении и библиотека oscript-library.

    Reply
  28. blackhole321

    (11) Это немного другое, аналог HTTP сервисов 1С. Почитать можно здесь: https://github.com/EvilBeaver/oscriptiocontent/blob/master/markdown/docs/ht­tp.md

    Reply
  29. Lars Ulrich

    (25) пока здесь ключевое именно «развлечение от процесса», и если целить в то, чтобы поднять всю инфраструктуру на 1С, то идеологически верно.

    Уточню: мне интересно развитие проекта, и я не пытаюсь отговорить или обхаить 🙂

    Reply
  30. herfis

    Плюс поставил, ибо есть за что.

    Но будущего у проекта не вижу.

    Reply
  31. Lars Ulrich

    (31) На то и расчет ))))

    Reply
  32. unpete

    imho, веб-приложению нужны:

    — типизированные параметры сеанса и параметры пользователя с миграцией между устройствами

    — авторизация и регулируемые права доступа к объектам метаданных и их реквизитам

    — публичные + приватные настройки компоновки табличных частей, отчетов, динамических списков и прочих элементов форм

    — подключаемые sql и nosql адаптеры данных, в том числе, indexeddb браузера или sqlite мобильного устройства для автономного режима работы

    — динамическая подгрузка модулей, в том числе — модификаторы метаданных

    — расширяемые методы и подписки на события объектов и менеджеров данных

    — эффективный ui-фреймворк для рендеринга интерфейса

    Вы планируете реализовывать всё это своими силами или позиционируете решение, как аналог PHP с синтаксисом 1С?

    Reply
  33. baton_pk

    (33)

    как аналог PHP с синтаксисом 1С

    У односкрипта есть свой набор библиотек, своё сообщество. Так что вряд ли у них есть что-то общее с PHP кроме слова Web. Скорее эдакий ASP.NET с синтаксисом 1С.

    Reply
  34. Boris_1c

    при установке в docker toolbox для windows 7

    Step 2/2 : COPY hello /var/osp.net/

    COPY failed: stat /mnt/sda1/var/lib/docker/tmp/docker-builder732977973/hello: no such file or directory

    Правильно ли я понимаю, что докер должен быть на линукс установлен? С докером не работал, сори за тупые вопросы

    Reply
  35. dalgaso2010

    (27) Я это понимаю, просто тогда весь накопленный опыт для asp .net core в виде репозитория пакетов придется по факту выбросить (или адаптировать) и все делать заново. Не подумайте, я не критикую, просто смотрю с позиции web-разработчика. С другой стороны, предложенный вариант уже крут, т.к. для использования его в качестве http сервисов этого более, чем достаточно. Front отдельно написать можно на соответствующем стеке. За развитие OneScript одназный плюс. Очень нравится ваш проект и стараюсь о нем рассказывать, где могу. Например, написал статью в Сис. админ.

    Reply
  36. Alligator84
    …Однако, есть проблема – я не умею. И мне гораздо приятнее сделать это на 1С.

    Однозначный плюс, Андрей!

    Продолжай, слушай всезнающих скептиков и выноси из этого лучшее для развития инструмента. Сам 1Script давно юзаю в повседневных задачах и очень нравится.

    Reply
  37. Evil Beaver

    (10) я не сравниваю, я намеренно мешаю их в одну кучу

    Reply
  38. Evil Beaver

    (33) большую часть упомянутого планирую. Кроме, пожалуй ui. Расчет больше на сервер-сайд, ui меньшим приоритетом.

    Только не совсем своими силами, а создавая биндинги к тому, что уже написано. И в расчете на помощь сообщества

    Reply
  39. Evil Beaver

    (35) по-моему, современный правльный докер — это docker for windows. Не toolbox.

    Reply
  40. 08pmmdu1

    месье знает толк в извращениях

    Reply
  41. Evil Beaver

    (41) о, да! )))

    Reply
  42. avgyr77

    Приветствую что такое движок для веб разработки 1с ников?

    Reply
  43. Evil Beaver

    (19) почему не надо? Выйдет сотона и зохаваит фсех?

    Reply
  44. zarucheisky

    (0) В web-клиенте 1С посмотри есть js-интерпретатор языка 1С, правда пройден обфускатором 🙁

    Reply
  45. Evil Beaver

    (45) насколько я знаю, там интерпретатор готового байт-кода, а не языка.

    Reply
  46. nextkmv

    (46) Андрей, а у вас нет планов по реализации такого интерпретатора onescript-js? Что бы можно было и клиентскую часть писать на onescript.

    Reply
  47. Boris_1c

    (40)Ткните носом в докер для windows 7..

    начал настраивать по мануалу без докера, уперся в такую ошибку:

    Ошибка HTTP 403.14 — Forbidden

    Веб-сервер настроен таким образом, чтобы не формировать списка содержимого каталога

    Если добавляю в документ по умолчанию main.os, получаю такое:

    {Модуль <string> / Ошибка в строке: 5 / Неизвестный символ: ИспользоватьСтатическиеФайлы}

    ИспользоватьМаршруты();

    не понятно какой файл должен быть стартовым, и как-то структура каталогов и файлов не видна приложению..

    Подскажите куда копать

    Reply
  48. as

    (45) До 8.3.5 не было обфускации.

    Reply
  49. nixel

    (23) интерфейс есть. Посмотрите библиотеку gui, есть статья на ИС

    Reply
  50. Evil Beaver

    (48) не надо настраивать веб-сервер и прописывать «Документ-по-умолчанию».

    Инструкция:

    1. Поднимаем докер (в винде или вагранте или как угодно). Для вин7 только в вагранте/виртуалке, как я понял.

    1.1 если совсем коротко, то в корне репо с веб-движком лежит Vagrantfile, который сразу даст вам готовую линукс-машину с докером на борту одной командой.

    2. Качаем этот архив, переходим в консоли в каталог, куда он был распакован. Там лежит Dockerfile.

    3. docker build -t demo .

    3.1 — точка в конце нужна (это «текущий каталог»)

    4. docker run -d -p 5000:5000 demo

    5. заходим на localhost:5000 и все работает

    веб-сервер уже есть внутри контейнера и его не надо поднимать и настраивать отдельно.

    Reply
  51. Evil Beaver

    (47) Нет. Так-то он нужен, но сил на это в себе не планирую находить. Вот кто бы взял да и сделал…

    Reply
  52. Boris_1c

    (51) спасибо, многое прояснилось

    Reply
  53. baton_pk

    (47) года два уже как есть в планах. Но всё руки не доходят.

    Reply
  54. lustin

    (47) это прям мечта и скорее всего реальная. Архитектурно это будет скорее компонентная модель типа vue.js, angular.js или react.js с компиляцией аля typescript2javascript

    пока есть наброски в части объектной модели и жизненного цикла.

    уже сейчас понятно следующее, что это будет именно компилируемая модель, для которой должно применяться что-то типа

    * Трубопровода http://rusrails.ru/asset-pipeline

    * Элементы интерфейса — которые будут явно определять своё маленькое поведение (типа React.Elements)

    * Скрипты связи и замыкания — явно напрашивается история с fluent, текучие алгоритмы «Когда().НажатаКнопка().ОткрытьСтраницу(‘Профиль’)»

    На данный момент не хватает для такого 2-ух вещей

    * трансляции этого всего в чистый JS, да еще и с тестами

    * объектной модели для CSS — там же также нужно сформировать объектную-русскоязычную обертку над поведением стилей, и опять же с компиляцией в нативный CSS

    P.S. У Яндекса пару лет нажат выходил CSS на русском — в виде шутки на первое апреля, но некоторые это как шутку не восприняли

    Reply
  55. lustin
    Reply
  56. Tavalik

    Звучит многообещающе. Надеюсь, сообщество подхватит идею и все это со временем из «посмотрите, я сайтик на 1С написал» разовьется до реальных бизнес-приложения в вебе. Желаю удачи и будем следить за публикациями.

    Reply
  57. herfis

    (56) А что, ожидался вау-эффект в части практических перспектив?

    Если речь про интранет и учетные задачи, то достаточно простой публикации 1с-баз без гемора с веб-разработкой.

    Если речь о более специальных задачах и более специальном интерфейсе, то целесообразность уклона в 1С-style сомнительна.

    «Заточка» на редких одинэсников-многостаночников, ограничения по функциональности и производительности, завязка на специфические библиотеки с мутным будущим. Эти минусы имеют минимальный вес только в отдельных компаниях с большими командами разработчиков с уклоном в 1С и развитой внутренней культурой. Там да — это может стать частью технологического стека с максимумом профита.

    А при более простых раскладах выгоднее держаться более стандартного технологического стека, ИМХО. Одинэсник, который сможет этим пользоваться, вполне осилит и «классические» варианты. Пусть это будет более затратно, зато более гибко, функционально и с меньшим количеством wtf у приемников.

    Reply
  58. oldcopy
    Поскольку на дворе XXI век, то приложения поставляются и устанавливаются сразу вместе со своей операционной системой. Называется все это контейнером

    Это конечно хорошо, но я, как человек старомодный, очень настороженно отношусь к запуску внутри своей инфраструктуры чужих контейнеров и прочих «черных ящиков». Хотелось бы увидеть системные требования данного движка, зависимости и т.д., чтобы можно было развернуть сервер для него самостоятельно.

    Reply
  59. Evil Beaver

    (59) Дык, на гитхабе же всё. Системные требования… хм… скажем так, как и любое приличное приложение — оно потребляет все имеющиеся ресурсы, которые даст ему операционная система.

    Исследований на минимально необходимую конфигурацию не проводилось за ненадобностью.

    Поставьте в контейнере 32Мб ОЗУ и 500Мгц процессора (мой первый комп 2001г) и понаблюдайте. Расскажите потом нам — будет вклад в проект.

    Зависимости: mono 5.4, aspnetcore, onescript. Сам onescript кроме как от mono/.net ни от чего не зависит. Полностью весь код и определения контейнеров находятся в опенсорсе.

    Reply
  60. Evil Beaver

    (58) Такая точка зрения тоже имеет право на жизнь. Однако, «ограничений по производительности» тут нет. Не больше чем в питоне/руби по сравнению с c++. Не ясно, откуда сделан вывод про ограничения производительности?

    «Заточка» на редких одинэсников-многостаночников

    Вот здесь смотрите в корень. Во всем этом безобразии (не только по теме статьи, а и вообще git,TDD, CI и прочее) есть одна фундаментальная причина: убрать стереотип о «тупом 1С-нике», повысить общий уровень инженерной культуры в 1С-сообществе.

    Не знаю, как вам, а мне кажется, что в последние годы ситуация начала исправляться. На проф.тусовках к ребятам задвигающим про 1С уже стали относиться с заметным уважением. Хочется верить, что немного и благодаря в.п.с тоже.

    Reply
  61. oldcopy
    Дык, на гитхабе же всё.

    Как-то я там не особо нашел. Чтобы было понятно чего я хочу: https://downloads.joomla.org/ru/technical-requirements-ru

    Все расписано, минимальная и рекомендуемая версии, необходимые модули, базовые зависимости. Опять таки, какие веб-сервера поддерживает, какие платформы.

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

    Reply
  62. Evil Beaver

    Да, это все, конечно же будет. Когда повесим шильдик хотя бы pre-release. Пока что это ранний анонс.

    Reply
  63. DrAku1a

    Вообще, тема интересная и нужная! Не всё ж на 1С бухгалтерии да зарплаты считать.

    Однако, отмечу, что 1С уже довольно давно внедрила HTTP-сервисы и активно допиливает инструменты для работы с данными на уровне платформы (JSON, XML, Двоичные данные). И также, довольно давно уже есть публикация «Мини-сайт на http-сервисах«.

    В качестве «движка» — используется всеми нами любимая 1С в связке с Web-вервером (аппач или IIS), причём, можно развернуть как для файлового варианта, так и для серверного. Разрабатывать сложно (нужно погружаться в HTML/CSS/JS и т.п.), но развёртывание сервисов — занимает совсем немного времени.

    Reply
  64. oldcopy

    (63)

    Да, это все, конечно же будет. Когда повесим шильдик хотя бы pre-release. Пока что это ранний анонс.

    Ну так хоть как обозначьте, есть желание потестить, но тянуть контейнер нет никакого желания.

    Reply
  65. Evil Beaver

    (65) Ну если без контейнера, то только из исходников собирать на данный момент. А чем контейнер не угодил?

    обозначу:

    Сейчас: mono 5.4, aspnet core 1.3, onescript 1.0.19

    В дальнейшем: переход на netcore2.0 и соответственно aspnet core 2. С выходом «Аннотаций» в 1script — апгрейд до 1.0.20

    Все, больше зависимостей на данный момент нет. Бинарники кроме как в контейнере нигде не выложены. Можно собрать из исходников

    Reply
  66. Evil Beaver

    (64) ну как бы да. И что с того? Для сервиса вам надо поставить апач, 1С, настроить связку, прикрутить лицензии, написать код. В движке 1script вам надо только создать 1 файл с логикой сервиса на языке 1С и сделать docker up.

    Reply
  67. oldcopy

    (66)

    то только из исходников собирать на данный момент. А чем контейнер не угодил?

    Скажем так — религия не позволяет, а из сорцов собрать — нет проблем.

    (66)

    обозначу:

    Сейчас: mono 5.4, aspnet core 1.3, onescript 1.0.19

    Меня интересует также несколько иное: поддержка веб серверов, ОС и т.д. Скажем под WinSrv + IIS взлетит? А под Nginx?

    Reply
  68. MishaD

    (51) Вчера весь день возился. Не получилось. Не работает основное — 5-й пункт.

    5. заходим на localhost:5000 и

    страница не найдена. Windows 7, поэтому ставил Docker через DockerToolbox. Может это связано с тем, что Docker через виртуальную машину работает ?

    Reply
  69. Evil Beaver

    (68) Большинство приложений aspnet core используют собственный встроенный веб-сервер Kestrel. Т.е. по сути, само собранное из исходников приложение — это мини веб-сервер, слушающий порт. Далее вы можете его проксировать куда угодно, в IIS, Apache и т.п.

    Вроде бы, есть еще и бесшовная интеграция с IIS мимо Kestrel, но я этот вариант не пробовал, т.к. нацеливался на Линукс.

    Операционные системы — Win, MacOS, Linux — все где работает net/mono

    Reply
  70. Evil Beaver

    (69) Тут сложно что-то сказать. Я не зря написал — праздники впереди длинные. Виртуалки не видят друг друга — причин может быть десяток. Анализируйте, где обрыв.

    А вообще, если делать все по инструкции (т.е. вместо Toolbox поставить vagrant и поднять готовую машину по шаблону) — то все работает, в т.ч. п. 5

    Reply
  71. Perfolenta

    Я вот не понимаю, откуда в наших людях такое неверие в собственные силы? Когда-то вот такие же люди приняли решение копировать серию ЕС ЭВМ, вместо развития своих решений… все у них на западе трава зеленее… а она там и зеленее потому, что тамошние мужики берут и развивают новинки сделанные своими коллегами…

    Андрей сделал отличную штуку, нет что бы порадоваться, поддержать и засучить рукава, так начинается нытье, производительность подкачала…. где подкачала? Сначала сделайте что-то из предложенного варианта, а потом скажете, что вот у меня тут производительности не хватает…

    Прошу простить за эмоции…

    Мои маленькие вебсервисы/сайты, у клиентов, сделанные в дополнение к базам 1С уже десятилетиями работают, многие еще на простом ASP… пережили без изменений смену платформ и конфигураций 1С, так что не все надо на 1с делать… что-то может быть автономным… а на 1Скрипте это будет приятней делать, чем на других языках…

    Reply
  72. Perfolenta

    Кстати, на счет производительности… недавно протестировал вычисление чисел Фибоначчи на 1с 8.3.11 и на 1Скрипте.. код один и тот же, вот что получилось:

    //Вычисления с рекурсией для числа 20, 1000 циклов

    //Компилируемый язык 0,054 сек.

    //1С 273,000 сек.

    //OneScript 11,792 сек.

    //Вычисления без рекурсии для числа 20, 1000000 циклов

    //Компилируемый язык 0,052 сек.

    //1С 184,000 сек.

    //OneScript 17,503 сек.

    Кому производительности OneScript не хватает? Этот тест, конечно, не общую производительность оценивает, а только циклы, условия, работу с переменными и сложение… но все же движок OneScript очень достойный!

    Reply
  73. Evil Beaver

    (73) Спасибо! Мы тоже крутили разные тесты, в т.ч. парсинг текстов. Скорость 1Script на уровне «взрослых» скриптовых языков, и часто существенно опережает интерпретатор 1С.

    Reply
  74. oldcopy

    (70)

    Большинство приложений aspnet core используют собственный встроенный веб-сервер Kestrel. Т.е. по сути, само собранное из исходников приложение — это мини веб-сервер, слушающий порт. Далее вы можете его проксировать куда угодно, в IIS, Apache и т.п.

    Это несерьезно, городить такой огород из компонент. Чем больше элементов в схеме — тем больше точек отказа, тем более, если верить этому: https://docs.microsoft.com/ru-ru/aspnet/core/, то ASP.NET Core поддерживает IIS, Apache и Nginx.

    Reply
  75. Perfolenta

    (74) Да, жалобы на производительность явно мимо кассы… Думаю, что на парсинге текстов и полноценный компилятор покажет сравнимую производительность, т.к. большую часть времени сожрут библиотечные строковые функции и накладные расходы скриптовой машины будут не слишком высоки… интересно было бы сравнить на одном и том же коде и тех же данных… если у вас есть такой тест парсинга и не жалко, киньте в личку…

    Reply
  76. Evil Beaver

    (75) это не огород, а один из вариантов развертывания. Tomcat для Java вас же не смущает? Чем kestrel отличается? Внутри контейнера — удобен свой легковесный сервер, перед ним — nginx. Можете заменить kestrel Апачем или IIS, дело вкуса. Я может отстал от жизни, в моей картине мира nginx не умеет отдавать динамику и требует более тяжелый сервер а-ля апач /tomcat позади себя, не?

    Reply
  77. oldcopy

    (77) Меня не устраивает любое усложнение системы. Контейнеры хороши для разработки и тестирования, в продакшене часто это лишнее. Есть хороший принцип Бритвы Оккама: «Не стоит множить сущности без необходимости». Если в инфраструктуре есть рабочий веб-сервер, то почему-бы не озадачить его?

    (77)

    Я может отстал от жизни, в моей картине мира nginx не умеет отдавать динамику и требует более тяжелый сервер а-ля апач /tomcat позади себя, не?

    Вы путаете веб-сервер и сервер приложений. Задача веб-сервера — отдать HTML, не более и не менее. Динамика создается сервером приложений, который может быть модулем веб-сервера (Apache — яркий пример) или взаимодействовать с ним по CGI/FastCGI и т.п.

    Почитал немного матчасть, Kestrel (как и Tomcat) — это не веб-сервер, это сервер приложений с функциями веб-сервера, его задача — собирать и отдавать динамическое содержимое. Хотя, если быть точным, то Kestrel — прокладка между HTTP и Asp.net. Выставлять это наружу я бы не рисковал. Наиболее правильное решение повесить Kestrel на UNIX-сокет, а перед ним поставить NGINX.

    На Windows работу веб-сервера логично повесить на IIS, а Kestrel также спрятать внутри.

    В общем контейнер не нужен, достаточно собрать приложение и соединить его с любым веб-сервером. А ему обрубить все сетевое общение, кроме как с localhost.

    Reply
  78. Evil Beaver

    (78) да, именно так. Просто я под словом «веб-сервер» понимал именно http-приложение. Его, конечно же не стоит выставлять в интернет напрямую.

    Для работы контейнер не нужен, можно собрать и запустить EXE, ну об этом я уже писал выше, повторяться не стоит.

    Reply
  79. bulpi

    (51)

    1. Поднимаем докер (в винде или вагранте или как угодно). Для вин7 только в вагранте/виртуалке, как я понял.

    1.1 если совсем коротко, то в корне репо с веб-движком лежит Vagrantfile, который сразу даст вам готовую линукс-машину с докером на борту одной командой.

    При всем огромном уважении, извините, это фигня. Я не хочу иметь какое-то ненужное ПО на моем компе. Здоровенную дуру, которая не нужна ни для чего, кроме как посмотреть на любопытный казус — веб-разработку на 1Script. Можно как-то без этого ?

    Reply
  80. bulpi

    (80)

    Все, вопрос снимаю. Уже есть первая глава. Просто у меня привычка читать все по порядку и по порядку разбираться. А на самом деле эту статью стоило пропустить.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *