2008-11-14 23 views
8

Dies ist ein Follow-up zu twoquestions Ich fragte eine Woche oder so zurück. Das Ergebnis davon war, dass ich einen Prototyp einer AI-basierten Anwendung für das Web erstellte, und ich fragte mich, welche Sprache (n) verwendet werden sollte. Die Schlussfolgerung schien zu sein, dass ich für etwas wie Python gehen und dann irgendwelche kritischen Bits in etwas schnelleres wie Java oder C/C++ umwandeln sollte.Verwenden von Python zum Erstellen von Webanwendungen

Das klingt gut für mich, aber ich frage mich jetzt, ob Python wirklich die richtige Sprache ist, um eine Webanwendung zu erstellen. Die meisten Web-Anwendungen, an denen ich in der Vergangenheit gearbeitet habe, waren C/C++ CGI und dann php. Der PHP-Code, mit dem ich viel leichter arbeiten konnte, machte die Verknüpfung der Benutzeroberfläche mit dem Backend so viel einfacher und auch für mich logischer.

Ich habe Python vorher nicht benutzt, aber was ich mich im Grunde frage ist, wie einfach ist CGI-Programmierung in Python? Muss ich auf die langweilige Art und Weise in C/C++ zurückgehen, wo HTML-Code in Vorlagen gespeichert werden muss und das CGI sie einlesen muss und spezielle Codes durch geeignete Werte ersetzen muss oder ist es möglich, die Vorlagen zu haben der Code wie bei PHP?

Ich stelle hier wohl eine zutiefst ignorante Frage, für die ich mich entschuldige, aber hoffentlich wird jemand wissen, worauf ich hinaus will! Meine allgemeine Frage ist: Ist das Schreiben von Web-Anwendungen in Python eine gute Idee, und ist es so einfach wie mit PHP?

Antwort

8

"Wie einfach ist CGI-Programmierung in Python?" Einfacher als C, das ist sicher. Python ist einfacher, weil - einfach - es einfacher ist, mit C zu arbeiten als in C. In erster Linie: keine Speicherzuweisung - Freigabe. Darüber hinaus ist das OO-Programmiermodell ausgezeichnet.

Abgesehen von der Einfachheit der wesentlichen Sprache ist der Python-Standard WSGI viel einfacher zu handhaben als der CGI-Standard.

jedoch roh CGI ist ein großer Schmerz, wenn sie mit dem stark vereinfachten Welt eines All-Python-Framework verglichen (TurboGears, CherryPy, Django, was auch immer.)

Die Gerüste viele (erforderlich) Struktur aufzuzwingen. Die Erfahrung für einen CGI-Programmierer ist, dass es zu viel zu lernen ist. Wahr. Alle neuen Dinge sind zu viel um zu lernen. Der Wert übersteigt jedoch die Investition bei weitem.

Mit Django sind Sie in wenigen Minuten einsatzbereit. Ernst. django-admin.py startproject und Sie haben etwas, das Sie fast sofort ausführen können. Sie müssen Ihre URLs entwerfen, Ansichtsfunktionen schreiben und Seitenvorlagen entwerfen. All das ist Arbeit. Aber es ist weniger Arbeit als CGI in C.

Django hat eine bessere Architektur als PHP, weil die Präsentationsvorlagen vollständig von der Verarbeitung getrennt sind. Dies führt zu einiger Verwirrung (siehe Syntax error whenever I put python code inside a django template), wenn Sie den freien und unbeschränkten PHP-Stil im Django-Framework verwenden möchten.

Verknüpfung der Benutzerschnittstelle an den Back-End-

Python-Front-End (Django, zum Beispiel) verwendet Python Ansicht Funktionen. Diese Ansichtsfunktionen können beliebigen Python-Code enthalten. Dazu gehören, wenn nötig, Module, die in C geschrieben und von Python aufgerufen werden können.

Das bedeutet, dass Sie ein CLIPS Modul mit einer Python-freundlichen Schnittstelle kompilieren können. Es wird etwas verfügbar für Ihren Python-Code mit der import Anweisung.

Manchmal ist dies jedoch ineffektiv, da Ihre Django-Seiten darauf warten, dass die CLIPS-Engine beendet wird. Eine Alternative ist, etwas wie eine Named Pipe zu verwenden.

Sie haben Ihre CLIPS-basierte App, die vollständig in C geschrieben ist und von einer Named Pipe liest. Ihre Django-Anwendung, die vollständig in Python geschrieben ist, schreibt in diese Named Pipe. Da Sie zwei unabhängige Prozesse haben, werden Sie alle Ihre Kerne ziemlich schnell maximieren.

17

Python ist eine gute Wahl.

Ich würde jedoch das CGI-Modell vermeiden - Sie zahlen eine große Strafe für den Start des Interpreters bei jeder Anfrage. Die meisten Python-Web-Frameworks unterstützen the WSGI standard und können auf unzählige Arten mit Servern verbunden werden, aber die meisten leben in einem lang andauernden Prozess, mit dem der Webserver kommuniziert (über Proxy, FastCGI, SCGI usw.).

Apropos Frameworks, die Python-Landschaft ist reif für sie. Das ist gut und schlecht. Es gibt viele gute Möglichkeiten, aber es kann für einen Neuling entmutigend sein.

Wenn Sie nach etwas suchen, mit Web/DB/Templating Integration vorverpackten kommt ich Django, TurboGears oder Pylons suchen würde vorschlagen. Wenn Sie mehr Kontrolle über die einzelnen Komponenten haben wollen, sehen Sie sich CherryPy, Colubrid oder web.py an.

Ob es so einfach wie PHP ist, ist das subjektiv. In der Regel wird es empfohlen, Ihre Templates und Anwendungslogik in der Programmierwelt von Python getrennt zu halten, was Ihren life einfacher macht. Auf der anderen Seite ist es eine andere Definition von "einfach", den gesamten Code für eine Seite in eine PHP-Datei schreiben zu können.

Viel Glück.

+0

PHP ist einfacher, die ersten 80% Ihrer Website zu knallen. Die letzten 20 sind härter und die Wartung ist schrecklich. Wenn Sie sich die Zeit nehmen, es mit PHP am Anfang (Framework) richtig zu machen, benötigt es so viel Zeit wie ein Python-Web-Framework. –

5

ich Django vorschlagen würde, aber wenn man bedenkt, dass man für etwas „so einfach wie es mit PHP ist“ fragen dann müssen Sie einen Blick auf PSP nehmen (Python Server Pages). Während Django ein komplettes Framework für die Erstellung von Websites ist, kann PSP genauso wie PHP ohne Framework verwendet werden.

3

Es ist einfacher, Web-Anwendungen in Python zu schreiben als in PHP. Vor allem, weil Python keine gebrochene Sprache ist.

Nimm ein Web-Framework auf, das mod_wsgi unterstützt oder dein eigenes ausbildet. WSGI-Apps sind wirklich einfach zu implementieren, nachdem Sie sich daran gehalten haben.

Wenn Sie Vorlagen wollen, dann ist genshi über die beste Templating-Engine, die ich für Python gefunden habe und Sie können es verwenden, wie Sie möchten.

Verwandte Themen