powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Скрипты в .NET приложении
36 сообщений из 36, показаны все 2 страниц
Скрипты в .NET приложении
    #38378044
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добра!

Появилась необходимость дать пользователям возможность писать скрипты в приложении, то есть нужно сделать API который будет высовывать наружу некоторые методы и структуры и скриптовый язык, который сможет использовать этот API, и умеет работать с файловой системой итп.
Идеальный вариант поддержка двух языков: С# чтобы разработка в рамках API не сильно отличалась от работы разработчика приложения. и код мог перетекать без особых изменений из приложения в скрипты и обратно.
И какой-нибудь простенький скриптовый язык, который учится за день и может только вызывать предоставленные ему методы API
Существуют ли готовые годные решения, и вообще в каком направлении копать?
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378107
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronPython
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378311
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Roslyn это что такое? студия 2010 посмотреть не получается.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378361
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSLT или Razor. Штатные языки, никаких дополнительных телодвижений.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378371
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а почему не рассматриваешь варианты работы с полноценными аддонами? Тут тебе C# со всеми вытекающими. Опять же, всё штатно.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378396
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Я сейчас рассматриваю все варианты. Просто задача внезапно сегодня обрисовалась и пока даже еще не знаю с какой стороны удачнее зайти.
XSLT у меня уже собирает кастомный XAML, теперь нужно кастомизировать поведение. грубо говоря нужно чтобы пользователь мог дописывать в приложение свои обработчики событий ни в чем себе не отказывая.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378405
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну так кури плагины. MEF или "MAF".
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378447
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Спасибо за идею. покапаю в этом направлении, и возможно вопрос с полноценным языком возможно решен. осталось решить проблему с простым языком скриптов для непрограммистов.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38378597
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAF: http://codearticles.ru/articles/2350
MEF: http://codearticles.ru/articles/2349
Простой язык скриптов Razor: http://codearticles.ru/articles/2339
Простой язык скриптов XSLT: http://codearticles.ru/articles/1289
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379364
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379366
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379376
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnSparrow, так есть же родной JScriptCodeProvider...

Вот тут еще подборка скриптовых раннеров.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379810
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем добавилось требование: должно выглядеть как запуск текстовых скриптов в рантайме и иметь какой-нибудь отладчик для них с пошаговым выполнением и возможностью смотреть что в переменных. плагины не проходят по первому требованию.

Пробовал Roslyn полноценная поддержка скриптов на C# реализуется в 20 строчек кода. тынц
Нет дебагера из коробки, хотя есть доступ ко всем кишкам компилятора чтобы это сделать. и нужны .Net 4.5, VS 2012, SDK, собственно Roslyn. Ну и пока неясное будущее CTP.

Простой язык скриптов XSLT
Хорошая шутка
собственно скрипты в XSLT это уже расширение. и на практике оказалось выходит внезапными тормозами и подвисаниями, ну и МС XSLT 1.0 только поддерживают, который только для простого трансформа пригоден.

IronPython попробовал. как-то он неинформативно сообщает об ошибках. простую опечатку, если не знать где, можно искать достаточно долго, хотя может что-то делаю не так.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379835
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempсобственно скрипты в XSLT это уже расширение. и на практике оказалось выходит внезапными тормозами и подвисаниями
Всё зависит от конкретной реализации задачи.

pempну и МС XSLT 1.0 только поддерживают, который только для простого трансформа пригоден.
Первой версии хватает за глаза. Что есть "простой" трансформ для меня загадка. Он пригоден для любого трансформа.

pempRoslyn, IronPython, ...
Продолжай дальше заниматься садомазахизмом. А нормальные вменяемые люди будут юзать плагины на MEF и MAF. Там и студийный дебаг и всё остальное.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38379859
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А VSTA похоронен?
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380011
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как насчет компиляции временных сборок из "скриптов" на C# (CSharpCodeProvider)?
Отладчик - студия ( Debugger.Break() )
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380044
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tAZAR, уже предлагалось.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380067
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Хм, не увидел. Только JScript.

Вообще, MEF же неплохой вариант.
Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса?
В свое время стоял перед выбором. Лучше студии вряд ли что-то будет.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380085
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tAZARВообще, MEF же неплохой вариант.
Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса?
В свое время стоял перед выбором. Лучше студии вряд ли что-то будет.
+1, но я бы лучше на новомодном MAF сделал бы в виде отдельный сборок + реализован функционал для запуска trusted code, в отличие от MEF. Но можно и самому такое сделать на чистом CSharpCodeProvider: http://codearticles.ru/articles/1303
Вообщем, вариантов масса - бери да юзай. Но автор упорно давит лбом кирпичную стену и ищет какие-то экзотические способы.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380341
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www.csscript.net
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380566
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУpempсобственно скрипты в XSLT это уже расширение. и на практике оказалось выходит внезапными тормозами и подвисаниями
Всё зависит от конкретной реализации задачи.

Может быть, тогда как ускорить компиляцию скриптов в рантайме? штатными средствами что-то более-менее крупное при первом вызове занимало 0.5-1.5 секунды на клиентском компьютере, с учетом того, что это происходит не на старте приложения, а во время работы пользователя это оказалось не приемлемо.
МСУpempну и МС XSLT 1.0 только поддерживают, который только для простого трансформа пригоден.
Первой версии хватает за глаза. Что есть "простой" трансформ для меня загадка. Он пригоден для любого трансформа.

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

МСУПродолжай дальше заниматься садомазахизмом. А нормальные вменяемые люди будут юзать плагины на MEF и MAF. Там и студийный дебаг и всё остальное.
Все это отлично. вот только нанимать и обучать нормальных вменяемых людей по всему миру, открыть еще один отдел сапорта который будет учить людей пользоваться студией. итп. выйдет на порядок дороже, чем написать свой скриптовый движок для простой логики, в которой большинство клиентов будут просто свои цифры и буквы подставлять. Когда-то даже простой переход с .net 3.5 на 4 неожиданно создал кучу геморроя при обновлении и развертывании у новых клиентов. хотя казалось бы у всех есть сисадмины, интернет, автообновление... но мир внезапно оказался неидеальным, а на большом количестве это становится фактором с которым приходится считаться и закладывать в бюджет.

К слову Roslyn весьма интересная штука, как оказалось. Простой редактор текста с проверкой синтаксиса пишется в пару десятков строк. смущает пока еще неясное будущее.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380583
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempМожет быть, тогда как ускорить компиляцию скриптов в рантайме?
Никак. Только оптимизировать алгоритм. Разговор о сферическом коне в вакууме.

pempЗначит просто не приходилось сталкиваться. У меня половина проекта на XSLT, отлично решает поставленные задачи, но раньше периодически наступали на грабли, связанные с тем что XSLT 1.0 чего-то не умеет
Ну не без этого. Но это же не полноценный объектно-ориентированный язык, а простой язык преобразования XML-документов.

pempВсе это отлично. вот только нанимать и обучать нормальных вменяемых людей по всему миру, открыть еще один отдел сапорта который будет учить людей пользоваться студией. итп. выйдет на порядок дороже, чем написать свой скриптовый движок для простой логики
Сомневаюсь на счет дороже. На разработку своего движка уйдут годы, его так же нужно поддерживать, развивать, ловить баги и прочее. Не всё так прозрачно, как тебе кажется. Проще взять готовые движки, чем изобратеть велосипеды.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380734
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подкину экзотики на вентилятор: rhino dsl boo
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38380911
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983Подкину экзотики на вентилятор: rhino dsl boo

Если об экзотике: Lua + LuaInterface

Сам не пробовал, но говорят очень шустрый язык, на порядок быстрее JavaScript
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38381085
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУpempМожет быть, тогда как ускорить компиляцию скриптов в рантайме?
Никак. Только оптимизировать алгоритм. Разговор о сферическом коне в вакууме.

А как влияет оптимизация алгоритма на скорость компиляции? скорее наоборот менее эффективный но более прямолинейный алгоритм скомпилируется быстрее. К слову, затык произошел на просто однопроходном парсинге строки 10-300 символов, в котором сложно что-то соптимизировать.

МСУ Сомневаюсь на счет дороже. На разработку своего движка уйдут годы, его так же нужно поддерживать, развивать, ловить баги и прочее. Не всё так прозрачно, как тебе кажется. Проще взять готовые движки, чем изобратеть велосипеды.
Собственно потому я сейчас и рассматриваю все предложенные и не предложенные варианты. хотя на рослине, между делом, рабочий движок сделал, полностью удовлетворяющий требованиям, за исключением отладчика. Но что-то подсказывает, что есть подводные камни.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38381355
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempА как влияет оптимизация алгоритма на скорость компиляции?
Оптимизация кода, ровно как и его рефакторинг, нередко приводят к уменьшению итогового объема. Как следствие, скорость компиляции может варьироваться от большего значения к меньшему.

pempСобственно потому я сейчас и рассматриваю все предложенные и не предложенные варианты. хотя на рослине, между делом, рабочий движок сделал, полностью удовлетворяющий требованиям, за исключением отладчика. Но что-то подсказывает, что есть подводные камни.
Ежики кололись, пугались, но продолжали есть кактус...
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38381886
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОптимизация кода, ровно как и его рефакторинг, нередко приводят к уменьшению итогового объема. Как следствие, скорость компиляции может варьироваться от большего значения к меньшему.
хорошая фраза для учебника, но на практике имеем метод с одним пробегом по строке и парой строчек с вызовом StringBuilder который первый раз вместе с JIT выполняется 3мс, последующие 0мс и при первом вызове из XSLT 700мс Если тут может помочь оптимизация, то после нее код должен выполнятся за отрицательное время.

МСУЕжики кололись, пугались, но продолжали есть кактус...
Может и кактус, но полноценный скриптовый движок с проверкой синтаксиса и зачатком отладчика набросал за пару кофебрейков, можно сказать получил уже приемлемый результат, еще даже не приступая к решению задачи. На мой взгляд глупо не исследовать такие возможности только по причине того, что уже есть какой-то любимый инструмент.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38381938
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pemp,

Почему бы при написании и тестировании скрипта не компилировать его каждый раз, а во время выполнения приложения загружать уже сохраненную скомпилированную версию? Проблемы с постоянной компиляцией уйдут, и не будете одинаковые сборки плодить при каждом запуске скриптов.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38382007
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempхорошая фраза для учебника, но на практике имеем метод с одним пробегом по строке и парой строчек с вызовом StringBuilder который первый раз вместе с JIT выполняется 3мс, последующие 0мс и при первом вызове из XSLT 700мс Если тут может помочь оптимизация, то после нее код должен выполнятся за отрицательное время.
Учебник учебнику рознь. Оптимизируй, кешируй, выноси в отдельный домен. Для мне первые 700мс не проблема.

pempМожет и кактус, но полноценный скриптовый движок с проверкой синтаксиса и зачатком отладчика набросал за пару кофебрейков, можно сказать получил уже приемлемый результат, еще даже не приступая к решению задачи. На мой взгляд глупо не исследовать такие возможности только по причине того, что уже есть какой-то любимый инструмент.
Может и кактус. Но неумелое обращение мартышки с гранатой порой приводят к печальным последствиям. Если тебя прельщает такая вероятность, продолжай дальше аккуратно расставлять себе грабли. На мой взгляд глупо использовать какие-то инопланетные поделки, когда кругом полно нормальных штатных инструментов.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38382148
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tAZARПочему бы при написании и тестировании скрипта не компилировать его каждый раз, а во время выполнения приложения загружать уже сохраненную скомпилированную версию?

Этот вариант тоже прорабатывается, с ним просто все понятно и нет технических вопросов. Здесь вопросы сугубо развертывания и удовлетворения целевой аудитории. Задачи для скриптов разноплановые, какие-то ближе к плагинам, какие-то ближе к конфигам, есть задачи которые сделал один раз и забыл, есть требующие постоянной обработки напильником. Еще есть две категории конечных пользователей: программисты. и не программисты, но технические специалисты. С первыми все просто, им нужна только точка входа и документация. здесь тот же MEF 100% покрывает задачу, но их меньшинство. Для большинства же идеальный вариант иметь скрипт в тексте. чтобы можно было нажать кнопку в приложении, посмотреть результат, поправить скрипт, ctr+s и снова нажать кнопку в приложении итд. если билдить сборки такая доводка выйдет в разы дольше. + учить людей пользоваться студией, кому-то все это ставить прописывать пути итп мелочи, но в масштабах как уже говорил такие мелочи набегают на серьезные затраты, тут нужно несколько раз взвесить все варианты прежде чем делать выбор в пользу конкретной реализации.

К слову о "инопланетной поделке", на текущий момент планируется что эта поделка будет основным компилятором C# 6.0. а большинство из готовых сторонних скриптовых движков с которыми я ознакомился - заброшенные проекты.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38382235
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempК слову о "инопланетной поделке", на текущий момент планируется что эта поделка будет основным компилятором C# 6.0. а большинство из готовых сторонних скриптовых движков с которыми я ознакомился - заброшенные проекты.
Это еще вилами по воде писано, да и у MS полно тухлых проектов, которые закрыли по той или иной причине. Не нужно бежать впереди паровоза, дай ему сначала разогнаться. А то получится как с сильверлайтом - хотели побороть флеш и завоевать мир, а оказались у разбитого корыта.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38382267
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pempДля большинства же идеальный вариант иметь скрипт в тексте. чтобы можно было нажать кнопку в приложении, посмотреть результат, поправить скрипт, ctr+s и снова нажать кнопку в приложении итд. если билдить сборки такая доводка выйдет в разы дольше.
Компиляция для запуска 1 скрипта во время разработки - это не задача, являющаяся высоко нагруженной или узким местом, нет смысла экономить на компиляции.
А вот последующие запуски пользователем уже оптимизируются понятным способом - сохранением готовой сборки.
Студия тоже не нужна, есть неплохие редакторы с подсветкой синтаксиса, к которым даже прикручивается полноценный intelli-sence. Примеры реализации и некоторые компоненты можно найти в SharpDevelop.

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

C# сборка же может получить доступ к любым типам из референсов или через рефлексию. Выполнение в отдельных доменах, кстати, приводит к проблемам в WinForms (хэндлы окон без напильника через домены не прокидываются).
Когда был похожий проект - реализовали дизайнер форм в отдельном приложении, использовали разработку пользовательского кода на C#, дизайнер генерил CodeDom, все это переваривалось в 1 исходник и компилилось. Клиент пользовался готовыми сборками, но можно было и на лету что-нибудь написать и выполнить. Все это интересно и кажется гибким. Но я лично лучше буду пользоваться студией :)

К чему я это все:
Скрипты для пользователей? Учить студии? Их в любом случае придется чему-то учить, какой бы язык не был выбран (не считая ваш API).
Для пользователей, которых не хочется долго учить, лучший выход - это конструктор процессов.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38405623
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как написать и подключить свой язык, например совместимый с 1С - чтоб на русском и без строгой типизации?
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38405723
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
badboychikА как написать и подключить свой язык, например совместимый с 1С - чтоб на русском и без строгой типизации?Например, вот исходники аддина, который добавляет в студию поддержку TypeScript: https://github.com/mrward/typescript-addin
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38405734
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, он под SharpDevelop.
...
Рейтинг: 0 / 0
Скрипты в .NET приложении
    #38754744
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как сделать так чтобы парсинг с сайта выполнялся после выполнения javascript, в общем что то типо паузы, пока скрипт невыполнится, парсинг не делать. Знаю как сделать проверку на загрузку страницы в браузер, а вот с скриптом увы нет.
Код: vbnet
1.
2.
3.
While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
            Application.DoEvents()
        End While


Ждем пока загрузится страница, а как ждать чтобы выполнился яваскрипт?
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Скрипты в .NET приложении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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