Хостинг скриптового движка для приложений - PullRequest
2 голосов
/ 13 января 2009

У нас есть приложение, которое в определенное время должно выполнять «задачи», чтобы выполнить некоторую работу. Эти задачи в настоящее время являются просто командами (читай: неуместные VB-скрипты), которые запускаются, а затем отслеживают процесс на предмет завершения или прерывания, если он «истекает», однако у нас недостаточно контроля над выполнением.

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

void Initialize();
void Destroy();
void Execute();
void Abort();
int GetProgress();

Конечно, вышеприведенное, вероятно, не то, что было бы в коде, однако вы понимаете, что ... По сути, из нашего приложения мы можем вызвать Initialize, затем Execute, опрос GetProgress до возвращаемого значения равно 100 или что-то еще, затем в конце либо позвоните Destroy или Abort, либо Destroy, если нам нужно отменить, либо оно прошло больше времени ожидания.

Главное, что должны быть в состоянии выполнить сценарии, - это запросы AD и взаимодействие с командной консолью (например, подключить сетевой диск или отключить один).

Я рассмотрел несколько вариантов для этого - тот, который я реализовал в прототипе, использует Boo в качестве языка и по существу загружает скрипт на лету, чтобы компилировать и выполнять как «сборку» в памяти. Мне нравится, как это работает, но я не уверен, насколько хорошо это было бы принято, если бы не был «хорошо известным» языком и т. Д.

Другие варианты, на которые я смотрю, это Python (IronPython), Ruby (IronRuby), PowerShell и, возможно, VB, но я не уверен насчет простоты реализации с VB.

Какие-либо мнения, комментарии, предложения или даже ресурсы, которые могут указать мне правильное направление?

Ответы [ 3 ]

3 голосов
/ 13 января 2009

Lua предназначен для использования в приложениях. не повредит, что это действительно аккуратный и эффективный язык.

0 голосов
/ 06 декабря 2009

Если вы хотите, чтобы другие люди писали скрипты для вашей системы, то PowerShell может быть хорошим выбором. По моим наблюдениям, люди менее устойчивы к изучению PowerShell, чем к Python. Вероятно, это потому, что PowerShell поставляется с отметкой одобрения Microsoft. В магазине Microsoft, Python может показаться слишком экзотическим, а Ruby - тем более.

Легко сделать так, чтобы все в мире Microsoft - будь то программисты, специалисты по обеспечению качества, специалисты по поддержке, опытные пользователи - получили бы пользу от изучения PowerShell. Легко сделать так, чтобы изучение PowerShell соответствовало их собственным интересам. cmd.exe будет устаревшим. Каждый рано или поздно изучит PowerShell.

Вот почему я думаю, что PowerShell будет хорошим выбором по умолчанию.

Однако, конечно, многое зависит от конкретных требований.

Хорошим тестом может быть написание типового сценария на каждом из языков-кандидатов и выяснение, какой из них является наиболее естественным. Похоже, что PowerShell подойдет для того, что вы описываете. Но если скрипты очень «алгоритмические», то Python или Ruby были бы лучше. Если скорость необходима, я считаю, что IronPython намного быстрее, чем PowerShell. (Я не знаю о IronRuby.) И т.д.

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

0 голосов
/ 13 января 2009

Это не очень интересно, но я бы подумал об использовании встроенной поддержки хостинга скриптов. Раньше я делал это в Native C ++ без проблем, и, похоже, в .Net есть то же самое (заверните, что статья старая) в http://msdn.microsoft.com/en-us/library/ms974577.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...