PHP + MySQL oder C# + MySQL

derf

Cadet 2nd Year
Registriert
Juni 2005
Beiträge
19
Hallo,

für das Studium habe ich als Aufgabe eine webbasierte Anwendung zu entwickeln. Ich bin seit 5 Jahren C#-Entwickler und habe Erfahrung in ASP.NET(MVC), Silverlight, WinForms und besonders WPF. In dem Projekt soll mit einer MySQL-Datenbank gearbeitet werden und vorgeschlagen ist, es in PHP zu entwickeln, damit es später weiterverwendet werden kann. Leider habe ich damit noch gar keine Erfahrung gemacht und darum bin ich am Überlegen, welche Programmiersprache ich nun nehmen soll.

1. Gibt es eine Möglichkeit die Anwendung von einem C#-Projekt zu PHP zu migrieren?
2. Welche Voraussetzungen sind zusätzlich nötig, wenn die Anwendung unter ASP.NET oder Silverlight läuft?

Was mir am meisten Sorgen bereitet, ist meine fehlende Kenntnisse PHP-Projekte zu testen.


Ich hoffe, es kann mir jemand weiterhelfen.
 
Nimm PHP.

1. Leichter als C# und 2. kein Proprietärer Mist!
 
Ich würde natürlich PHP verwenden, aber meine Kenntnisse von C# sind auch eher eingeschränkt. Wenn es erlaubt ist, dann würde ich auf ein Framework zurückgreifen, damit vereinfacht man sich enorm den Zugriff auf die Datenbank. Eine Portierung von C# nach PHP wird dadurch aber sehr wahrscheinlich schwer bis unmöglich.

Bezüglich des Testen würde ich mal einen Blick auf diese Liste werfen. PHPUnit - wie der Name schon erahnen lässt, eine Portierung von JUnit - scheint wohl am meisten verwendet zu werden. Da ich nichts anderes als JUnit kenne, kann ich aber auch nicht beurteilen ob es noch besser geeignete Testprozeduren gibt.

Von Silverlight würde ich abraten, da ein Plugin für den Browser notwendig ist. ASP.NET sollte doch im Prinzip wie PHP funktionieren und HTML-Code an den Browser liefern. Man ist dann aber bei der Auswahl von Webspace bzw. Server eingeschränkt.
 
Nim C#, erstens kennst Du Dich damit aus und zweistens ist es im Business Bereich immer gefragt.

Weitere Vorzüge von C# bzw. Nachteile von PHP in der Sprache an sich finden sich zu genüge im Netz.

PHP hat wie gesagt den Vorteil, nicht proprietär zu sein, viele Open Source Websachen basieren darauf. Dafür wird C# von einem Hersteller vorangetrieben, der etwas Ahnung von Softwareentwicklung hat... Und es ist gut dokumentiert, was auch ein nicht zu unterschätzender Vorteil ist.
 
Drexel schrieb:
Und es ist gut dokumentiert, was auch ein nicht zu unterschätzender Vorteil ist.

Aha und PHP ist dies nicht?

http://www.php.net/manual/de/

http://www.selfphp.info/

Das sind nur 2 Quellen von tausenden.

Ein echter Nachteil gibt es bei PHP nicht. Gilt genau so wie für Java. Wenn etwas gut programmiert ist sind auch keine SIcherheitslücken oder ähnliche Probleme vorhanden.
 
Dass PHP auch ein Manual hat weiss ich auch, aber ich finde es teilweise dürftig. Mit PHP ist es wesentlich schwieriger sicher zu programmieren, wobei man sich in anderen Sprachen schlau machen muss, das bezweifel ich nicht. Es kann auch nicht schaden mal über den Tellerrand zu schauen, von daher muss der Threadersteller selbst wissen, was er will. Wenn man ein Sprache kann, ist es normalerweise nicht so schwierig in eine andere einzuarbeiten, zumindest erst mal in die Basics.

Hier 2 schöne Seiten um Thema PHP:

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
http://www.codinghorror.com/blog/2008/05/php-sucks-but-it-doesnt-matter.html

Ich verteufel PHP nicht per se, habe selbst viel damit gemacht und es ist die Sprache für offene Websysteme. Aber ich programmiere selber nicht mehr gerne damit.
 
Ich würde es mit PHP angehen. Das ist nicht proprietär, es gibt unzählige Samples und Dokus im Netz zu vielen Problemen. Auch die MySQL Einbindung ist kinderlicht.

Außerdem sollte man soetwas auch nutzen, um den eigenen Horizont zu erweitern. PHP an sich ist zwar an manchen stellen auch etwas flaxig - vor allem was das debuggen angeht - aber man kann auch gut strukturiert und objektorientiert entwickeln. Die Syntax ist C++/C# sogar großteils sehr ähnlich. Einzig die Performance von PHP ist schlecht. Solltest du größere serverseitige Aufgaben planen, müsstest du noch CGI-Skripte und Applikationen auf dem Server entwickeln.

Ob es Migrationstools gibt weiß ich nicht, aber von soetwas würde ich generell die Finger lassen. Da hast du doppelten Aufwand durch die Anpassung und Fehlersuche.
 
Drexel schrieb:
Mit PHP ist es wesentlich schwieriger sicher zu programmieren...

Sorry, ich bin zwar auch nicht der Freund von PHP aber diese Aussage ist totaller quatsch. Eingaben müssen halt escaped werden und man benötigt ein gutes DB design und PHP ist mit unter das sicherste was es gibt.

Das Problem ist auch nicht PHP sondern eins der 50 Milliarden Frameworks welche auf PHP setzen. Die Sprache an sich ist Bomben sicher.
 
derf schrieb:
In dem Projekt soll mit einer MySQL-Datenbank gearbeitet werden und vorgeschlagen ist, es in PHP zu entwickeln...
Wenn es nur ein Vorschlag ist...

@Cool Master
Wenn der TE schon Erfahrung mit C# hat, ist es für ihn sicher leichter als PHP. Der "proprietäre Mist" ist aber in der Industrie weit verbreitet ;)
 
Klar bestreite ich absolut nicht das es für Ihn leichter sein wird. Aber wenn es darum geht warum erst fragen?

An dem Projekt sollen ja später evtl. auch noch andere Leute arbeiten und für diese könnte PHP leichter sein ;) Also du siehst man kann halt nicht einfach sagen Sprache X ist "besser".

Bzgl. der Industrie: Kann ich bis heute immer noch nicht verstehen wie man auf ein komplett geschlossenes System setzen kann. Ich mein für den DAU zu hause der keine Ahung von Open Source hat ok passt, aber in der Industrie will ich wissen was in einem Programm abläuft und viel wichtiger was es möglicherweise überträgt.
 
derf schrieb:
1. Gibt es eine Möglichkeit die Anwendung von einem C#-Projekt zu PHP zu migrieren?
Das kann man wohl mit nein beantworten. Da gibts einiges an groben Unterschieden zwischen den Sprachen, schon allein im Ansatz der Sprache. PHP ist eine Interpreter-Sprache, um eine PHP-basierte Webseite darzustellen brauchst du einen PHP-fähigen Webserver (also quasi: irgend einen). Dafür sind die Scripte portierbar. Fast aller Code läuft ohne Änderung unter Linux, Windows, OSX,... C# hingegen muss kompiliert werden und du würdest nicht nur die Seite schreiben, sondern auch den ganzen restlichen Webserver drum herum. Außerdem läuft es dann nur auf Windows zuverlässig. Mono ist... fragwürdig.

2. Welche Voraussetzungen sind zusätzlich nötig, wenn die Anwendung unter ASP.NET oder Silverlight läuft?
Schreib die Seite in ASP.NET und lass sie auf einem Microsoft IIS laufen. Apache (via Mono) geht zwar theoretisch, praktisch hab ich es aber nie wirklich in Gang bekommen. Das ist halt der gravierende Nachteil an ASP/ASP.NET: Proprietärer Scheiß, der nur auf anderem proprietärem Scheiß lauffähig ist. Kein Apache, kein nginx, kein Cherokee,...

Was mir am meisten Sorgen bereitet, ist meine fehlende Kenntnisse PHP-Projekte zu testen.
Die Dokumentation ist gut und die Syntax weitestgehend verständlich. Das klappt schon. Im Zweifel hüllst du das ganze Ding in ein Framework wie Symfony2 oder Zend und lässt das Framework die ganze Arbeit machen.

Drexel schrieb:
Dafür wird C# von einem Hersteller vorangetrieben, der etwas Ahnung von Softwareentwicklung hat... Und es ist gut dokumentiert, was auch ein nicht zu unterschätzender Vorteil ist.
Ja... mit Betonung auf das "etwas" vor Ahnung...
Microsoft und gute Software? Microsoft hatte nur die beste Marketing-Abteilung und die gemeineren Anwälte. Das ist alles. Anständige Software sieht durchweg anders aus. Wenn MS wirklich Ahnung von Software hätten, dann erklär mir doch den IE<=10... Erklär mir Windows 8 und das Zurückrudern in 8.1. Erklär mir Reboot... Reboot... Reboot..

PHP ist herstellerseitig ziemlich gut dokumentiert und dank seiner brutalen Verbreitung gibts auch noch tausende zusätzlicher Datenquellen.

Drexel schrieb:
Dass PHP auch ein Manual hat weiss ich auch, aber ich finde es teilweise dürftig.
Das Geheimnis ist: Lies nicht nur die Funktionsreferenz, sondern auch die ersten paar User-Kommentare zur Funktion.

DaZpoon schrieb:
Einzig die Performance von PHP ist schlecht. Solltest du größere serverseitige Aufgaben planen, müsstest du noch CGI-Skripte und Applikationen auf dem Server entwickeln.
PHP ist performant genug für ziemlich umfangreiche Aufgaben. Die größte Schwachstelle ist da ein schlecht konfigurierter Server.

Mal als Vergleich: Wir hatten ein recht komplex modifiziertes Magento-System erst über suPHP via Apache2-MPM-Prefork laufen. Das konnte man tatsächlich getrost als langsam bezeichnen. Ein einfacher Wechsel auf MPM-ITK brachte bereits eine spürbare Beschleunigung. Nachdem zusätzlich zu MPM-ITK noch PHP5-FPM eingesetzt wurde und somit auch ein OpCode-Cache (in dem Falle APC) möglich wurde rannte die Seite nur so. Die Time To First Byte hat sich um ca. 60% gesenkt. Weitere Modifikationen am Datenbankserver etc. brachten nur noch Verbesserungen im einstelligen Millisekunden-Bereich.

Wem dann ein Setup mit PHP5-FPM noch zu lahm ist, der kann getrost auf die HipHop-Engine der Facebook-Entwickler zurückgreifen und aus seinem PHP-Code hübsch schnellen C-Code generieren, den man dann dem CGI (FCGI/FCGID) zum Fraß vorwirft. Hat bei Facebook für einige Millionen User genug Leistung erzeugt...
 
Cool Master schrieb:
Sorry, ich bin zwar auch nicht der Freund von PHP aber diese Aussage ist totaller quatsch. Eingaben müssen halt escaped werden und man benötigt ein gutes DB design und PHP ist mit unter das sicherste was es gibt.

Das Problem ist auch nicht PHP sondern eins der 50 Milliarden Frameworks welche auf PHP setzen. Die Sprache an sich ist Bomben sicher.

Das sehe ich nicht so. Ich rede nicht nur von SQL Injection. PHP hat durchs Design so viel böse Ausnahmen/unerwartetes Verhalten, was man im gesamten Program berücksichtigen muss.

Allein http://www.php.net/manual/en/language.operators.precedence.php oder http://php.net/manual/de/types.comparisons.php soll man immer auswendig könnnen? Der ternäre operator ist schon nen schlechter Scherz.
 
Du zitierst doch schon ein Punkt wie man SQL Injections vermeinden kann :D

Eingaben Escapen und sich eben an die best practice halten und das gibt es nun mal bei jeder Programiersprache egal ob Java, C++, C#, Objective C, Python oder eben PHP.
 
Operator Precedence hast du in jeder Sprache. Andernfalls würde allereinfachste Mathematik nicht ohne weiteres funktionieren. Hast du in C schon einmal einen eigenen Operator (egal ob präfix, suffix oder infix) definiert? Da darfst du hübsch überlegen, welche Gewichtung du ihm mit gibst...

Und die Vergleichsfunktionen mit == vs. === kommen schlicht und ergreifend eben von der schwachen Typisierung (bzw. gar keiner). Dasselbe Problem hast du in allen Sprachen ohne typisierte Variablen. Aber immer noch besser, als peinlich genau darauf achten zu müssen, welche Werte eine Variable in welchen Situationen annehmen kann. Ich denk da nur an C... ist "1" jetzt ein Char oder ein Int?


Edit: SQL Injections? Was sind denn SQL Injections? Arbeitet gefälligst mit PDO & Prepared Statements, schon muss man auch gar nichts mehr escapen.
 
Wenn du bereits C# kannst, dann nimm C#. Du wirst darin schneller und besser entwickeln, als wenn du erst eine neue Sprache lernst.

Ignorier diese Sprache X ist kacke und Y toll einfach.
 
Ändert aber nix daran, dass er in C# dann einen kompletten Webserver schreiben müsste. Dann doch lieber ASP.NET, dann kann er einen IIS nutzen. Ist zwar auch Pfui, aber immer noch weit leichter als n eigenen (sicheren und flinken) HTTPD zu schreiben.
 
Damit meinte ich eine Lösung auf Basis von .NET :)
 
Microsoft und gute Software
Ich finde Visual Studio excellent. Der IE is ab 9 ist auch brauchbarer geworden, alles darunter ist aber ein Krampf...

Den geringeren Aufwand wirst du mit ASP.NET haben, da du schon Erfahrung mit C# hast. Bei dem schönen Wetter ein Mehrwert :)
 
Zurück
Oben