powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Приложение на C# и внутри скрипты на C# ?
25 сообщений из 52, страница 1 из 3
Приложение на C# и внутри скрипты на C# ?
    #39969948
AleksVoronezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите - предположим, есть готовое приложение с графическим интерфейсом пользователя. Или оно будет только писаться под WinForms или Net Framework. Есть ли какой-либо способ, используя только VS2019 CE например, (или плюс что-то бесплатное) чтобы, "отдав", подготовив наружу некоторые методы, переменные и прочее из основного приложение, сделать возможным, что бы пользователи писали свою обработку данных на языке, более-или менее совместимом с C# и его возможностями, что бы человек, который может что-то делать на С# в VS, смог работать и со скриптами?
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39969959
FastReports
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AleksVoronezh,

Есть. И называется Windows Script Host
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39969963
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39969973
AleksVoronezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FastReports
AleksVoronezh,

Есть. И называется Windows Script Host


Спасибо за ответ. Насколько я понимаю, Windows Script Host - это часть операционной системы, и этот "велосипед", хотя и очень мощный, тоже может сломаться в любой момент. Хотелось бы, в идеале, примерно так: некая версия .Net + откомпилированное приложение. И все. Примерно так же, как бывает, если в приложение на Delphi внедрить Pascal Script. Ну тут, понятное дело, все вообще обеспечивается в одном .exe файле. При этом, например, если изменился протокол обмена с прибором, не нужно перекомпилировать все приложения, достаточно подправить скрипт. А приложение, как и раньше, занимается визуализацией данных и прочее. Тут важен еще момент - по определенному событию может потребоваться передавать параметры в скрипт и дергать, так сказать, отдельные процедуры из него и получать обработанные данные. Како-то каждый раз запускаемый скрипт как единое целое не подходит конечно. Накже совсем нежелателен скрип с "главным циклом", это не Arduino :-)

Смотрю, что за CodeDom...
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39969975
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Олега Шило, видел вот такую хрень, не использовал
но вроде практически как CodeDOM работает
https://github.com/oleg-shilo/cs-script
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39969985
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksVoronezh
что бы пользователи писали свою обработку данных на языке, более-или менее совместимом с C# и его возможностями


Выбирать язык C# для внедряемых скриптов -- оч. плохая идея.
Берите самый простой язык.

Например, Lua, или хотя бы VB.

Не ошибётесь.

https://github.com/NLua/NLua
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39970138
AleksVoronezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, насчет NLUA очень интересно, спасибо.

Бегло посмотрел (пока), надо думать, что он позволит, например, к уже готовому приложению на C# прикрутить и библиотеки с API по управлению конкретным прибором, если библиотеки, в свою очередь, были заточены изготовителем, как и примеры их использования, также под C#.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39970158
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksVoronezh
Бегло посмотрел (пока), надо думать, что он позволит, например, к уже готовому приложению на C# прикрутить и библиотеки с API по управлению конкретным прибором, если библиотеки, в свою очередь, были заточены изготовителем, как и примеры их использования, также под C#.


NLua позволяет обеспечить доступ к любым объектам из приложения.
По сути вы на Lua делаете некий DSL, объектную модель для написания высокоуровневой логики.

C# плохо, потому что он хорошо работает только в IDE со всеми его плюшками, и нужна высокая квалификация.

Использование Lua или подобных скриптовых языков позволяет использовать квалифицированных специалистов предметной области, так как язык очень простой, там нужно 15 минут на изучение :)
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39971129
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksVoronezh,
если нужен именно C#-"скриптинг" - простой вариант делается элементарно и интеграция с остальным кодом практически бесшовная (указываются сборки, типы из которых "скрипт" может использовать. проблема только если только часть типов из сборки нужно "запретить" (или только часть членов типа) - конечно, и это можно решить).
Примеры кода: 21674303 21675082 (в той теме было и какое-то обсуждение)

"Скриптинг" в кавычках, потому что код "скрипта" превращается в обычную .NET-сборку (только уже в рантайме) и в итоге компилируется в машинные инструкции (как и весь остальной C#-код вашего проекта).
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39971260
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стоит учитывать, что при таком подходе можно инжектировать код, который выполнится, к примеру, с админскими правами, как по мне вариантом может быть ЭЦП к коду. как это вообще лучше организовать, знатоки, подскажите?
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39971266
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
ЭЦП к коду.


Если имеется в виду электронная подпись, то правильно говорить ЭП.

ЭП решает задачу только контроля изменений. Проблемы безопасности решаются только с помощью песочницы. Обычно внедряемые скрипты (как, например, Lua, или JS) содержат этот механизм из коробки.

Но если кому угодно самостоятельно по...ться и реализовать свой велосипед с квадратными колёсами, конечно же велком :)
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39971282
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ну если ограничить запуск только тех скриптов, которые имеют эп и есть корневой сертификат с помощью которого можно проверить этот скрипт. как в msoffice, грубо говоря
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39971287
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
hVostt,

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


Грубо говоря, в таком случае лучше решать эти задачи профессиональным программистам, которые будут писать код, код будет проходить код ревью, затем он будет компилироваться, запускаться юнит-тесты, прогоняться регрессионные и авто-тесты, проверяться QA, подписывать подписью и выкладываться для деплоя.

Нафига упали в таком случае скрипты, непонятно. Обычно встаиваемые скрипты приделывают, чтобы их писали не программисты и запускались в защищённой среде. А чтобы не получилось как у обезьяны с гранатой, код запускается в песочнице. Если сюда добавить ЭП, то по сути весь смысл будет похоронен и затоптан в грязь.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974056
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
у Олега Шило, видел вот такую хрень, не использовал
но вроде практически как CodeDOM работает
https://github.com/oleg-shilo/cs-script


Отлично работает, даже на Notepad++ можно установить плагин, руками написать в нотепаде++ минимальное приложение с формой и будет работать
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974193
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вся эта куча из lua?

Ребят, .net позволяет писать скрипты на C# , на лету компилить в сборку, на лету дергать код из этой сборки.
Reflection всё это делает.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974220
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK
на лету компилить в сборку, на лету дергать код из этой сборки.

В этом есть проблема, кстати, и далеко не одна.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974250
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK
Зачем вся эта куча из lua?

Ребят, .net позволяет писать скрипты на C# , на лету компилить в сборку, на лету дергать код из этой сборки.
Reflection всё это делает.


Мне удобнее писать код C# в IDE.

Скрипты делаются для возможности описывать высокоуровневую логику не программистами.
C# для не программистов очень сложен, код для описания сценариев и прикладной логики на C# довольно уродлив.

Но хозяин барин, обычно в восторге от возможности писать скрипты на C# джуны, не понимая, что именно им потом с этими скриптами в итоге и еб****ь :)
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974437
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
в итоге и еб****ь :)

fkthat
и далеко не одна.


Товарищи маги, вы тут столько порошка тратите на облако из ваших эмоций, что аргументов нащупать нельзя.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974447
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK
hVostt
в итоге и еб****ь :)

fkthat
и далеко не одна.


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


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

C# для этих целей не подходит.

А вы о чём? Чего вы там щупаете? Какие ещё аргументы? )))
Вы говорите, .net позволяет компилить C# на лету... и что?

Если у вас в рукаха молоток, то всё вокруг -- гвозди? )
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974452
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто смысл в том, что на C# будут писать не пользователи, а программисты и им это нафиг не надо, им удобнее будет иметь возможность подгрузить готовую сборку в домен и не париться с какими то прокладками. обычный система plugin'ов или подобное, для расширяемости.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
просто смысл в том, что на C# будут писать не пользователи, а программисты и им это нафиг не надо, им удобнее будет иметь возможность подгрузить готовую сборку в домен и не париться с какими то прокладками. обычный система plugin'ов или подобное, для расширяемости.


Да и готовую сборку подгрузить тоже фиговая затея. В каких-то кривых наколеночных поделках, с качеством ниже плинтуса, может и покатит. Как бы хотелось бы, чтобы проходили тесты, QA, нафига этот манки патчинг )
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974542
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK
что аргументов нащупать нельзя.

Вот тебе, например, аргумент: "скрипт" на шарпе однажды откомпилировавшись и загрузившись выгружен уже быть не может (CLR не может выборочно выгружать загруженную сборку). Еще, как и с любыми плагинами, возможные проблемы с версионностью зависимостей (Скрипт №1, например требует библиотеку версии 1.2.3.4, а скрипт №2 требует ту же библиотеку, но версии 2.3.4.5).
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974546
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

создаешь домен, грузишь сборку в домен, выгружаешь домен, профит. тема уже избитая.
между скриптом и кодом очень тонкая грань, особенно если сравнивать с высокоуровневыми языками программирования типа C#, который уже сам по себе ближе к скриптам.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974548
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
AlexeiK
что аргументов нащупать нельзя.

Вот тебе, например, аргумент: "скрипт" на шарпе однажды откомпилировавшись и загрузившись выгружен уже быть не может (CLR не может выборочно выгружать загруженную сборку). Еще, как и с любыми плагинами, возможные проблемы с версионностью зависимостей (Скрипт №1, например требует библиотеку версии 1.2.3.4, а скрипт №2 требует ту же библиотеку, но версии 2.3.4.5).


Это не аргумент:) Это возмущение.
Ну не может выгрузить и что?

Если два плагина, должны работать в runtime то явно они будут уникальными.
Просто подгружаешь два плагина и раскидываешь скрипт куда нужно.

Чето вижу аргументов нету.
...
Рейтинг: 0 / 0
Приложение на C# и внутри скрипты на C# ?
    #39974550
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
создаешь домен, грузишь сборку в домен, выгружаешь домен, профит. тема уже избитая.

И имеешь весь гемморой с ремоутингом/маршаллингом и проч., как только тебе нужно что-то через границы домена вызвать. Кроме того в коре доменов уже нет и там все уже надо делать по-другому (через AssemblyLoadContext).
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Приложение на C# и внутри скрипты на C# ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]