2009-03-28 4 views
5

PHPアプリケーションを.NETライブラリにあるロジックに接続するための最良のオプションは何ですか?PHPから.NETクラスを呼び出す最も良い方法は?

PHPは、v5.0からPHPスクリプトから.NETロジックを呼び出せるようになっているa DOTNET classをサポートしています。しかし、それは多くの問題があるようです - 私はそれを任意の.NETクラスで確実に動作させることができませんでした。ドキュメントはスリムであり、と書かれていますが、実際には正しくありません。このクラスのインターネット上の質問は、php.netのバグレポートと同様に多くあります。

私はPHPをCOM interop経由で.NETに接続することができましたが、これには.NETクラスがComVisibleである必要があります。そして、私が知る限り、COMの要件のため、これはWindows上でのみ動作します。

私はPhalanger projectについて聞いたことがありますが、多くの詳細は分かりません。それは任意のPHPスクリプトで動作しますか? Linuxで作業しますか?重度のパフォーマンスや実行時の影響がありますか?

これを行うことは理にかなっているのですか、それともあなたができることの1つですか?そうではありません。

EDIT:一般的なケースについて聞いたことがあります。さまざまな.NETクラスライブラリがあり、PHPを含むさまざまな環境からそれらを利用できるのはうれしいことです。例としては、暗号化、ロギング、データアクセス、クライアントからHPCクラスタなどがあります。具体的なシナリオは、.NETで利用可能なAES暗号化を使用したZIPライブラリです。

+0

あなたは、.NETのクラスを使用するシナリオの種類についての詳細情報を提供することはできますか?コンテキストに関するものと.netクラスで使用したいものの両方について – eglasius

答えて

0

私はCOMを介して行うのが最善の方法だと思います。

+2

COMはスレッドセーフではなく、Webアプリケーションはマルチスレッド環境で動作するものです...だから私はこれが最良の方法だとはっきりと疑っています。それは最も簡単な方法かもしれません(そして、あなたのシングルユーザー開発システムではうまく動作します)が、Einsteinは次のように述べています。 –

2

マイクロソフトは、Linuxには.NETを出荷またはサポートしていません。 Linuxで.NETコードを実行したくない場合は、Monoを参照する必要があります。私はPHP 5がMonoとMicroSoft.NETをサポートしているかどうか分かりません

+0

私はMonoについて知っています。しかし、私はPHP + Monoが動作するのか、意味があるのか​​分かりません。 – Cheeso

1

.netクラスを使用し、から.netメソッドを呼び出すことは、.NET用のPHPコンパイラであるため、非常に簡単です。この記事ではPHP for .NET: Introduction for .NET developersをチェックすることができます。記事は古く(2007年)、期限切れの例はほとんどありませんが、その原則が適用されます。

Linuxの場合、PhalangerはMono上で正常に動作しますが、ここでの最大の制限は、Windowsでのみサポートされているネイティブ拡張(PHPディストリビューションから)を使用できないことです(Phalangerの拡張マネージャはC++/Monoではサポートされていません)。しかし、Phalangerのマネージ拡張機能を利用することもできます。

実際のバージョン(2011年2月リリース)でのPhalangerのパフォーマンスは、FastCGI経由のPHP 5.3.5より約2倍高速です。

関連する問題