代码之家  ›  专栏  ›  技术社区  ›  alastairs

PowerShell运行空间与DLR

  •  12
  • alastairs  · 技术社区  · 16 年前

    随着.NET 4.0测试版的推出,以及.NET动态语言运行时的更广泛可用性,我猜想这些主题将变得“更热”。

    我对DLR和PowerShell之间的概念差异感到困惑。在我看来,如果我想在我的.NET应用程序中提供脚本功能,我可以使用DLR(这样可以在Ironpython或IronRuby中启用脚本,或者为DLR提供任何其他Iron*语言),或者托管PowerShell运行空间。

    每种方法的优缺点是什么?为什么我可以选择一个而不是另一个?作为动态语言本身和一流的.NET语言,PowerShell为什么不针对DLR?

    4 回复  |  直到 15 年前
        1
  •  12
  •   Dino Viehland    16 年前

    在.NET 4.0中,DLR由您可以认为的“DLR v1.0”组成。这包括调用站点缓存机制、跨语言互操作特性,以及对现有LINQ表达式树的改进。这些功能对于实现语言非常有用,但不支持语言。

    这是DLR1.0中缺失的部分——所有语言的共享托管故事。但是我们已经从托管API的形式开始,我们在codeplex w/dlr和ironpython项目上发布了API,在github上也发布了ironruby。不幸的是,我们认为我们不能在.NET 4.0时间框架内推动这些API实现交付质量,因此我们没有将它们包括在内。特别是,我们希望从PowerShell、甚至是VB和C等其他语言获得更多反馈,以确保我们拥有正确的API。

    因此,除了Ironpython和IronRuby之外,每种语言或多或少都有自己的托管故事。但是我们希望看到所有这些在将来都能统一起来,这样你的用户就可以选择使用哪种语言了。但是现在PowerShell的目标还没有。

        2
  •  4
  •   Doug Finke    16 年前

    我同意,DLR已经并将继续进行大量的讨论。PowerShell不是DLR的目标。我不知道为什么。

    在.NET应用程序中托管PowerShell可以启用脚本解决方案中的PowerShell对象管道,我认为这是一个关键好处。

    有一些例子 calling PowerShell from IronPython .

    你也可以 embed IronPython in PowerShell .

    Ironpython和IronRuby Don_t与PowerShell具有相同的Windows集成。如果能在开箱即用的情况下启用PowerShell,那就太好了。

        3
  •  1
  •   Community Mohan Dere    8 年前

    Doug's answer 触及几个关键点,但我认为在.NET应用程序中使用PowerShell作为脚本引擎的主要原因是PowerShell正在成为整个Microsoft应用程序的主要管理面,并将在维护您的应用程序的系统管理员中享有更大的熟悉度。

    Ironpython和IronRuby(以及针对DLR的任何其他语言)很可能对开发人员的读者更加熟悉。

        4
  •  0
  •   Eugene    15 年前

    我的看法是,微软应该已经开发了基于DLR的后台管理界面,这样就可以利用诸如.NET中的python和ruby(或基于DLR的任何其他语言)等顶级且已经被验证的语言,而不是我认为他们在用PowerShell重新设计方向盘时所做的。除了用于管理基础设施应用程序(如Exchange)之外,当已经有优秀的语言存在时,我没有学习PowerShell的动机。我的0.02美分。

    推荐文章