ホームページ  >  記事  >  php教程  >  php の利点 - PHP と ASP.NET の比較

php の利点 - PHP と ASP.NET の比較

WBOY
WBOYオリジナル
2016-06-14 00:02:33813ブラウズ

PHP の利点 - PHP と ASP.NET
最近の Web 開発に関しては、多くの選択肢があります。これらのメソッドの多くには前処理が含まれます。つまり、コードが含まれていることとそれを処理する必要があることをプリプロセッサに伝える特定のタグを使用して、コードを HTML ページに埋め込みます。 CGI と同様に、これらのコードはサーバー上で実行され、ブラウザに送り返される結果の HTML ページの一部として表示されるコンテンツを返します。オープン ソースのスクリプト言語 PHP と Microsoft の ASP.NET フレームワークの言語は、このカテゴリに分類されます。JavaServer Pages (JSP) と Perl/Mason もこの方法で動作します。
この記事では、Oracle が製品に組み込むことを選択したテクノロジーである PHP と ASP.NET に焦点を当てます。両方のさまざまな長所と短所を概説し、開発プロジェクトにどのテクノロジを選択するかを決定するのに役立つ要素に焦点を当てます。考慮すべき要素は数多くあり、プロジェクトごとに異なる手法が使用される場合があります。要約すると、価格、速度と効率、セキュリティ、クロスプラットフォーム サポートなどを並べて比較し、オープンソース ソリューションの利点を確認できます。
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
?>
Any use 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 ("ファイルを開けません:$ 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 でも変数やメソッドをパブリックにすることはできますが、クラス自体内でのみ使用できるようにプライベートにすることもできます。また、保護することもできます。つまり、メソッドと変数をクラス内またはサブクラス内で表示できます。

さらに、PHP 5 では、型ヒントまたはより優れた型チェックが導入されています。オブジェクトをルーチンに渡すと、PHP はそれが正しい型であることをチェックし、チェックが失敗した場合は型不一致エラーを生成します。
静的メソッドや変数、抽象クラスなどの追加機能があるため、詳細については必ずドキュメントを確認してください。

セキュリティの比較
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;
protected $db;
関数 __construct($u, $p, $d) {

$this->user = $u;

$this->pass = $p; d;
}

function db_open () {
$theDB = @OCILogon($this->user, $this->pass, $this->db);

db_check_errors($php_errormsg); 🎜>

関数 db_​​close() {
@OCILogoff($theDB)
db_check_errors($php_errormsg);
function __destruct () {

print (「長いですね...」)

}
;
}

ASP.NET と Oracle の接続

VB.NET (Visual Basic は Microsoft のデフォルトの .NET プログラミング言語) を使用して Oracle に接続する場合は、MSDN のこの例を参照してください:
System をインポート
System.Data をインポート

System.Data.OracleClient をインポート

Microsoft.VisualBasic

をインポート

クラスサンプル

Public Shared Sub Main()

Dim oraConn As OracleConnection = New OracleConnection
("Data Source=MyOracleServer;Integrated Security=yes;")

Dim oraCMD As OracleCommand = New OracleCommand

("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn)

oraConn.Open()


myReader を OracleDataReader = oraCMD.ExecuteReader() としてディムします

Do While (myReader.Read())
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}",

myReader.GetInt32(0), myReader.GetString(1) ))

ループ

myReader.Close()

oraConn.Close()

End Sub
End Class

選択してください

まだ PHP を使用することに決めていないと仮定すると、PHP の長所は短所をはるかに上回っていると言えます。 (表 1 の概要を参照してください。) これらの利点は、価格、速度と効率、セキュリティ、クロスプラットフォームの適用性、オープンソースの機会に要約されます。唯一の弱点は、純粋で完璧な OOP 実装がないことですが、これは小さな欠点です。言語構造は確かに役立ちますが、優れたコーディングは最終的には練習、実行、良い習慣、規律から生まれます。
PHP と ASP.NET の比較

表 1

PHP 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 の利点
現在の所在地: Du Yao Lao --> 技術文書の完全なコレクション ほとんどの WEB 開発者の目には、ASP と JSP が最有力とみなされ、PHP は最有力とみなされます。 a 弱い「苦労人」、つまりアマチュアの使用に追いやられている言語では、企業の 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 よりも強力な機能を提供できるからではなく、すでに ASP と JSP を理解しており、使い慣れた方法を使用したいと考えているから使用していると思います。コードを書くために。 PHP を除外することは、この言語に対する無知を示すだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。