2009-07-26 2 views
12

.NET 4.0ベータ版が利用可能になり、.NET Dynamic Language Runtimeの可用性が向上すると、これらの種類のトピックは「熱くなる」と思われます。PowerShell RunspaceとDLR

DLRとPowerShellの概念の違いが混乱しています。私の.NETアプリケーションでスクリプト機能を提供したい場合は、DLRを使用することができます(IronPythonやIronRubyなどでスクリプトを有効にしたり、他のIron *言語をDLRで使用できるようにする)ランスペース。

各方法の賛否両論は何ですか?なぜ私はもう一方を選ぶでしょうか?動的言語そのものと、それで一流の.NET言語として、なぜPowerShellはDLRもターゲットにしていないのですか?

答えて

12

.NET 4.0では、DLRは「DLR v1.0」と考えることができます。これには、コールサイトのキャッシュメカニズム、言語間相互運用機能、および既存のLINQ式ツリーの改善が含まれます。これらはすべて、言語の実装には非常に便利ですが、言語をホストしていない機能です。

DLR 1.0の欠けている部分は、すべての言語の共有ホスティングストーリーです。しかし、私たちは、CodePlex w/DLRとIronPythonプロジェクトで出荷するホスティングAPIの形で、またgithub上でIronRubyでw/wの形で作業を開始しています。残念ながら、これらのAPIを.NET 4.0タイムフレームで出荷することはできないと考えていました。特にPowershellやVBやC#などの他の言語からのフィードバックを得て、適切なAPIを持っていることを確認したいと考えています。

したがって、すべての言語でIronPythonとIronRubyを除く現在のホスティングストーリーがあります。しかし、私たちは将来、このすべてが統一されることを望んでいるので、ユーザーは使用する言語を選択することができます。しかし、今すぐターゲットにPowershellのボックスに何かがないだけです。

4

私は同意すると、DLRは良い議論をたくさん生み出し続けています。 PowerShellはDLRを対象としていません。私はなぜか分からない。

.NETアプリケーションでPowerShellをホストすることは、私が考えているスクリプトソリューションのPowerShellオブジェクトパイプラインを可能にします。

calling PowerShell from IronPythonの例があります。

embed IronPython in PowerShellでもかまいません。

IronPythonとIronRubyは、PowerShellと同じWindowsとの統合はありません。 PowerShellがすぐにDLRを有効にしていれば素晴らしいだろう。

+0

これらのことのいずれか(IronPythonからPowerShellを呼び出すか、PowerPhellでIronPythonを埋め込む)を行う必要があるのは、私が本当に従うべきではありません。 IronRubyがPowerShellを呼び出すデモを見ましたが、それはかなりクールでしたが、私はそれをあまり使用することができませんでした。 – alastairs

+0

PowerPhellからIronPythonを呼び出す理由の1つは、既にPythonで書かれた複雑なルーチンを使用することです。同じ方法で.NET 4.0を使ってやります。機能やシステム統合ポイントを活用したいときにPyからPoShを呼び出す.IPから簡単には取得できない。 –

1

Doug's answerヒットポイントいくつかの重要な点がありますが、PowerShellを.NETアプリケーションのスクリプトエンジンとして使用する主な理由は、PowerShellがMicrosoftアプリケーション全体の主要な管理面になりつつあり、アプリケーションを管理しているシステム管理者。

IronPythonとIronRuby(およびDLRを対象とする他の言語と同様)は、開発者の聴衆にもっとよく知られているようです。

+0

したがって、PowerShellはSysAdminタイプの機能を持つアプリケーションには適切なオプションですが、DLR言語はエンドユーザ向けのアプリでパワーユーザーを支援するのに適していますか? – alastairs

+0

私はPowerShellが、システム管理者や「パワーユーザー」によって管理されているエンタープライズアプリケーションに適していると思います。開発者がより多くのスクリプトを作成するアプリケーションは、いずれの方法でも実行できます。 –

+0

それは私にとって十分な理由のようには聞こえません。 VBとF#は非常に異なるオーディエンスを対象としますが、同じランタイムを使用します。うまくいけば、MSはこの例に従い、技術を人為的に分割しないであろう。 Dinoの答えは私たちに希望を与える:) –

0

これは、MicrosoftがDLRに基づいたBackoffice管理インターフェイスを開発し、PythonとRuby(またはDLR上に構築された他の言語)のような一流の、すでに証明されている言語が、私がPowershellで車輪を再発明したと思ったのとは対照的に、レバレッジを活用することができます。インフラストラクチャアプリケーションを管理するためのその使用以外に、たとえばExchange、優れた言語が既に存在するときにPowershellを学ぶインセンティブはありません。私の.02セント。

+2

Monadは2003年に発表され、2006年にv1.0に達しました。DLRは2007年に発表され、2010年にv1.0を打ちました。一般的な考え方とは異なり、IIS/Exchange/etcチームにはタイムマシンはありません。 –