PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vergleich mit ASP.net


stefano franko
02.08.2007, 00:33:31
Hallo zusammen,

die Frage bitte nicht falsch verstehen...
Ich selber bin absoluter PHP fan und programmiere in PHP seit über 5 Jahren.

Meine Fa. will jetzt eine Grundsatzentscheidung treffen, wie in den nächsten Jahren weiter entwickelt werden soll. PHP oder ASP.net
Durch den "Hype" der mit .net verbreitet wird, muss ich viele gute Gründe sammeln, dass wir bei PHP bleiben dürfen.

Mein bestes Argument ist, dass ich da am meisten Erfahrung habe und fast alles schnell und sauber programmieren kann.
-

Welche Gründe habt ihr für PHP
bzw. dagegen (gibt es da welche?)?

Danke und viele Grüße
Stefan

Opendix
05.08.2007, 19:41:54
Für mich ist ein Argument gegen PHP das Visual Studio .NET :P
Aber ich kenn mich da nicht gross aus und hab nur mal kurz einen Blick drauf geworfen...

Ein Vorteil (momentan sicher noch) ist, dass du für PHP eine sehr grosse Auswahl an Anbietern hast bei denen man die Programme hosten kann... desweiteren eine sehr grosse Community die bei Problemen helfen kann..

Ansonsten öhmm.. kA :P

feuervogel
06.08.2007, 14:32:30
Hallo zusammen,

die Frage bitte nicht falsch verstehen...
Ich selber bin absoluter PHP fan und programmiere in PHP seit über 5 Jahren.

Meine Fa. will jetzt eine Grundsatzentscheidung treffen, wie in den nächsten Jahren weiter entwickelt werden soll. PHP oder ASP.net
Durch den "Hype" der mit .net verbreitet wird, muss ich viele gute Gründe sammeln, dass wir bei PHP bleiben dürfen.

Mein bestes Argument ist, dass ich da am meisten Erfahrung habe und fast alles schnell und sauber programmieren kann.
-

Welche Gründe habt ihr für PHP
bzw. dagegen (gibt es da welche?)?

Danke und viele Grüße
Stefan

es gibt einige (durchdachte) gründe gegen PHP an sich, ich empfehle bei einem ernsthaften umstieg allerdings weder php noch asp.net sondern python (in verbindung mit einem framework wie django oder turbogears), vor allem dann, wenn man den eigenen server beinflussen kann. genauso gut dürfte ruby on rails sein...

ich hab mal dinge gesammelt, dich mich an PHP stören, allerdings hab ich die grade nicht verfügbar. kann die dir mal die tage zuschicken.

FabianWesner
06.08.2007, 15:50:31
ich hab mal dinge gesammelt, dich mich an PHP stören, allerdings hab ich die grade nicht verfügbar. kann die dir mal die tage zuschicken.

Das würde mich auch interessieren, Danke!

feuervogel
06.08.2007, 16:15:13
Das würde mich auch interessieren, Danke!

okay, hier:

Was stört mich an PHP?

1. Vermischung von OOP und funktionaler Programmierung!

Die Möglichkeiten zur Bearbeitung von Dateien sind rein funktional (fopen, fread, fwrite, fclose).

Will man mit Verzeichnissen arbeiten, arbeitet man mit dem dir() Objekt; ganz abgesehen davon, ist es allgemeine Konvention, dass Klassennamen mit einem Großbuchstaben beginnen.

2. Inkonsistenz der Stringfunktionen

Keine allgemeingültige Reihenfolge von Haystack und Needle; der zu bearbeitende String steht an keiner festen Stelle (wie zum Beispiel als erster Parameter).

3. Inkonsistenz von Arrayfunktionen

Mal wird das zu bearbeitende Array übergeben und das neue zurückgegeben, mal wird mit einer Referenz gearbeitet.

4. Das Session-Array

Unter http://www.php.net/manual/de/language.types.array.php steht:

Ein Schlüssel kann entweder ein integer oder ein string sein.

Natürlich nicht das Session-Array, welches ein assoziatives Array ist.

Allerdings:

<?php
session_start();
$_SESSION[ 0 ] = 'a';
$_SESSION[ "0" ] = 'b';
?>

Hier enthält $_SESSION zwei Einträge.

ruft man dann

<?php
session_start();
print_r( $_SESSION );
?>

auf, ist die Session leer, also auch keine assoziativen Schlüssel, deren Darstellung als Zahl äquivalent ist.

Also kann $_SESSION doch numerische Schlüssel enthalten, allerdings können diese nicht in der Session-Datei abgelegt werden (wieso auch immer).

5. Threads

Wo bleiben sie?

6. __toString()

Die Methode __toString() sollte eigentlich immer dann aufgerufen werden, wenn ein Objekt in einem String-Kontext aufgerufen wird; sagt man

echo $objekt;

wird $objekt->__toString() aufgerufen. Bei

echo "Objekt: " . $objekt;

allerdings nicht.

7. Sicherheit

Wenn sich jahrelange Mitglieder aus dem Security-Team verabschieden, gibt mir das zu denken.

8. Abwärtskompatibilität

Warum muss immer alles abwärtskompatibel sein? Wenn man in der Vergangenheit einen Fehler gemacht hat, sollte man ihn sauber beseitigen und ihn nicht noch jahrelang mit sich rumschleppen.

ich weiß, dass ich teilweise krümelpickerei betreibe, aber ich hab durch mein studium schon einige sprachen kennen gelernt und mich zudem recht lange und intensiv mit php beschäftigt, von daher will ich keinen flamewar betreiben sondern einfach nur mal kund tun, was mich stört. sicher findet man immer punkte an einer sprache die einen stören, aber grade punkt 1, 5, 7 und 8 nerven mich massiv.

Damir
06.08.2007, 16:57:00
Also ich denke man kann das nicht so einfach klären. Die Gründe von Feuervogel sind sicherlich keine krümelpickerei. Ich selber habe in den letzten 1 Jahr sehr viel in .NET programmiert, es handelte sich dabei um eine Client-Server-Lösung.

Am Anfang war es ungewohnt, da ich ja aus der PHP-Ecke komme aber heute bin ich eher sehr angetan von .NET. Wer vorallem mal das Framework als Freund gefunden hat wird vieles einfach nur gut finden...

Ausserdem gibt es sehr viele Dinge von Drittanbieter - oft aber nicht kostenlos - aber wenn es mir Zeit spart bin ich auch da sehr gerne bereit etwas zu kaufen.
Z.B. Aurigma (http://www.selfphp.de/anbieterverzeichnis/anbieterprofil.php?id=16&backlink=www.selfphp.de/anbieterverzeichnis/index.php?), versuche das mal auf die schnelle selber mit PHP, Java, AJAX etc...

Nachteil ist, das die deutschen Server in der Regel sehr teuer sind - daher habe ich dort auf einen amerikanischen Anbieter zurück gegriffen, mit dem ich mehr als zufrieden bin.

Naja, das von mir;-)

Damir

meikel (†)
06.08.2007, 21:41:54
okay, hier:
Ein Schlüssel kann entweder ein integer oder ein string sein.

Natürlich nicht das Session-Array, welches ein assoziatives Array ist.

Allerdings:

<?php
session_start();
$_SESSION[ 0 ] = 'a';
$_SESSION[ "0" ] = 'b';
?>

Hier enthält $_SESSION zwei Einträge.

ruft man dann

<?php
session_start();
print_r( $_SESSION );
?>

auf, ist die Session leer, also auch keine assoziativen Schlüssel, deren Darstellung als Zahl äquivalent ist.

Also kann $_SESSION doch numerische Schlüssel enthalten, allerdings können diese nicht in der Session-Datei abgelegt werden (wieso auch immer).
Das liegt an der Abwärtskompatibilität, weil register_globals auch On sein kann.
PHP importiert dann $_SESSION in den globalen Namensraum. Und weil es keine numerischen Variablenbezeichner geben darf, müssen die assoziativen Keys sich daran messen lassen.

Ansonsten sollte man die Kirche im Dorf lassen. PHP nutzt man in der Regel dazu, um auf einen POST oder GET Request zu reagieren. Und dazu reicht der Funktionsumfang völlig aus. Und wenn man mehr will und nochn Sack voll OOP dazu, dann verwendet man antweder Python oder einen bezahlbaren Applikationsserver. Wer allerdings vorhat, seine Webseiten mit .NET zu generieren, der sollte gleich ein paar tausen Euro mehr einplanen.

Damir
06.08.2007, 22:58:28
Wer allerdings vorhat, seine Webseiten mit .NET zu generieren, der sollte gleich ein paar tausen Euro mehr einplanen.

Also das halte ich doch mal für ein kleines Gerücht;-) Man kann ohne Probleme mit den .NET Bordmitteln alles managen, ohne Drittanbieter. Wer mehr will muß halt auch zahlen aber das ist auch so völlig legitim - Zend z.B. verschenkt ja auch nicht sene Anwendungen...

Damir

stefano franko
06.08.2007, 23:56:36
Hallo zusammen,

erst mal vielen Dank für eure Beiträge. Ich versuch mal den den Stand der Dinge zusammenzufassen.
Eine eindeutige Entscheidung welche Sprache besser ist, gibt es anscheinend nicht.

Die Punkte von Feuervogel finde ich sehr gut- auch ich störe mich an den meisten davon.
Wobei man sich da ja auch immer streiten kann (v.a. Punkt 1).
Auch was die Sicherheit (vgl. Punkt 7 betrifft) gibt es ständig konträre Meinungen. Weiß jemand dazu noch mehr? Ist .net (in Verbindng mit IIS) oder php (apache) sicherer?

Ich kann leider noch nicht genau sagen, was mich an .net so alles stören wird, wenn ich das erlerne. Aber es wird wohl darauf hinauslaufen, befürchte ich...

Danke für eure Beiträge
Stefan

feuervogel
07.08.2007, 00:19:01
schon wieder kein flamewar: naja, da ASP.NET closed source ist, kann man nur erahnen, was schlecht ist - und wenn sich ein bei ms angestellter sicherheitsexperte aufregt, darf er das sicherlich nicht so öffentlich wie stefan esser tun ;-)

naja, um mal nicht vom thema abzuweichen und ein paar teaser zu verteilen:

http://www.techscreencast.com/language/python/turbogears-20-minute-wiki/75

für django schaue ich grade das hier, weiß nicht ob das so gut ist:

http://www.eaglewebsitedesigns.com/django-web-development-video/

aber empfehlenswert ist auf jeden fall: www.djangobook.com

FabianWesner
07.08.2007, 12:00:01
@feuervogel:

interessante Liste! Ich gebe mal meinen Semf dazu.

1. Vermischung von OOP und funktionaler Programmierung!
6. __toString()

Da ist Ruby mit einer 100%tigen Objektorientierung natürlich klar überlegen. Man kann PHP aber mit einem Framework aufrüsten, welches solche Funktionen in Objekten kapselt.

2. Inkonsistenz der Stringfunktionen
3. Inkonsistenz von Arrayfunktionen
Hier könnte man einen eigenen Adapter bauen, der das alles vereinheitlich. Diese beiden Punkte stören mich auch sehr, da sie den flüssigen Entwicklungsablauf stören.

5. Threads
Die vermisse ich nicht. Damit habe ich immer Probleme... man weiß nie ob das System wirklich das tut was es soll. Wenn man Threads benötigt, wird man wahrscheinlich auch eine virtual machine brauchen und sowieso eher Java einsetzen.

7. Sicherheit
Ich kann mir nicht vorstellen, dass PHP selbst ein Risiko darstellt. 99% aller Angriffsmöglichkeiten auf eine Webseite werden doch von den Entwicklern 'bereitgestellt', unabhängig von der eingesetzten Sprache. Auch hier kann man aber mit einem Framework mächtig aufrüsten.

Ich mag an PHP, dass man es es extrem einfach einsetzen kann (im Vergleich zu Java) und es sehr viele fertige und frei verfügbare (Teil-)Systeme gibt, welche man nutzen kann. Mit Ruby ist man ja quasi zwangsweise auf das Railsframework festgelegt.

meikel (†)
07.08.2007, 12:00:42
Also das halte ich doch mal für ein kleines Gerücht;-) Man kann ohne Probleme mit den .NET Bordmitteln alles managen, ohne Drittanbieter.
.NET heißt (ohne Drittanbieter <ggg>):
Windows Server 2003 mit IIS, MSSQL und Exchange. .NET Laufzeitumgebung gibts für naß.

Und für den Entwickler ein dazu passendes Visual Studio.

Will man davon Abstriche machen, sollte man drauf pfeifen und ein janz normales LAMP verwenden.

feuervogel
07.08.2007, 13:59:15
Hier könnte man einen eigenen Adapter bauen, der das alles vereinheitlich. Diese beiden Punkte stören mich auch sehr, da sie den flüssigen Entwicklungsablauf stören.


richtig, aber das wäre ja arbeit.


Die vermisse ich nicht. Damit habe ich immer Probleme... man weiß nie ob das System wirklich das tut was es soll. Wenn man Threads benötigt, wird man wahrscheinlich auch eine virtual machine brauchen und sowieso eher Java einsetzen.


richtig, man muss kräftig nachdenken und debuggen, aber für viele dinge ist es halt einfach ganz gut geeignet (wozu hat mein laptop 2 kerne wenn ich sie nicht nutzen kann?). bei python habe ich auch threads und brauche keine vm.


Ich kann mir nicht vorstellen, dass PHP selbst ein Risiko darstellt. 99% aller Angriffsmöglichkeiten auf eine Webseite werden doch von den Entwicklern 'bereitgestellt', unabhängig von der eingesetzten Sprache. Auch hier kann man aber mit einem Framework mächtig aufrüsten.


darüber kann man sich gerne streiten.


Ich mag an PHP, dass man es es extrem einfach einsetzen kann (im Vergleich zu Java) und es sehr viele fertige und frei verfügbare (Teil-)Systeme gibt, welche man nutzen kann. Mit Ruby ist man ja quasi zwangsweise auf das Railsframework festgelegt.

richtig, mit php ist alles irgendwie möglich. java kann man auch nur dort einsetzen, wo die vm installiert ist, aber ich muss dir zustimmen, dass für webapplikationen java übertrieben sein mag. es gibt auch viele dinge in java die frei verfügbar sind, jedoch geht für mich immer qualität vor quantität. und die vermisse ich bei einigen freien php-dingen doch sehr.

ein grundansatz von turbogears ist zum beispiel, dass man die aus der sicht der entwickler perfekten komponenten zur verfügung gestellt bekommt, sobald man aber etwas anderes verwenden will, man dies einfach tun kann.

und dass man sich auf etwas beschränken muss kann für wartung und pflege durchaus stark von vorteil sein:

will ich bei django etwas verändern, suche ich mir das zur url passende pattern raus, gucke in den view der aufgerufen wird, und lese aus dem zugehörigen model heraus, wie was funktioniert. damit habe ich zielgerichtet 3 dateien geöffnet und nicht 20, wie ich das schon bei fremden php-cms hatte, wonach ich immer noch nicht genau wusste, wie sich der inhalt zusammenbaut.

ich kann nur sagen: schaut ich mal das djangobook.com an, arbeitet es durch (geht in ein, zwei abenden) und überlegt dann, was sich in 2-3 tagen (!) damit alles machen lässt.

naja, aber um nicht zu OT zu werden: ich denke, der fragesteller hat einen eindruck über gewisse möglichkeiten bekommen. nun soll er selbst (oder sein chef) entscheiden.