【问题标题】:Would you recommend Iron Ruby, Iron Python, or PowerShell for making a C# application a script host?您是否会推荐 Iron Ruby、Iron Python 或 PowerShell 来使 C# 应用程序成为脚本宿主?
【发布时间】:2010-08-14 16:47:42
【问题描述】:

您会推荐 Iron Ruby、Iron Python 或 PowerShell 来将 C# 应用程序作为脚本宿主吗?

经过一些快速的修改,现在我倾向于使用 powershell,主要有两个原因(请注意这些纯粹是我的观点,如果它们是错误的,我很想知道!!!):

1) 在应用程序中创建带有类的运行空间很简单;因此很容易使您的应用程序可编写脚本。

2) 我听说 IronRuby 和 IronPython 正在失去 Microsoft 的支持,因此它们可能不是一个糟糕的长期解决方案?

由于这是我第一次在应用程序中添加脚本,我很欢迎我从以前一直在这条路上的人那里得到所有建议。

具体来说,除了让我知道您是否同意我的上述两点之外,我想知道 IronRuby 和 IronPython 是否比 powershell 更易于使用(对于用户,而不是开发人员),以及您的使用经验是否DLR 就像将对象传递给 powershell 运行空间一样简单?如果我添加了对 DLR 和 IR/IP 脚本的支持,我的应用程序是否仍能向后兼容 XP?

【问题讨论】:

    标签: c# powershell ironpython ironruby dynamic-language-runtime


    【解决方案1】:

    我不相信 PowerShell 在其长期目标的任何地方都有“成为应用程序的脚本语言”。它第一个是一个 shell,第二个是集成和自动化引擎,第三个是 shell 脚本语言......因为它根本不可再分发,我不确定嵌入式脚本适合哪里。

    托管 PowerShell 无疑非常容易——假设它已预先安装在您的目标 PC 上——所以这是一个非常可行的选择,但我认为通常使用 IronRuby 或 IronPython 也很容易。

    我怀疑 DLR 本身是否会消失,所以我认为使用 DLR 语言仍然是一个不错的选择:您可以轻松地接受其他 DLR 语言,并且 DLR 和语言是可再分发的.

    此外,托管 PowerShell 的工作只会让您获得 PowerShell —— 而您可以利用相同的工作来让 IronPython 和 IronRuby 正常工作。谁知道呢,既然 PowerShell 是一种动态语言,也许它会在未来的版本中被移植到具有适当动态支持的 DLR ......但它不太可能是可再分发的,因为微软不认为它是一个开发工具,而是操作系统的核心部分。

    底线:使用 DLR 更便携 -- 不仅适用于 XP,甚至适用于 Mono(因此适用于 Linux、OS X、iOS、Android 等......甚至通过 Silverlight 到 Web 或 Windows Phone)。

    【讨论】:

    • 实际上,正如 powershell 团队所提出的那样,作为一种用于应用程序管理和自动化的脚本语言是主要目标之一。虽然我不同意您的其他观点,但只要 PS 存在,以这种方式使用 PS 几乎肯定会得到支持和改进。话虽如此,我对围绕 powershell 的 redist 政策和实践感到困惑。
    【解决方案2】:

    第 2 点是正确的(动态语言团队现在已经裁员一段时间了),这是一个很好的理由。 Ruby 和 Python 不是 MS 语言,因此 Iron * 只是“让它在 .NET 上运行”。 PowerShell 是 Microsoft 创建的,由 Microsoft 控制和支持。

    更重要的是,多个 Microsoft 产品都高度依赖 PowerShell(Exchange、SharePoint 等),因此 PowerShell 作为一种语言的持续支持几乎没有问题。

    最后,PowerShell 将其他应用程序的脚本语言视为其一流的支持目标之一。

    【讨论】:

    • 遗憾的是,关于 IronXxx 的说法是真的。就在我们开始希望获得官方 VS 支持的时候......
    • 嗯,IronPython 仍然受 Microsoft 支持。 IronRuby 是被抛弃的那个。
    【解决方案3】:

    我也有类似的情况。我决定使用 IronPython 脚本,但自从我看到 Anders Hejlsberg 的演讲“C# 的未来”后,我就觉得 IronPython 注定要失败了。

    开发 DLR 符合 Microsoft 的利益,但他们最终希望我们使用他们控制的工具和语言。毕竟,您不是使用 C# 而不是 Java 吗?那么微软动态语言会是什么样子呢?动态的、解释型的 C#(Iron C#)怎么样? Hejlsberg 的谈话清楚地表明它并不遥远。他甚至有一个带有 REPL 界面的控制台窗口。也就是说,Iron VB 总是有可能的。谈谈闭环。

    对于我们程序员而言,Iron C# 还解决了另一个我遇到的问题——存在两个并行对象环境,一个是 .Net 对象,一个是 Python 对象。从一个到另一个需要工作。我假设 Iron C# 将使用 .Net 类结构。

    我的建议:坚持使用 Iron Python 和 .Net 类。当 Iron VB 或 Iron C# 出现时,它会是一种快速的、可能是自动的语言翻译。此外,如果我们中有足够多的人使用 IronPython,微软可能会改变他们的心态。

    【讨论】:

    • F# 是微软支持的动态语言吗?
    • 没有 F# 是静态类型的编程语言
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多