Язык сценариев для встраивания в приложения C# /. NET?

[На только аналогичный вопрос, который я могу найти, был дан ответ давно, и он содержит ссылку в основном на IronPython. Хочу рассмотреть и другие варианты]

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

Какой самый простой язык сценариев для встраивания C# /. NET? Можно ли как-то встроить VBA аналогично Excel / Word? Или, может быть, используется JavaScript / Lua?

Излишне говорить, что во встроенных сценариях должно быть легко предоставить доступ к некоторым API и объектам из основного приложения.

Вы проверяли ШЕЛК? Он был разработан для этой цели.

Jonathan Wood 12.11.2019 15:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
1
8 163
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Бу возможно?

Чем он лучше IronPython?

Eli Bendersky 20.01.2009 20:58

@eliben: "лучше"? Чем может быть что-нибудь «лучше» IronPython? Это другое. Он имеет необязательную статическую типизацию и очень подходит для указания DSL, которые могут хорошо соответствовать вашему сценарию. См. ayende.com/Blog/archive/2007/12/17/The-Boo-Language.aspx

orip 20.01.2009 21:08

Да, но он довольно новый, неподдерживаемый и непонятный. Нет шансов получить по нему книгу, сообщество пользователей невелико, а библиотек немного. В конце концов, мне нужно «корпоративное» приложение, так что Бу не подойдет.

Eli Bendersky 20.01.2009 21:26

Книга: manning.com/rahien

Mauricio Scheffer 20.01.2009 21:34

Библиотеки: это язык .NET, поэтому все, что есть в мире .NET, принадлежит вам.

Mauricio Scheffer 20.01.2009 21:36

встраивание очень просто: boo.codehaus.org/Boo+as+an+embedded+scripting+language

Mauricio Scheffer 20.01.2009 21:37

@eliben: В чем Бу особенно «новенький»? Манифест Boo датируется ~ 2004 годом, что всего на год позже, чем IronPython. Если вам нужно что-то «лучше», чем IronPython, вы должны явно определить свои критерии. Вы сказали, что вам нужен вариант, отличный от IronPython. Я дал тебе одну.

Jon Skeet 20.01.2009 21:44

Джон Скит - спасибо за это. Я как раз обсуждаю этот вариант. Надеюсь, это не звучит резко - я рад за ссылки

Eli Bendersky 20.01.2009 22:08

Я знаю, что вы просили технологию создания сценариев, но основная потребность - контроль кода для непрограммистов. Мы используем Правила ILOG для .Net, чтобы удовлетворить эту потребность.

Ответ принят как подходящий

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

Еще один отличный вариант - IronRuby. Основное различие, которое я вижу, было бы, если бы ваши разработчики / пользователи имели какой-либо опыт работы с Python или Ruby, который можно было бы перенести.

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

+1, по моему опыту, Python очень легко учить и изучать, и непрограммисты воспринимают его так же хорошо, как и опытные программисты.

orip 20.01.2009 21:10

Python легко изучить; использование классов .NET Framework в IronPython менее эффективно. Но это проблема, с которой вы столкнетесь с любым языком сценариев, который взаимодействует с фреймворком, и вы, вероятно, не захотите использовать тот, который этого не делает. Я использую IronPython и очень доволен результатом.

Robert Rossney 20.01.2009 22:35

Lua великолепен! Lua отлично работает с .NET. Я написал сообщение в блоге о том, как начать встраивать Lua и C#, возможно, стоит проверить:

http://blog.apterainc.com/software/embedding-lua-and-c/

Фу! Я получаю 404 по вашей ссылке.

Frank Hale 19.06.2012 00:36

Вот почему stackoverflow требует, чтобы содержимое ссылки, относящейся к ответу, было включено в этот ответ (чтобы избежать мертвых ссылок).

myermian 19.01.2014 03:50

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

Нет, я думаю, C# слишком многословен и сложен для пользователей.

Eli Bendersky 20.01.2009 20:59

А как насчет JScript.NET или PowerShell

Я бы посмотрел только на XAML Windows Workflow. Вы можете повторно разместить конструктор и предоставить настраиваемые действия, которые можно перетаскивать и использовать для управления данными любым удобным для них способом. ОЧЕНЬ наглядно. В настоящее время я использую это в одном из своих приложений, и пользователям это нравится. Хотя для этого требуется небольшая кривая обучения, это намного меньше, чем у обычного языка сценариев, и люди, кажется, могут понять его довольно быстро, особенно те, кто имеет опыт использования блок-схем и Visio.

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

Larry Fix 21.01.2009 00:30

Я согласен ... но именно поэтому вы создаете общие действия, чтобы обрабатывать столько различных процессов, сколько вам нужно. В этом случае действия заменяют отдельные языковые структуры ключевых слов, такие как if, while и т. д.

Lusid 21.01.2009 00:41

Я думаю, что использование C# через CodeDom - очень мощное решение.

Я бы также проголосовал за использование C# для написания ваших расширений. Если у вас нет веской причины, такой как существующая база пользователей, уже знакомых с python, ruby ​​или boo, перевод на другой язык просто увеличивает сложность и стоимость обучения.

Есть много-много-много языки сценариев. Что лучше для вас, зависит от того, что вы пытаетесь сделать.

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

Были упомянуты Boo и IronPython, но не забывайте IronScheme, F# или любой из Другие языки, которые были перенесены на виртуальную машину CIL и имеют компиляцию / интерпретацию во время выполнения.

IronRuby с каждым днем ​​выглядит лучше.

Другие вопросы по теме