Dies ist eine Frage, die oft gestellt wird und leicht dazu führen kann, dass Menschen über Linux vs. Windows diskutieren. Solche Debatten spiegeln wider, wie schwierig es ist, konkurrierende Webentwicklungstechnologien nebeneinander zu analysieren, eine Schwierigkeit, die durch die unterschiedlichen Meinungen der Entwickler zu vergleichbaren Betriebssystemen noch verstärkt wird.
Anstatt uns also weiterhin an solchen Debatten zu beteiligen, könnten wir uns lieber mit den Vorteilen jeder Technologie für bestimmte Webentwicklungs- und Betriebsumgebungen befassen. Obwohl ASP PHP ähnlicher ist als ASP.NET, möchten wir dennoch auf ASP.NET eingehen. Der Grund dafür ist, dass Entwickler es oft mit ASP verwechseln und ASP.NET dank der Bemühungen von Microsoft ASP in Zukunft tatsächlich vollständig ersetzen wird.
Grundlegende Theorie – Übersicht über Funktionen
PHP – Hypertext-Präprozessor
PHP ist eine serverseitige Open-Source-Skriptsprache, die in der Syntax der C-Sprache sehr ähnlich ist. Obwohl PHP ursprünglich für die Verwendung mit Linux-basierten Apache-Webserversystemen konzipiert wurde, wurde es mittlerweile auf jedes Betriebssystem portiert und ist mit jeder Standard-Webserversoftware kompatibel. Daraus lassen sich auch die drei Hauptvorteile von PHP ableiten. Erstens handelt es sich um eine plattformübergreifende Technologie, sodass PHP-Anwendungen problemlos portiert werden können – dies hängt natürlich von zusätzlichen Komponenten ab, die integriert werden müssen, wie beispielsweise herstellerspezifische Datenbanken. Diese Portabilität bringt auch einen weiteren Vorteil mit sich: Die meisten Webhosting-Anbieter unterstützen PHP, sodass es sehr bequem ist, den Host bei Bedarf zu wechseln.
Zweiter Punkt: Da PHP viele Ähnlichkeiten mit der Programmiersprache C aufweist, ist PHP für Entwickler, die mit der entsprechenden Syntax vertraut sind, sehr einfach zu verwenden – diese Syntax wird auch in Java, JavaScript und Perl angewendet. Drittens wird PHP sich schnell weiterentwickeln, da es sich um ein Open-Source-Produkt handelt. Noch wichtiger ist, dass relevante Schwachstellen-Patches regelmäßig kostenlos in die Kernbibliothek implantiert werden.
Darüber hinaus hat sich PHP bei einigen spezifischen Programmieranforderungen als attraktiver für Entwickler erwiesen. Erstens verfügt PHP über integrierte Bibliotheken, die die direkte Erstellung und damit verbundene Vorgänge von Bildern und PDF-Dokumenten unterstützen. Das heißt, wenn eine Anwendung dynamisch erstellte Menübilder benötigt, die geglätteten Text enthalten, oder wenn eine Seite in das Acrobat-Format exportiert werden muss, ist PHP die ideale Technologie zur Lösung solcher Probleme. Obwohl diese Funktionen theoretisch durch andere Technologien erhalten werden können, die mit PHP konkurrieren, erfordern andere Technologien häufig die Installation benutzerdefinierter Komponenten von Drittanbietern, um sie zu erreichen.
Eine weitere Sache, die PHP zur besten Wahl für das Schreiben von Serverskripten macht, ist seine gute Leistung bei der Bewältigung von Problemen wie der Verbindung zu mySOL- oder Postgres-Datenbanken. Obwohl der Zugriff auf mySOL- oder Postgres-Datenbanken über ASP-Technologie und ODBC-Verbindungen erfolgen kann, erfordert dies häufig eine zusätzliche Konfiguration durch den Systemadministrator. Glücklicherweise wurde diese Einschränkung in ASP.NET behoben und Daten können über mySQL bereitgestellt werden, wenn eine direkte Datenbankverbindung hergestellt werden muss, ähnlich wie bei der Verwendung von MS SQL Server.
ASP – Dynamic Service Pages (Active Server Pages)
Microsoft hat ASP in Windows NT Server 4 eingeführt und es als Standardplattform für dynamische Webanwendungen unter dem IIS-Webserver verwendet. Da es VBScript (eine Abzweigung der Visual Basic-Sprache) verwendet, erfreute sich ASP sofort großer Beliebtheit bei Entwicklern, die mit der Programmierung in Microsofts IDE Visual Studio vertraut waren. Aufgrund der kontinuierlichen Weiterentwicklung von Skriptsprachen haben Forscher nicht viele Funktionen in ASP eingeführt, um im Technologiewettbewerb mithalten zu können. Daher sind Funktionen wie Bildmanipulation, die in PHP zu sehen sind, nicht in ASP integriert. Entwickler können jedoch weiterhin COM-Objekte von Drittanbietern in Form von DLL-Dateien schreiben (oder installieren), um ähnliche Arbeiten auszuführen. Auf diese Weise kann Code geschrieben werden, um jede Aktion auszuführen, die der Server selbst zulässt. Der Nachteil besteht natürlich darin, dass Entwickler dadurch gezwungen werden, mit dem Desktop-System zu interagieren, um diese Dienste zu konfigurieren – eine Funktion, die für Webentwickler nicht erforderlich ist.
Der Vorteil von ASP besteht darin, dass Microsoft-Server fast überall in Unternehmensumgebungen vorhanden sind. Darüber hinaus hat MS SQL Server auch einen breiten Markt und unterstützt ASP gut (nicht überraschend). Obwohl ODBC mit jeder Datenquelle kompatibel ist, können SQL Server- und Datei-DSN-Zugriffe auf Codeebene implementiert werden.
ASP.NET
Die Debatte darüber, ob man sich für ASP oder PHP entscheiden soll, wird mit dem Aufkommen von .NET zunehmend überflüssig. Tatsächlich wird die jahrelange Debatte mit der Antwort auf die Frage, ob man sich für Java oder die .NET-Technologie (oder beides) entscheiden soll, endlich ein Ende finden. Die einzige Verbindung zwischen ASP und ASP.NET besteht darin, dass beide VBScript verwenden. Und allein .NET kann VBScript und etwa 20 andere Sprachen verwenden.
Für ASP und PHP wird ASP.NET als eine andere Sprache angesehen, weil es auf einer völlig anderen Architektur läuft. Ersteres ist eine Übersetzungsskriptsprache, während .NET ein kompiliertes Framework ist. Dies bedeutet, dass zunächst einmal die Laufgeschwindigkeit von Webseiten erheblich verbessert wird. Gleichzeitig ist der Quellcode sicherer und robuster. Darüber hinaus bringt ASP.NET ein neues Konzept in die Webprogrammierung – die Idee der „Code-Behind-Seite“. Gemäß der Code-Behind-Idee wird jede HTML-Seite durch eigene kompilierte Programmanweisungen gesteuert. Dadurch ist HTML – oder die Präsentationsschicht – weitgehend von der Geschäftslogik der Anwendung getrennt. Obwohl eine solche Trennung auch durch PHP und ASP erreicht werden kann, ist sie kein wesentlicher Bestandteil einer eigenen Technologie wie ASP.NET.
Ein weiterer Vorteil von ASP.NET besteht darin, dass es verschiedene Unterstützungen für XML- und Webdienste vollständig integriert. Für .NET steht eine sehr umfangreiche Sicherheits- und Kryptosystembibliothek zur Verfügung, die besonders für Finanzinstitute und Unternehmensdatenanwendungen nützlich ist. Was die Fallstricke betrifft, so können selbst erfahrene Entwickler feststellen, dass die Verwendung von .NET verwirrend sein kann. Unabhängig davon, wie gut der Entwickler mit der verwendeten Programmiersprache vertraut ist, kann der erhebliche Anstieg der Schwierigkeit bei Programmierparadigmen für Webentwickler zu einem großen Hindernis für ihre Integration in ASP.NET werden. Hosting ist auch ein Problem für ASP.NET-Anwendungen. ASP.NET wird von Hosting-Anbietern nicht so umfassend unterstützt wie ASP oder PHP und kann nicht auf dem gleichen Niveau konkurrieren.
Übung – Sprachvergleich
Variablendeklaration
In VBScript (sowohl ASP als auch ASP.NET verwenden VBScript) ist es jedoch nicht erforderlich, Variablen vor der Verwendung dieser Anweisung zu deklarieren Die technische Dokumentation empfiehlt dies im Allgemeinen. Mithilfe von Option Explicit-Deklarationen können Entwickler Variablendeklarationen programmgesteuert erzwingen. In PHP können Variablen deklariert werden, allerdings gibt es keine Möglichkeit, Entwickler dazu zu zwingen. Tatsächlich werden Variablen vor der Verwendung automatisch deklariert. Der Vorteil von PHP-Variablen besteht darin, dass Variablen als Referenzen auf andere Variablen gesetzt werden können, während Variablen in VBScript nur durch Werte definiert werden können.
<% ' VBScript Example Option Explicit myVar = 1 myOtherVar = myVar myVar = 2 ' myResult will be 3 myResult = myVar + myOtherVar %>
<? // PHP Example $myVar = 1; 'Use the ampersand to make a reference $myOtherVar = &$myVar; $myVar = 2; // $myResult will be 4 $myResult = $myVar + $myOtherVar; ?>
Variablensammlung
Die Methoden zur Verwendung von Formular- und Abfragezeichenfolgenvariablen in PHP und ASP sind sehr ähnlich. Es gibt viele Möglichkeiten, auf eine Sammlung von Formular- und Abfragezeichenfolgenvariablen zuzugreifen, beispielsweise über den Namen oder als Array. In ASP.NET ist die Situation ganz anders, insbesondere bei Formularfeldern. Im Gegensatz zur blinden Suche nach übermittelten Formularvariablen kann Code-Behind jedes Formularfeld auf der HTML-Seite kennen und die Überprüfung der Werte dieser Formularfelder basierend auf der Ausführung eines beliebigen bekannten Ereignisses auslösen. Eines dieser Ereignisse ist „Postback“, das ausgelöst wird, wenn das Formular vom Benutzer übermittelt wird. Andere Ereignisse können clientseitige Programme sein und über JavaScript ausgelöst werden. In ASP.NET gibt es keinen qualitativen Unterschied zwischen den beiden.
<% ' ASP Example myFormVal = request.form("myInputField") myQSval = request.querystring("myQSitem") myVal = request.item("myFormOrQSitem") %>
<? // PHP 4.1+ Example $myFormVal = $_POST['myInputField']; $myQSval = $_REQUEST['myQSitem']; // PHP 3+ Example $myFormVal = $HTTP_POST_VARS['myInputField']; // If register_globals = on $myVal = $myFormOrQSitem; ?>
<!-- ASP.NET example --> <html> <script language="VB" runat=server> Sub SubmitBtn_Click(Sender As Object, E As EventArgs) Message.Text = "Hello " & Name.Text End Sub </script> <body> <form action="action.aspx" method="post" runat="server"> Name: <asp:textbox id="Name" runat="server"/> <asp:button text="OK" OnClick="SubmitBtn_Click" runat="server"/> <asp:label id="Message" runat="server"/> </form> </body> </html>
String-Verkettung
PHP scheint diesem Problem genügend Aufmerksamkeit zu schenken, es ermöglicht das Einfügen von Variablen in Strings, ohne dass dies erforderlich ist um die üblichen Verkettungsprobleme zu kümmern. ASP.NET macht den gesamten Prozess schwieriger und erfordert die Hilfe seiner StringBuilder-Klasse, aber ASP.NET wird viel schneller ausgeführt.
<? // PHP Example $link = mysql_connect("host", "user", "password")or die("mysql_error()); mysql_select_db("database") or die("Could not select database"); $query = "SELECT * FROM Table"; $result = mysql_query($query) or die(mysql_error()); while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { foreach ($line as $col_value) { //do something } } ?>
Verbindung zur Datenbank herstellen
Bezüglich des Problems der Datenbankverbindung hat jede Technologie ihre eigene herausragende Standardisierung gezeigt. Zunächst wird jeweils eine Verbindung zur Datenbank hergestellt. Bei PHP wird die Datenbank nach der Erstellung ausgewählt (bei ASP und ASP.NET erfolgt dies während der Verbindungsphase). Anschließend wird eine Abfrage erstellt und an die Datenbank übergeben, die zu einem Rückgabedatensatz führen kann oder auch nicht.
Da ASP.NET wesentlich objektorientierter ist und komplexe Fehlerbehandlung unterstützt, kann ASP.NET einfache Aufgaben besser erledigen, als PHP oder ASP NET möglicherweise mehr Code schreiben muss. Aber was die Vorteile angeht, benötigt ASP.NET viel weniger Code, um die Funktion der Datenanzeige abzuschließen als PHP und ASP – insbesondere, wenn Sie das integrierte Datagrid-Steuerelement verwenden, um automatisch eine HTML-Ausgabe zu erstellen.
<% 'ASP Example Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Driver={SQL Server};Server=MyServerName;" & _ "Database=myDatabaseName;Uid=;Pwd=" const strSQL = "SELECT * FROM Table" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.OpenstrSQL, objConn Do While Not objRS.EOF 'do something objRS.MoveNext Loop %>
' ASP.NET-Beispiel
<%@ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.SqlClient" %>
<html> <script language="VB" runat="server"> Sub Page_Load(Sender As Object, E As EventArgs) Dim MyConn As SqlConnection = New SqlConnection("server=(local). . . ") Dim MyComm As SqlCommand = New SqlCommand("select * from Table", MyConn) MyConn.Open() Dim dr As SqlDataReader = MyComm.ExecuteReader() MyDataGrid.DataSource = dr MyDataGrid.DataBind() MyConn.Close() End Sub </script> <body> <ASP:DataGrid id="MyDataGrid" runat="server" Width="600" BackColor="#FFFFFF" BorderColor="#000000" ShowFooter="false" CellPadding=2 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#EEEEEE" EnableViewState="false" /> </body> </html>
Fazit
Die Wahl von ASP, PHP oder ASP.NET hängt letztendlich von den Anforderungen der Anwendung ab. und die Systemumgebung des laufenden Programms. Auch die Vertrautheit eines Entwicklers mit ähnlichen Programmiersprachen oder Paradigmen kann ein Faktor bei der Auswahl sein. Denken Sie daran, dass es keine perfekten Methoden gibt und die individuellen Umstände bestimmen, welche Technik die beste Wahl ist. Beispielsweise mag die Verwendung von ASP.NET zum Erstellen einer Single-Page-Formular-Mail-Anwendung für einen Windows-Server übertrieben erscheinen, aber es ist eine hervorragende Umgebung für ASP. Wenn eine Website eine Verbindung zur MySQL-Datenbank auf dem Linux-Apache-Server herstellen muss, reicht die Verwendung von ASP oder ASP.NET nicht aus. Die Wahl zwischen diesen konkurrierenden Technologien ist für Entwickler die halbe Miete, wenn sie sich im Vorfeld detailliert mit den individuellen Anforderungen des Anwenders auseinandersetzen.
Das Obige ist der Inhalt der Auswahl von PHP, ASP oder ASP.NET zur Entwicklung einer dynamischen Website. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!