php の利点 - PHP と ASP.NET の比較
最近の Web 開発に関しては、多くのオプションがあります。これらのメソッドの多くには前処理が含まれます。つまり、コードが含まれていることとそれを処理する必要があることをプリプロセッサに伝える特定のタグを使用して、コードを HTML ページに埋め込みます。 CGI と同様に、これらのコードはサーバー上で実行され、ブラウザに送り返される結果の HTML ページの一部として表示されるコンテンツを返します。オープン ソースのスクリプト言語 PHP と Microsoft の ASP.NET フレームワークの言語は、このカテゴリに分類されます。JavaServer Pages (JSP) と Perl/Mason もこの方法で動作します。
この記事では、Oracle が製品と ASP.NET に組み込むことを選択した PHP テクノロジに焦点を当てます。両方のさまざまな長所と短所を概説し、開発プロジェクトにどのテクノロジを選択するかを決定するのに役立つ要素に焦点を当てます。考慮すべき要素は数多くあり、プロジェクトごとに異なる手法が使用される場合があります。要約すると、価格、速度と効率、セキュリティ、クロスプラットフォーム サポートなどを並べて比較し、オープンソース ソリューションの利点を確認できます。
ASP.NETとは何ですか?
ASP 最新バージョンの ASP.NET は、ソフトウェアが完全に書き直されたため、以前のバージョンの ASP と完全な下位互換性はありません。初期の ASP テクノロジは、実際には、Web アプリケーションを構築するための完全なフレームワークである ASP.NET よりも PHP との共通点がはるかに多かったです。このモデルの主な特徴の 1 つは、プログラミング言語を柔軟に選択できることです。 ASP.NET では、VBScript、JScript、Perlscript、Python などのスクリプト言語だけでなく、VB、C#、C、Cobol、Smalltalk、Lisp などのコンパイル言語も使用できます。新しいフレームワークは共通言語ランタイム (CLR) を使用します。言語のソース コードは Microsoft 中間言語コードにコンパイルされ、CLR によって実行されます。
このフレームワークは、真のオブジェクト指向プログラミング (OOP) も提供し、真の継承、ポリモーフィズム、カプセル化をサポートします。 .NET クラス ライブラリは、特定のタスク (XML や画像処理など) に基づいて継承可能なクラスに編成されます。
プログラミング言語とメソッドに加えて、データベースアクセスも注目すべき要素です。 ASP.NET でプログラムする場合、ODBC を使用してデータベースを統合できます。ODBC は、ターゲット データベースにアクセスするための一貫した関数呼び出しのセットを提供します。
長所と短所
ASP.NET の長所は、明らかにその設計と実装がシンプルであることです。これはオブジェクト指向プログラマーの夢です。言語は柔軟で、複雑なオブジェクト指向機能をサポートします。この意味で、プログラマーの既存のスキルと真に相互運用可能です。
ASP.NET のもう 1 つの利点は、開発環境です。たとえば、開発者は、WebMatrix (コミュニティでサポートされているツール)、Visual Studio .NET、または Delphi や C++ Builder などのさまざまな Borland ツールを使用できます。たとえば、Visual Studio では、ブレークポイントの設定、コード スニペットのトレース、コール スタックの表示が可能です。全体として、これは複雑なデバッグ環境です。他にも多くのサードパーティ製 ASP.NET IDE ソリューションが登場するはずです。
ただし、効率を犠牲にして堅牢性を獲得します。 ASP.NET は、主にコード パスが長いため、メモリ使用量と実行時間の点で非常に高価です。 Web ベースのアプリケーションの場合、Web ではアプリケーションが 1 秒あたり数千のユーザーに拡張される可能性があるため、これらの制限は深刻な問題になる可能性があります。メモリ使用量は、Web サーバーでも問題になる可能性があります。
PHPとは何ですか?
PHP は、前処理された HTML ページ モデルに基づくスクリプト言語です。 Web サーバーの PHP プリプロセッサが次のような PHP 言語タグを見つけると、PHP エンジンを呼び出してコードを実行します。
some code here
?>
命令型プログラミング言語を使用したことのある人PHP に精通しており、Perl、C、Java との構文の類似性に気づくでしょう。厳密に言えば、Java は命令型プログラミング言語ですが、オブジェクト指向の構造と概念も利用しています。 PHP は必要に応じてこの構造を借用していますが、純粋な OOP 言語ではありません。
ASP.NET に関する上記の説明では、ODBC ドライバーと、データベースの抽象化を念頭に置いてアプリケーションを構築する方法について説明しました。 PHP では、ODBC を使用してデータベースと通信することもできるため、サポートされているさまざまなデータベースから選択することができます。 MySQL、Oracle、Postgres 用のネイティブ ドライバーもあります。さらに、Oracle を使用する場合は、Oracle へのアクセスを強化する特別な OCI8 ライブラリがあり、LOB、BLOB、CLOB、BFILE などの機能を使用できるようになります。
この時点で、「なぜデータベース関連のライブラリが PHP の機能と呼ばれるのですか?」と疑問に思われるかもしれません。複数のデータベースを使用して構築しようとする場合、またはデータベース間で移植性を持たせる必要がある場合 (例: 開発からデータベースまで)、データベースの抽象化または独立性が問題になります。プロダクション) アプリケーションを移植する際に考慮すべき要素。そして、これらは確かに関心を持ち、考慮すべき事柄です。
しかし、Tom Kyte が新著「Effective Oracle by Design (Oracle Press)」で指摘しているように、データベースへの依存はテクノロジーへの投資を最大限に活用できるため、本当の目標になります。 ODBC または Perl の DBI ライブラリを通じて Oracle に一般的にアクセスできる場合は、他のデータベースにない機能を使用することはできません。さらに、最適化されたクエリはデータベースによって異なります。
Zend Technologies は、PHP に多大な貢献をしたビジネス ソフトウェア会社です。洗練されたデバッガー、モニター、その他の機能を備えた Zend Studio と呼ばれる商用開発環境を作成しました。同社はまた、Zend Encoder と連携して PHP コードをコンパイルしてパフォーマンスを向上させる、無料の Zend Optimizer も構築しました。 Zend Performance Suite など、プリコンパイルされた PHP ページをキャッシュして、全体のパフォーマンスをさらに大幅に向上できる商用製品もあります。
長所と短所
ベータ 4 の時点でも、PHP 5 には、例外およびイベントベースのエラー処理ルーチンの欠如など、いくつかの欠点がまだあります。通常のプログラム フローを中断して、コードを特別なエラー処理部分にジャンプさせることができます。 。 Java はエラー処理の例外も提供しますが、C++ は try、catch、throw 構文による例外処理を提供します。もちろん、引き続き PHP でエラーを管理することはできますが、その構造は標準化されていないため、プログラマーが独自のツールを使用してエラー処理を実行する方法を決定することになります。これにより、一貫性が低下し、最初からやり直す必要が生じることがよくあります。
もう 1 つの弱点は、PHP 関数名では大文字と小文字が区別されないことです。これは深刻な欠点ではありませんが、一部のプログラマはこの機能を煩わしく感じるかもしれません。
ただし、PHP のオブジェクト モデルについては懸念があります。 PHP は、オブジェクト指向言語として特別に設計されたものではありません。これらの機能の一部は後で追加されましたが、PHP 3 との下位互換性を維持するように注意が払われたため、両方のモデルの機能の一部が残ります。実際、これらの弱点の多くは PHP 5 で解決されています。注目してください。
PHP にはいくつかの領域では欠けていますが、PHP が優れている領域ではすぐにそれを補います。価格もリーズナブルなので、ライセンスの問題を心配する必要はありません。また、オープンソースであるため、コミュニティ全体が開発プロセスを綿密にフォローし、バグが発見されて修正されます。気に入らない機能がある場合は、コードを変更できます。さらに、PHP は Apache と自然に統合され、モジュールとしてコンパイルすることも、Apache バイナリに直接コンパイルすることもできます。
しかし、Apache で実行するということは、Apache は Windows、Linux、Solaris、およびその他のさまざまな Unix プラットフォームで実行されるため、PHP を使用すると、既存のサーバーへの投資を活用できることを意味します。また、Webサーバーには実績のあるApacheを使用するため、セキュリティを最優先に保つことができます。最後に、PHP のコード パスは小さくなります。これは、PHP ページを解析して実行するサーバー側のコードが少なくなることを意味し、その結果、メモリと使用量がより効率的になり、実行が高速化されます。
PHP 5 にはどのような新機能が追加されましたか?
PHP 5 の 4 番目のベータ版は 2003 年 12 月末にリリースされ、変更ログには多くのバグが発見され、削除されたことが明確に示されています。まだテスト中ですが、その新機能と進歩はすべて注目に値します。
PHP 5 の主な新しい成果は、例外処理と、PHP に真の OOP を提供する機能を導入する新しいオブジェクトです。例外処理は間違いなく PHP 4 の最も重大な欠点の 1 つであり、PHP 5 での例外処理の導入は間違いなく成熟の兆しです。例外処理とは、ソフトウェア内に言語定義および標準化されたエラー処理メソッドがあることを意味します。 try、catch、throw メソッドを使用するだけで、PHP コードがより堅牢かつ簡潔になります。
{if (file_exists ($inFile))
{# ここにファイルを開くコード} else {throw new Exception ("Cannot open file:$inFile"); } }}
$blueObj = new blue ();try {$blueObj->openFile ('/home/shull/file.txt');}
catch (Exception $myException) {echo $myException->getMessage ( );
# 残りの例外処理コードはここにあります}# 残りの青いメソッドはここにありますか?>
新しいオブジェクト モデルは、PHP で書かれたプログラムに多くのプラスの効果をもたらします。 PHP 4 では、オブジェクトを関数またはメソッドに渡すとき、PHP に明示的に指示しない限り、オブジェクトは値 ? で渡されます。このプロセスは、オブジェクト (メモリ内のすべてのデータ構造) のコピーを作成する必要があることを意味します。このステップではメモリが使用されるため、アクセスが遅くなり、混雑します。 PHP 5 では、オブジェクトは通常、参照によって渡されます。
PHP 5 の新しいオブジェクト指向機能 (コンストラクターとデストラクターを含む) は注目に値します。 C++ や Java と同様に、オブジェクトの作成、メモリの割り当て、コンストラクター メソッドによる必要なセットアップの実行、およびデストラクター メソッドによるクリーンアップの実行を行うための標準的な方法を提供します。
PHP 5 では、クラス内のメソッドと変数に対するより詳細な制御も導入されています。 PHP 4 では、すべてがパブリックです。クラスの外部または継承されたクラスからクラス内の変数にアクセスできます。 PHP 5 でも変数やメソッドをパブリックにすることはできますが、クラス自体内でのみ使用できるようにプライベートにすることもできます。また、保護することもできます。つまり、メソッドと変数をクラス内またはサブクラス内で表示できます。
他にも静的メソッドや変数、抽象クラスなどの機能があるため、詳細については必ずドキュメントを確認してください。
セキュリティの比較
ASP.NET では正式に IIS を使用する必要があります。残念ながら、IIS には長い脆弱性があり、多くの管理者は Web サイトを処理するために IIS を導入することに消極的です。これらの弱点が Microsoft の欠陥によるものであるか、IIS がハッカーの標的であるためであるかは問題ではありません。これらのシステムにはハッキングまたは侵害された歴史があります。 PHP は Apache 上でも実行されます。Apache は高速でオープンソースであり、優れたセキュリティ記録を持っています。さらに、前述したように、Apache は多くのプラットフォームで実行されます。
ASP.NET を検討していて、インターネット ポータルとして Apache を使用したい場合、幸いなことに、いくつかの選択肢があります。まず、Apache を使用して、別のマシンで内部的に実行されている IIS にリクエストを転送できます。次に、Apache は静的コンテンツを処理し、aspx コンテンツを IIS サーバーに配信します (インターネットには公開されません)。
ただし、Apache を利用して ASP.NET をホストしたい場合は、Microsoft がサポートする場合とサポートしない場合がある利用可能なオプションがいくつかあります。最後のオプションとして、オープンソース モジュールの構築に特化した Ximian の Project Mono があります。詳細については、www.go-mono.com をご覧ください。
データベースコーディング例
PHP または ASP.NET を選択するときに最初に考慮すべきことの 1 つは、データベースへの接続です。ただし、ASP.NET の活用は、多数の代替言語から選択できるため、より複雑になります。もちろん、これらのコード例は HTML ページ、インスタンス化されたクラスなどに埋め込む必要があります。ただし、次の情報は、両方のコーディング スタイルのアイデアを示します。
PHP 5 と Oracle 接続
以下は、PHP 5 (他のドライバー (ODBC ドライバーなど) も使用できます) と一般的なデータベース インターフェイスの使用方法を示す、Oracle 接続および切断ルーチンを提供する PHP 5 クラスです。 Oracle に接続するには:
class oracle_object {
protected $theDB;
protected $pass;
function __construct($u, $p, $d) {
$this-> ;ユーザー = $u;
}
関数 db_open () {
$theDB = @OCILogon($this ->user 、 $this->pass, $this->db);
db_check_errors($php_errormsg)
function db_close() {
@OCILogoff($theDB)
}
function __destruct () {
print ("so long...");
}
Oracle と接続された ASP.NET
VB.NET を利用したい場合 (Visual Basic は Microsoft のデフォルトの .NET プログラミング言語です) ) を Oracle で使用する場合は、MSDN の次の例を見てください:
Imports System.Data
Imports System.Data.OracleClientImports Microsoft.VisualBasic
Class Sample
Public Shared Sub Main( )
("Data Source=MyOracleServer;Integrated Security=yes;")
Dim oraCMD As OracleCommand = New OracleCommand
("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn)
oraConn.Open( )
myReader As OracleDataReader = oraCMD.ExecuteReader()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}",
myReader.GetInt32( 0), myReader.GetString(1))Loop
myReader.Close()
oraConn.Close()
End Sub
End Class
選択してください
PHPとASP.NETの比較
表1PHP 4 PHP5 ASP.NET
ソフトウェア価格 無料 無料 無料
プラットフォーム 価格 無料 無料 $$
速度 強い 強い 弱い
セキュリティ 強い 強い 強い
プラットフォーム 強い 強い 弱い (IIS のみ)
プラットフォーム 任意 任意 Win32 (IIS のみ)
提供されるソース コード はい はい いいえ
例外 いいえ はい
OOP 弱い 強い 強い
価格
ここでは、単に初期投資を考慮する必要はありません。PHP では明らかに無料です。実装、メンテナンス、デバッグのコストも考慮する必要があります。 PHP の場合は、Zend 最適化エンジンを購入することをお勧めします。ただし、ASP の場合は最初から投資することになり、グラフィック処理を実行するライブラリなどの追加テクノロジーにも料金を支払うことになります。しかし、長期的には、PHP はアップグレードを強制したり、ライセンスの追加料金を請求したりすることはありません。複雑なライセンスを扱ったことのある人なら誰でも、多くの企業がコンプライアンスを確保するためだけに膨大な時間と費用を費やしていることを知っています。また、バグ修正の場合、得られる反応はさまざまです。もちろん、これは時間に換算され、全体的な開発コストに換算されます。
速度と効率
先ほども述べたように、ASP.NET はさまざまなプログラミング言語を使用できるようにするフレームワークです。さらに、優れたオブジェクト指向モデルを備えていると言われています。これらはすべて真実ですが、速度を考慮すると不利になります。これらの理由により、ASP.NET で ASP ページを実行するには、PHP エンジンで同等の PHP ページを実行するよりも多くのコードを実行する必要があります。 PHP は「迅速かつ汚い」ソリューション、つまり仕事を完了するために設計されたソリューションです。バージョン 2.0 および 3.0 以来、多くの強力な機能強化が行われていますが、コアの最適化された高速アプローチは依然として維持されています。
考慮すべき要素は速度だけではありません。メモリ使用量も重要です。
セキュリティ
ASP.NET は IIS 上で実行されており、隔週の IT ニュース報道で確認されているように、IIS は数え切れないほど攻撃を受けています。実際、これは非常に負担が大きくなっているため、高額な売り込みにもかかわらず、多くの IT プロフェッショナルが依然として IIS Web サーバーでネットワークを開くことを拒否しています。そして、PHP は Apache を使用します。 Apache には、速度、信頼性、強固なセキュリティに関して実証済みの実績があります。詳細については、www.securityfocus.com をご覧ください。
クロスプラットフォームの適用性
ASP.NET は IIS 上で実行され、Apache 上でも実行され始めています (Apache は多くのプラットフォームで実行できます)。 PHP は Apache と連携できるように最初から設計されているため、実績のある信頼性の高いサーバー プラットフォームを数多く選択できます。
オープンソースの機会
オープンソースは、気まぐれなプログラマーやライセンス料を節約したい企業だけのものではありません。ソフトウェア自体のバグに対処する場合、オープンソースはまさに天の恵みとなる可能性があります。
PHP または ASP.NET では、ソフトウェアを使用する大規模なユーザー ベースが存在するため、エラーが発生する可能性があります。 ASP.NET では、これらのバグは公式プロセスを通じて通知され、新しいパッチまたはバージョンで修正、テストされ、削除される必要があります。ただし、PHP パッチはすぐにパッチを適用してリリースできます。オープンソースの開発を目撃した人なら誰でも、新しいバージョンやパッチが商用ソフトウェアのように数週間や数か月ではなく、数日以内に公開されることが多いことを知っています。これが十分に迅速でない場合は、通常、必要に応じて自分で問題にパッチを適用できます。
WEB 開発分野における PHP の利点
現在の場所: Duyao Lao--> 技術文書の完全なコレクション ほとんどの WEB 開発者の目には、ASP と JSP が最有力とみなされ、PHP は「弱者」とみなされます。 」、あるいはアマチュアが使用するものに追いやられており、企業の WEB 開発競争に参加する価値のない言語です。私の意見では、PHP が候補とみなされない理由は、査読者が PHP や Web 開発に使用される他のオペレーティング システムについて理解していないためです。一部の意見に反して、WINDOWS は WEB 仮想ホスティング サービス市場で最大のシェアを占めなくなり、WEB 開発の分野でも WINDOWS は崩壊しつつあるのではないかと思います。
エンタープライズ開発に PHP がないのはなぜですか?
明らかに、PHP は ASP や JSP に比べて役に立たないほど遅れていると考えられていますが、これは真実ではありません。 PHP はそれ自体が強力な言語です。これは、事実上すべての LINUX ディストリビューションで利用可能であり、MAC OS X でも利用できます。 PHP コードを開発および使用するためのビルディング ブロック ツールとソフトウェアを無料で入手します。 PHP アプリケーションを開発するための商用統合開発環境 (IDES) また、KOMODO (LINUX および WINDOWS 上で実行される) や ZEND STUDIO (このアプリケーションは、実行環境のオペレーティング システム上で JAVA が動作する任意のコンピューター上で実行できます) などのツールもあります。 。サーバーで実行されているオペレーティング システムに関係なく、PHP で構築された Web サイトをほぼすべての Web ホストで実行できるという事実により、PHP はさらに魅力的になります。
PHP は何を提供できますか?
PHP の周囲にあるものを少し忘れて、PHP 自体が何を提供できるかを考えてください。これは、かなりの機能を提供し、ページを迅速に提供できる堅牢なサーバー側言語です。
使いやすい
C や PERL、または同様のスタイルと構文を持つ別の言語を使用しているユーザーは、すぐに PHP を使い始めることができます。 Web で使用するように設計されていますが、コマンド ライン言語としても使用できます。あなたが作成している WEB アプリケーションは、特定のコードを毎時間または毎日実行する必要がありますか? CRON または同様のスケジュール マネージャーを使用すると、通常のシェル スクリプトまたはバッチ ファイルを使用してコードを実行し、必要なときに PHP コードが実行されるようにスケジュールできます。イベントを実行するためにブラウザを自動的に呼び出して特定の Web ページを表示する必要はありません。また、特定の時間に特定のコードを実行する必要があることをシステムに伝えるために訪問者のクリックに依存する必要もありません。 PHP がこの分野でスケーラブルであるという事実は、非常に魅力的です。
PHP の利点
私は JSP や ASP のベテランではなく、これらの言語を軽視するつもりはありません。代わりに、PHP の利点に焦点を当てます。
ローカリゼーション
PHP を使用すると、Web サイト訪問者にローカライズされたサービスを提供できます。ユーザーが Web サイトをクリックすると、Web サイトはブラウザ設定に基づいて自動的に母国語でページを表示します。これは、言語翻訳のための複雑なファイルを使用せずに、GETTEXT と呼ばれるシステムを通じてローカライズされた C プログラムと同じ機能を使用することによって実現されます。要求された言語ファイルが存在する場合、ユーザーに表示されるテキストはそのユーザーの母国語です。言語ファイルが存在しない場合、テキストはデフォルトの英語または指定した他の言語になります。ローカライズされた UNIX アプリケーションの多くは GETTEXT を標準として使用しているため、サードパーティによる翻訳が簡単になります。
コマンドラインを簡単に使用する
PHP は、必要に応じてコマンドライン プログラムのセットアップと実行をサポートしています。標準の UNIX DIFF ツールを使用すると、エラーの最終変更と、エラーの所有者に電子メールで送信される現在のコメントとの差分を生成できます。 PHP コードは、システム上に書き込まれた 2 つのファイルに対して DIFF を実行し、その出力を入力として取得し、送信する電子メールを生成します。このメールは PHP 自体を介して送信されます。
その他の利点
上記は、私が自分のプログラムで使用している強力な機能のほんの 2 つですが、他にもたくさんあります。たとえば、次のことが可能です:
簡単な FLASH アニメーションを即座に作成します。
PDF ドキュメントを即座に作成します。
高度な数学関数とオブジェクト指向プログラミング技術を使用します。
ローカルおよび IMAP メールボックスの読み取りと書き込み。
PHP では標準のインターネット プロトコルを使用できます。 PHP ベースの FTP、WEB、またはニュース クライアントを作成したいですか?問題ない! PHP のみを使用して、標準の TCP/IP ソケットを使用するクライアントとサーバーを作成し、独自のプロトコルを作成できます。
暗号化のサポートとさまざまなデータベース サーバーのサポートを実装します。
先見の明のないコメント
トップの Web 開発言語を探して PHP を除外する人は非常に短絡的だと思います。私は長年、バグ追跡システムのような高度な機能であっても、ヘッダーやフッターの再利用といった日常的な機能であっても、PHP でコードを書いてきました。私は半静的ページとフル機能のマルチメディア プレゼンテーションを PHP で作成しました。 PHP を使用しているのは私だけではありません。 PHP が注目に値しないのであれば、それが単なる子供や愛好家のための言語であるならば、なぜ PHP が Web 開発で最も急速に成長している言語なのでしょうか? ASP や JSP ほど強力ではないのに、なぜトラフィックの多い WEB サイトで使用されるのでしょうか?例えばYAHOOはPHPで構築されているそうです。
開発者は使い慣れた製品を使うことに慣れています
ASP と JSP にはそれぞれの強みがあると思いますが、人々がそれらを使用するのは、PHP よりも強力な機能を提供できるからではなく、人々が既に理解しているからだと思います。慣れている方法でコードを書きたい。 PHP を除外することは、この言語に対する無知を示すだけです。