Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Скрипты в .NET приложении / 25 сообщений из 36, страница 1 из 2
27.08.2013, 06:15
    #38378044
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
Всем добра!

Появилась необходимость дать пользователям возможность писать скрипты в приложении, то есть нужно сделать API который будет высовывать наружу некоторые методы и структуры и скриптовый язык, который сможет использовать этот API, и умеет работать с файловой системой итп.
Идеальный вариант поддержка двух языков: С# чтобы разработка в рамках API не сильно отличалась от работы разработчика приложения. и код мог перетекать без особых изменений из приложения в скрипты и обратно.
И какой-нибудь простенький скриптовый язык, который учится за день и может только вызывать предоставленные ему методы API
Существуют ли готовые годные решения, и вообще в каком направлении копать?
...
Рейтинг: 0 / 0
27.08.2013, 08:59
    #38378107
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
IronPython
...
Рейтинг: 0 / 0
27.08.2013, 11:15
    #38378311
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
А Roslyn это что такое? студия 2010 посмотреть не получается.
...
Рейтинг: 0 / 0
27.08.2013, 11:44
    #38378361
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
XSLT или Razor. Штатные языки, никаких дополнительных телодвижений.
...
Рейтинг: 0 / 0
27.08.2013, 11:47
    #38378371
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
Кстати, а почему не рассматриваешь варианты работы с полноценными аддонами? Тут тебе C# со всеми вытекающими. Опять же, всё штатно.
...
Рейтинг: 0 / 0
27.08.2013, 12:04
    #38378396
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
МСУ,
Я сейчас рассматриваю все варианты. Просто задача внезапно сегодня обрисовалась и пока даже еще не знаю с какой стороны удачнее зайти.
XSLT у меня уже собирает кастомный XAML, теперь нужно кастомизировать поведение. грубо говоря нужно чтобы пользователь мог дописывать в приложение свои обработчики событий ни в чем себе не отказывая.
...
Рейтинг: 0 / 0
27.08.2013, 12:11
    #38378405
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
А, ну так кури плагины. MEF или "MAF".
...
Рейтинг: 0 / 0
27.08.2013, 12:29
    #38378447
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
МСУ,
Спасибо за идею. покапаю в этом направлении, и возможно вопрос с полноценным языком возможно решен. осталось решить проблему с простым языком скриптов для непрограммистов.
...
Рейтинг: 0 / 0
27.08.2013, 13:47
    #38378597
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
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
28.08.2013, 00:11
    #38379364
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
...
Рейтинг: 0 / 0
28.08.2013, 00:12
    #38379366
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
...
Рейтинг: 0 / 0
28.08.2013, 00:28
    #38379376
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
JohnSparrow, так есть же родной JScriptCodeProvider...

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

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

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

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

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

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

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

Вообще, MEF же неплохой вариант.
Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса?
В свое время стоял перед выбором. Лучше студии вряд ли что-то будет.
...
Рейтинг: 0 / 0
28.08.2013, 16:14
    #38380085
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
tAZARВообще, MEF же неплохой вариант.
Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса?
В свое время стоял перед выбором. Лучше студии вряд ли что-то будет.
+1, но я бы лучше на новомодном MAF сделал бы в виде отдельный сборок + реализован функционал для запуска trusted code, в отличие от MEF. Но можно и самому такое сделать на чистом CSharpCodeProvider: http://codearticles.ru/articles/1303
Вообщем, вариантов масса - бери да юзай. Но автор упорно давит лбом кирпичную стену и ищет какие-то экзотические способы.
...
Рейтинг: 0 / 0
28.08.2013, 20:33
    #38380341
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
www.csscript.net
...
Рейтинг: 0 / 0
29.08.2013, 07:43
    #38380566
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
МСУ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
29.08.2013, 09:12
    #38380583
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипты в .NET приложении
pempМожет быть, тогда как ускорить компиляцию скриптов в рантайме?
Никак. Только оптимизировать алгоритм. Разговор о сферическом коне в вакууме.

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

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

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

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

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

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


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