Вы бы порекомендовали Iron Ruby, Iron Python или PowerShell для создания приложения на C# в качестве хоста сценария?

Вы бы порекомендовали Iron Ruby, Iron Python или PowerShell для создания приложения на C# в качестве хоста сценария?

После некоторой быстрой работы я сейчас склоняюсь к powershell по двум основным причинам (обратите внимание, это чисто мое мнение, и если они ошибочны, я бы хотел знать!!!):

1) Легко создать пространство выполнения с классами в вашем приложении; для этого легко сделать приложение доступным для сценариев.

2) Я слышал слухи о том, что IronRuby и IronPython теряют поддержку со стороны Microsoft, поэтому они могут быть плохим долгосрочным решением?

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

В частности, помимо того, чтобы сообщить мне, согласны ли вы с моими двумя пунктами выше, я хотел бы знать, гораздо ли проще использовать IronRuby и IronPython (для пользователя, а не разработчика), чем powershell, и если по вашему опыту использование DLR так просто, как просто передать объект в пространство выполнения powershell? И если я добавлю поддержку сценариев DLR и IR/IP, будет ли мое приложение обратно совместимо с XP?

3 ответа

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

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

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

Кроме того, работа по размещению PowerShell позволяет получить только PowerShell, в то время как вы можете использовать ту же работу для работы IronPython и IronRuby. Кто знает, поскольку PowerShell - это динамический язык, возможно, он будет перенесен в DLR с соответствующей поддержкой динамики в будущей версии... но вряд ли он когда-либо будет распространяться, поскольку Microsoft не считает его инструментом разработки, а скорее основная часть ОС.

Итог: использование DLR гораздо более переносимо - и не только для XP, но даже для Mono (и, следовательно, для Linux, OS X, iOS, Android и т. Д.... и даже для Интернета или Windows Phone через Silverlight).

Номер 2 - это правда (динамические команды lang уже давно теряют численность персонала) и отличная причина. Ruby и Python не являются языками MS, и поэтому Iron * просто "работает на.NET". PowerShell - это создание Microsoft, контролируемое Microsoft и поддерживаемое Microsoft.

Что еще более важно, несколько продуктов Microsoft имеют глубокую зависимость от PowerShell (Exchange, SharePoint и т. Д.), Поэтому практически не возникает вопроса о постоянной поддержке PowerShell как языка.

Наконец, PowerShell рассматривает возможность использования сценариев для других приложений в качестве одной из первоклассных целей поддержки.

Я в похожей позиции. Я решил использовать сценарии IronPython, но с тех пор, как я увидел доклад Андерса Хейлсберга "Будущее C#", у меня было чувство, что IronPython обречен.

В интересах Microsoft было разработать DLR, но в конечном итоге они хотят, чтобы мы использовали инструменты и языки, которые они контролируют. В конце концов, разве вы не используете C#, а не Java? Так как же будет выглядеть динамический язык Microsoft? Как насчет динамического, интерпретируемого C# (Iron C#)? Из разговора Хейлсберга стало ясно, что это не так далеко. У него даже было консольное окно с интерфейсом REPL. Тем не менее, всегда есть возможность для Iron VB. Разговор о закрытии петли.

С другой стороны, для нас, программистов, Iron C# также решает еще одну проблему, с которой у меня возникают проблемы - существование двух параллельных объектных сред, одного из объектов.Net и одного из объектов Python. Требуется работа, чтобы добраться от одного до другого. Я предполагаю, что Iron C# будет использовать структуру класса.Net.

Мой совет: придерживайтесь классов Iron Python и.Net. Когда произойдет Iron VB или Iron C#, это будет быстрый, возможно, автоматический языковой перевод. Кроме того, если достаточное количество из нас использует IronPython, Microsoft может изменить свое мнение.

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