Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Всем добра! Появилась необходимость дать пользователям возможность писать скрипты в приложении, то есть нужно сделать API который будет высовывать наружу некоторые методы и структуры и скриптовый язык, который сможет использовать этот API, и умеет работать с файловой системой итп. Идеальный вариант поддержка двух языков: С# чтобы разработка в рамках API не сильно отличалась от работы разработчика приложения. и код мог перетекать без особых изменений из приложения в скрипты и обратно. И какой-нибудь простенький скриптовый язык, который учится за день и может только вызывать предоставленные ему методы API Существуют ли готовые годные решения, и вообще в каком направлении копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 06:15 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
IronPython ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 08:59 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
А Roslyn это что такое? студия 2010 посмотреть не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 11:15 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
XSLT или Razor. Штатные языки, никаких дополнительных телодвижений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 11:44 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Кстати, а почему не рассматриваешь варианты работы с полноценными аддонами? Тут тебе C# со всеми вытекающими. Опять же, всё штатно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 11:47 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУ, Я сейчас рассматриваю все варианты. Просто задача внезапно сегодня обрисовалась и пока даже еще не знаю с какой стороны удачнее зайти. XSLT у меня уже собирает кастомный XAML, теперь нужно кастомизировать поведение. грубо говоря нужно чтобы пользователь мог дописывать в приложение свои обработчики событий ни в чем себе не отказывая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 12:04 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
А, ну так кури плагины. MEF или "MAF". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 12:11 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУ, Спасибо за идею. покапаю в этом направлении, и возможно вопрос с полноценным языком возможно решен. осталось решить проблему с простым языком скриптов для непрограммистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 12:29 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
MAF: http://codearticles.ru/articles/2350 MEF: http://codearticles.ru/articles/2349 Простой язык скриптов Razor: http://codearticles.ru/articles/2339 Простой язык скриптов XSLT: http://codearticles.ru/articles/1289 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 13:47 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
В общем добавилось требование: должно выглядеть как запуск текстовых скриптов в рантайме и иметь какой-нибудь отладчик для них с пошаговым выполнением и возможностью смотреть что в переменных. плагины не проходят по первому требованию. Пробовал Roslyn полноценная поддержка скриптов на C# реализуется в 20 строчек кода. тынц Нет дебагера из коробки, хотя есть доступ ко всем кишкам компилятора чтобы это сделать. и нужны .Net 4.5, VS 2012, SDK, собственно Roslyn. Ну и пока неясное будущее CTP. Простой язык скриптов XSLT Хорошая шутка собственно скрипты в XSLT это уже расширение. и на практике оказалось выходит внезапными тормозами и подвисаниями, ну и МС XSLT 1.0 только поддерживают, который только для простого трансформа пригоден. IronPython попробовал. как-то он неинформативно сообщает об ошибках. простую опечатку, если не знать где, можно искать достаточно долго, хотя может что-то делаю не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 13:30 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempсобственно скрипты в XSLT это уже расширение. и на практике оказалось выходит внезапными тормозами и подвисаниями Всё зависит от конкретной реализации задачи. pempну и МС XSLT 1.0 только поддерживают, который только для простого трансформа пригоден. Первой версии хватает за глаза. Что есть "простой" трансформ для меня загадка. Он пригоден для любого трансформа. pempRoslyn, IronPython, ... Продолжай дальше заниматься садомазахизмом. А нормальные вменяемые люди будут юзать плагины на MEF и MAF. Там и студийный дебаг и всё остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 13:41 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
А VSTA похоронен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 13:52 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Как насчет компиляции временных сборок из "скриптов" на C# (CSharpCodeProvider)? Отладчик - студия ( Debugger.Break() ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 15:28 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
tAZAR, уже предлагалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 15:47 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУ, Хм, не увидел. Только JScript. Вообще, MEF же неплохой вариант. Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса? В свое время стоял перед выбором. Лучше студии вряд ли что-то будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 15:59 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
tAZARВообще, MEF же неплохой вариант. Юзеры должны будут писать скрипты... В чем? В текстовом поле с подсветкой синтаксиса? В свое время стоял перед выбором. Лучше студии вряд ли что-то будет. +1, но я бы лучше на новомодном MAF сделал бы в виде отдельный сборок + реализован функционал для запуска trusted code, в отличие от MEF. Но можно и самому такое сделать на чистом CSharpCodeProvider: http://codearticles.ru/articles/1303 Вообщем, вариантов масса - бери да юзай. Но автор упорно давит лбом кирпичную стену и ищет какие-то экзотические способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 16:14 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
www.csscript.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 20:33 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУ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 весьма интересная штука, как оказалось. Простой редактор текста с проверкой синтаксиса пишется в пару десятков строк. смущает пока еще неясное будущее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 07:43 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempМожет быть, тогда как ускорить компиляцию скриптов в рантайме? Никак. Только оптимизировать алгоритм. Разговор о сферическом коне в вакууме. pempЗначит просто не приходилось сталкиваться. У меня половина проекта на XSLT, отлично решает поставленные задачи, но раньше периодически наступали на грабли, связанные с тем что XSLT 1.0 чего-то не умеет Ну не без этого. Но это же не полноценный объектно-ориентированный язык, а простой язык преобразования XML-документов. pempВсе это отлично. вот только нанимать и обучать нормальных вменяемых людей по всему миру, открыть еще один отдел сапорта который будет учить людей пользоваться студией. итп. выйдет на порядок дороже, чем написать свой скриптовый движок для простой логики Сомневаюсь на счет дороже. На разработку своего движка уйдут годы, его так же нужно поддерживать, развивать, ловить баги и прочее. Не всё так прозрачно, как тебе кажется. Проще взять готовые движки, чем изобратеть велосипеды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 09:12 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Подкину экзотики на вентилятор: rhino dsl boo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 11:17 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
SerP1983Подкину экзотики на вентилятор: rhino dsl boo Если об экзотике: Lua + LuaInterface Сам не пробовал, но говорят очень шустрый язык, на порядок быстрее JavaScript ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 12:38 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУpempМожет быть, тогда как ускорить компиляцию скриптов в рантайме? Никак. Только оптимизировать алгоритм. Разговор о сферическом коне в вакууме. А как влияет оптимизация алгоритма на скорость компиляции? скорее наоборот менее эффективный но более прямолинейный алгоритм скомпилируется быстрее. К слову, затык произошел на просто однопроходном парсинге строки 10-300 символов, в котором сложно что-то соптимизировать. МСУ Сомневаюсь на счет дороже. На разработку своего движка уйдут годы, его так же нужно поддерживать, развивать, ловить баги и прочее. Не всё так прозрачно, как тебе кажется. Проще взять готовые движки, чем изобратеть велосипеды. Собственно потому я сейчас и рассматриваю все предложенные и не предложенные варианты. хотя на рослине, между делом, рабочий движок сделал, полностью удовлетворяющий требованиям, за исключением отладчика. Но что-то подсказывает, что есть подводные камни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 14:00 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempА как влияет оптимизация алгоритма на скорость компиляции? Оптимизация кода, ровно как и его рефакторинг, нередко приводят к уменьшению итогового объема. Как следствие, скорость компиляции может варьироваться от большего значения к меньшему. pempСобственно потому я сейчас и рассматриваю все предложенные и не предложенные варианты. хотя на рослине, между делом, рабочий движок сделал, полностью удовлетворяющий требованиям, за исключением отладчика. Но что-то подсказывает, что есть подводные камни. Ежики кололись, пугались, но продолжали есть кактус... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 16:23 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
МСУОптимизация кода, ровно как и его рефакторинг, нередко приводят к уменьшению итогового объема. Как следствие, скорость компиляции может варьироваться от большего значения к меньшему. хорошая фраза для учебника, но на практике имеем метод с одним пробегом по строке и парой строчек с вызовом StringBuilder который первый раз вместе с JIT выполняется 3мс, последующие 0мс и при первом вызове из XSLT 700мс Если тут может помочь оптимизация, то после нее код должен выполнятся за отрицательное время. МСУЕжики кололись, пугались, но продолжали есть кактус... Может и кактус, но полноценный скриптовый движок с проверкой синтаксиса и зачатком отладчика набросал за пару кофебрейков, можно сказать получил уже приемлемый результат, еще даже не приступая к решению задачи. На мой взгляд глупо не исследовать такие возможности только по причине того, что уже есть какой-то любимый инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 07:41 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pemp, Почему бы при написании и тестировании скрипта не компилировать его каждый раз, а во время выполнения приложения загружать уже сохраненную скомпилированную версию? Проблемы с постоянной компиляцией уйдут, и не будете одинаковые сборки плодить при каждом запуске скриптов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 09:26 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempхорошая фраза для учебника, но на практике имеем метод с одним пробегом по строке и парой строчек с вызовом StringBuilder который первый раз вместе с JIT выполняется 3мс, последующие 0мс и при первом вызове из XSLT 700мс Если тут может помочь оптимизация, то после нее код должен выполнятся за отрицательное время. Учебник учебнику рознь. Оптимизируй, кешируй, выноси в отдельный домен. Для мне первые 700мс не проблема. pempМожет и кактус, но полноценный скриптовый движок с проверкой синтаксиса и зачатком отладчика набросал за пару кофебрейков, можно сказать получил уже приемлемый результат, еще даже не приступая к решению задачи. На мой взгляд глупо не исследовать такие возможности только по причине того, что уже есть какой-то любимый инструмент. Может и кактус. Но неумелое обращение мартышки с гранатой порой приводят к печальным последствиям. Если тебя прельщает такая вероятность, продолжай дальше аккуратно расставлять себе грабли. На мой взгляд глупо использовать какие-то инопланетные поделки, когда кругом полно нормальных штатных инструментов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 10:22 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
tAZARПочему бы при написании и тестировании скрипта не компилировать его каждый раз, а во время выполнения приложения загружать уже сохраненную скомпилированную версию? Этот вариант тоже прорабатывается, с ним просто все понятно и нет технических вопросов. Здесь вопросы сугубо развертывания и удовлетворения целевой аудитории. Задачи для скриптов разноплановые, какие-то ближе к плагинам, какие-то ближе к конфигам, есть задачи которые сделал один раз и забыл, есть требующие постоянной обработки напильником. Еще есть две категории конечных пользователей: программисты. и не программисты, но технические специалисты. С первыми все просто, им нужна только точка входа и документация. здесь тот же MEF 100% покрывает задачу, но их меньшинство. Для большинства же идеальный вариант иметь скрипт в тексте. чтобы можно было нажать кнопку в приложении, посмотреть результат, поправить скрипт, ctr+s и снова нажать кнопку в приложении итд. если билдить сборки такая доводка выйдет в разы дольше. + учить людей пользоваться студией, кому-то все это ставить прописывать пути итп мелочи, но в масштабах как уже говорил такие мелочи набегают на серьезные затраты, тут нужно несколько раз взвесить все варианты прежде чем делать выбор в пользу конкретной реализации. К слову о "инопланетной поделке", на текущий момент планируется что эта поделка будет основным компилятором C# 6.0. а большинство из готовых сторонних скриптовых движков с которыми я ознакомился - заброшенные проекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 11:48 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempК слову о "инопланетной поделке", на текущий момент планируется что эта поделка будет основным компилятором C# 6.0. а большинство из готовых сторонних скриптовых движков с которыми я ознакомился - заброшенные проекты. Это еще вилами по воде писано, да и у MS полно тухлых проектов, которые закрыли по той или иной причине. Не нужно бежать впереди паровоза, дай ему сначала разогнаться. А то получится как с сильверлайтом - хотели побороть флеш и завоевать мир, а оказались у разбитого корыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 12:50 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
pempДля большинства же идеальный вариант иметь скрипт в тексте. чтобы можно было нажать кнопку в приложении, посмотреть результат, поправить скрипт, ctr+s и снова нажать кнопку в приложении итд. если билдить сборки такая доводка выйдет в разы дольше. Компиляция для запуска 1 скрипта во время разработки - это не задача, являющаяся высоко нагруженной или узким местом, нет смысла экономить на компиляции. А вот последующие запуски пользователем уже оптимизируются понятным способом - сохранением готовой сборки. Студия тоже не нужна, есть неплохие редакторы с подсветкой синтаксиса, к которым даже прикручивается полноценный intelli-sence. Примеры реализации и некоторые компоненты можно найти в SharpDevelop. Скриптовый язык даст 1 значимый плюс: разграничение доступа к компонентам системы. Но он имеет и минус: настройка этого самого доступа, сложности при интеграции. C# сборка же может получить доступ к любым типам из референсов или через рефлексию. Выполнение в отдельных доменах, кстати, приводит к проблемам в WinForms (хэндлы окон без напильника через домены не прокидываются). Когда был похожий проект - реализовали дизайнер форм в отдельном приложении, использовали разработку пользовательского кода на C#, дизайнер генерил CodeDom, все это переваривалось в 1 исходник и компилилось. Клиент пользовался готовыми сборками, но можно было и на лету что-нибудь написать и выполнить. Все это интересно и кажется гибким. Но я лично лучше буду пользоваться студией :) К чему я это все: Скрипты для пользователей? Учить студии? Их в любом случае придется чему-то учить, какой бы язык не был выбран (не считая ваш API). Для пользователей, которых не хочется долго учить, лучший выход - это конструктор процессов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 13:18 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
А как написать и подключить свой язык, например совместимый с 1С - чтоб на русском и без строгой типизации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 10:42 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
badboychikА как написать и подключить свой язык, например совместимый с 1С - чтоб на русском и без строгой типизации?Например, вот исходники аддина, который добавляет в студию поддержку TypeScript: https://github.com/mrward/typescript-addin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 11:52 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Тьфу, он под SharpDevelop. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 11:55 |
|
||
|
Скрипты в .NET приложении
|
|||
|---|---|---|---|
|
#18+
Подскажите как сделать так чтобы парсинг с сайта выполнялся после выполнения javascript, в общем что то типо паузы, пока скрипт невыполнится, парсинг не делать. Знаю как сделать проверку на загрузку страницы в браузер, а вот с скриптом увы нет. Код: vbnet 1. 2. 3. Ждем пока загрузится страница, а как ждать чтобы выполнился яваскрипт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 14:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1402443]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 288ms |

| 0 / 0 |
