gifts2017

Кроcсплатформенное динамическое выполнение кода .NET (C#) из 1С:Предприятие

Опубликовал Юрий Дешин (blackhole321) в раздел Программирование - Внешние компоненты

Библиотека позволяет динамически выполнять фрагменты кода, написанные на C# аналогично функции Выполнить в 1С:Предприятие, на компьютерах под управлением ОС Windows и Linux.
Имеется возможность передавать параметры, возвращать результаты выполнения, загружать сборки .NET, а также отслеживать ошибки выполнения кода C#.
Библиотека оформлена в виде подсистемы.

Вопросам интеграции .Net и 1С:Предприятия посвящено достаточно большое количество публикаций, к примеру:

http://www.1csoftware.com/dotnet/

http://infostart.ru/public/300091/

http://infostart.ru/public/140411/

Однако, они расчитаны на работу в среде Microsoft Windows, что делает затруднительным их использование в ОС Linux.

Настоящая библиотека создана с целью облегчить интеграцию .NET и 1С:Предприятие для различных ОС. 

Архитектура

Основным компонентом библиотеки является веб сервер, который осуществляет компиляцию и выполнения кода C#. Взаимодействие прикладного решения с веб сервером осуществляется при помощи вызова соответствующих функций библиотеки, которые в свою очередь формируют необходимые веб запросы и обрабатывают полученные результаты. В рамках одного экземпляра веб сервера возможно создание нескольких независимых соединений. Соединения представляют собой отдельные экземпляры среды выполнения. Выполнение кода в соединениях осуществляется параллельно в многопоточном режиме.

Основные возможности

Библиотека позволяет динамически выполнять фрагменты кода, написанные на C# аналогично функции Выполнить в 1С:Предприятие.

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

Вы можете протестировать работу библиотеки online.

Ограничения

Все значения возвращаются в 1С:Предприятие в виде строки.

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

Передача и получение бинарных данных может быть реализовано только через base64 string.

Поддерживаемые версии платформы

  • 1С:Предприятие 8.2.16 и более поздние версии
  • 1С:Предприятие 8.3
  • Windows Server 2008 R2, Windows Server 2012 R2, Windows 7 x64, Windows 8 x32, Windows 8.1 x64
  • Ubuntu Server 14.10 x32, x64, Ubuntu Desktop 14.10 x32, x64

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

Поддерживаемые клиенты

  • Сервер (Windows, Linux)
  • Толстый клиент (Windows, Linux)
  • Тонкий клиент (Windows, Linux)

Требования к установленному ПО

  • Для работы под управлением OC Windows на компьютере должен быть установлен .NET Framework версии не ниже 4.0
  • Для работы под управлением ОС Linux на компьютере должен быть установлен пакет Mono, поддерживающий выполнение кода .NET Framework 4.0.

Причины купить

Если Вам необходимо кроссплатформенное средство интеграции .NET Framework с Вашим прикладным решением на базе 1С:Предприятие.

Скачать файлы

Наименование Файл Версия Размер
C# Web Evaluator Описание библиотеки 21
.pdf 451,09Kb
01.06.15
21
.pdf 1.0 451,09Kb Бесплатно
C# Web Evaluator 1.0
02.06.2015
2500 руб.

Моментальная
доставка

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Женька Ture (ture) 03.06.15 13:36
(0) хоть примерно скажите зачем это нужно?
2. Игорь Steelvan (Steelvan) 03.06.15 15:36
(1) ture,

Присоединяюсь к вопросу.
3. Павел Жихарев (palsergeich) 03.06.15 15:48
Попробую угадать: C# быстрее + может много того что 1с не может, примеры по ссылкам в статье.
4. Женька Ture (ture) 03.06.15 16:11
(5)(4)(3) palsergeich, быстрее чего?
Код на шарпе надо интерпретировать в IL, а потом еще и компилить. И все это не без файлового ввода-вывода.
Что на нем можно этакого, чего не можно на 1С?
Это даже не стеб, это вопрос по существу - что можно делать полезного на шарпе для 1сников? чтоб хоть спасибо услышать.
5. Юрий Дешин (blackhole321) 03.06.15 20:25
(4) ture,
Относительно компиляции - да, надо интерпретировать и компилировать, и тем не менее:
Компиляция происходит один раз
Ничто не мешает использовать уже скомпилированные сборки
И собственно 1С делает примерно то же самое :)
Относительно того, что в нем можно эдакого - ну к примеру то, что связано с подключением оборудования, расширенного взаимодействия с системой. Ведь внешние компоненты пишутся не на языке 1С :)
6. Виктор Назаров (androgin) 05.06.15 02:39
(5) blackhole321, С++ будет предпочтительнее, чем С#
7. Игорь <...> (I_G_O_R) 07.07.15 00:37
(6) на c# легче писать, чем на с++, а нам прикладным программистам тем более))
8. Nikita Leleko (sigmov) 30.10.15 19:20
Здравствуйте.
Можно вопросы:
1. Выражения, как понимаю компилируются?
1.1. Они компилируются с помощью DomCompiler'а или Emit'а?
2. Есть ли какая-нить возможность передавать параметры выполняемому выражению?
2.1. Если нет - то сделайте через JSON или XML а то вообще не серьезно - получается нужно все параметры конкатенировать в строку

9. Юрий Дешин (blackhole321) 31.10.15 17:41
(8) sigmov,
Добрый день.
1. Да, все верно
1.1. Mono C# Compiler
2. В настоящее время только через Вып
2.1. Возможно Вы правы, однако в силу богатсва языка, думаю, что сделать что-то универсальное не получится. В любом случае Вы можете написать необходимые Вам примитивы для присваивания значений переменным и вызова функций, благо это не сложно.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа