Design einer Webanwendung - welche Tools?

Django, Flask, Bottle, WSGI, CGI…
Antworten
Leonardo
User
Beiträge: 3
Registriert: Freitag 28. Januar 2011, 22:56

Hallo Pythonisten,

ich brauche Hilfe wegen des Designes einer Webanwendung, die im Intranet meines Klienten laufen soll.

Der Klient hat ein altes Warenwirtschaftssystem, das von mehreren Filialen benutzt wird. Das System bietet Webservices an, für den Zugriff auf Daten und Transaktionen. Die heutige Benutzeroberfläche in Filiallen ist altmodisch und soll durch eine neuere und schönere Web-Oberfläche ersetzt werden.

Die Idee ist die bestehenden Webservices für eine neue Webanwendung zu nutzen.

In jeder Filiale soll ein Webserver installiert werden und eine Weboberfläche soll mit jQuery gebaut werden. Die Logik auf dem Webserver kommuniziert über Backend Webservices mit dem alten System. Auf dem Webserver soll es auch eine lokale Datenbank geben, für Administration und Monitoring.

Meine Fragen sind:

1. Ist es ein sinvoller Lösungsansatz? Gibt es bessere Alternativen?
2. Die neue Web-Oberfläche soll ca. 50 Screens (HTML Seiten) haben. Ich habe Empfehlungen in der Richtung bekommen: Pylons, CherryPy oder Tornadoweb. Sind das richtige Tools für dieses Projekt?
3. Wie sollen Webseiten und Serverlogik aus Entwicklungsumgebung in die Kundenlandschaft kopiert werden, wie läuft das Versionmanagement für Python und JavaScript Code?

Bin für jede Hilfe und Empfehlung sehr dankbar!

Vielen Grüße,
Leo
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Den Framework Teil von CherryPy nutzen eher wenige, Tornado wenn prinzipiell interessant ist ebenfalls nicht sonderlich populär und Pylons scheint durch Pyramid, zumindest für neue Sachen, abgelöst worden zu sein.

Desweiteren würde ich mir für so ein Projekt durchaus auch Django und Flask anschauen, eventuell aber auch "low-level" gehen mit Werkzeug, Jinja2, SQLAlchemy und Flatland für die Basis.
Leonardo
User
Beiträge: 3
Registriert: Freitag 28. Januar 2011, 22:56

wegen die SQLAlchemy ist es mir nicht ganz klar ob ich die brauche. Die Daten liegen im Backendsystem und werden über Webservices gelesen/geschrieben. Ist SQLAlchemy auch dann nötig?

Da wir noch keine Webexperte sind, fühlen wir uns sicherer mit einem minimalen Framework wie CherryPy oder WebPy, als mit grosem Django, wo wir mehr Zeit brauchen den Framework zu lernen und weniger Kontrolle haben wie es innen drin lauft.

Anderseits, wenn der Kunde später einen Webshop haben will wäre Djago wahrs der richtige?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonardo hat geschrieben:wegen die SQLAlchemy ist es mir nicht ganz klar ob ich die brauche. Die Daten liegen im Backendsystem und werden über Webservices gelesen/geschrieben. Ist SQLAlchemy auch dann nötig?
Nein, da die Abstraktion vom SQL ja dann schon serverseitig geschieht.
Leonardo hat geschrieben: Da wir noch keine Webexperte sind, fühlen wir uns sicherer mit einem minimalen Framework wie CherryPy oder WebPy, als mit grosem Django, wo wir mehr Zeit brauchen den Framework zu lernen und weniger Kontrolle haben wie es innen drin lauft.
Dann schaut Euch aber auch noch mal werkzeug oder flask an!

Darf man fragen, was für Webservices das eigentlich sind? Also SOAP? Oder etwas anderes?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Was bedeutet Webservices? SOAP? Oder ist das etwas REST-basiertes mit JSON oder XML als Datenformat? Wenn jQuery benutzt werden soll, entsteht da eher eine "rich internet application" (RIA) statt einer "traditionellen" Webanwendung? Dann würde mich wundern, warum du in Screens zählst. Typischerweise würdest du ja ja nur eine (oder wenige) HTML-Seiten haben und der Rest geschieht in JavaScript auf dem Client.

Wie auch immer, bei der Technologie-Entscheidung würde ich auf etwas populäres setzen, was eine große Community hat, wo man dir ggf. helfen kann und wo du auch Lernmaterial in Form von Büchern und Informationen im Web findest. Da sehe ich bei Python eigentlich nur Django und dann lange Zeit nichts. Django ist allerdings eher auf die traditionellen Webseiten-basierten Webanwendungen spezialisiert.

CherryPy und Tornadoweb halte ich für tot. Pylons muss sich als Pyramid IMHO noch beweisen. Alles selbst zu bauen (Flask, Bottle) ist IMHO nicht der richtige Ansatz, wenn man kein Experte ist. Ich halte ein "full stack"-Rahmenwerk wie Django für Nicht-Experten deutlich besser geeignet, als zu versuchen, alles zu Fuß zu bauen. Zumal ist die Dokumentation erstklassig .

Versionsmanagement funktioniert bei Python und JavaScript wie bei jeder anderen Programmiersprache auch: SVN, Git, Mercurial usw. Auch hier würde ich empfehlen, der Masse zu folgen und sich wie alle anderen auch mit git zu quälen ;)

Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

sma hat geschrieben: Wie auch immer, bei der Technologie-Entscheidung würde ich auf etwas populäres setzen, was eine große Community hat, wo man dir ggf. helfen kann und wo du auch Lernmaterial in Form von Büchern und Informationen im Web findest. Da sehe ich bei Python eigentlich nur Django und dann lange Zeit nichts. Django ist allerdings eher auf die traditionellen Webseiten-basierten Webanwendungen spezialisiert.
Büßen die Vorteile von Django nicht bereits mit der Tatsache ein, dass der OP "nur" ein Frontend für Webservices schreiben möchte? Dafür braucht er doch imho nur noch Routing und ggf. eine Template-Engine, was die Frameworkseite anbelangt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Es war auch von einer zusätzlichen DB für "Administration und Monitoring" die Rede. Also je nach Umfang und Art von diesen für die Webanwendung spezifischen Daten und Funktionen, kann Django dann doch hilfreich sein.
Leonardo
User
Beiträge: 3
Registriert: Freitag 28. Januar 2011, 22:56

Hyperion hat geschrieben:
sma hat geschrieben: Wie auch immer, bei der Technologie-Entscheidung würde ich auf etwas populäres setzen, was eine große Community hat, wo man dir ggf. helfen kann und wo du auch Lernmaterial in Form von Büchern und Informationen im Web findest. Da sehe ich bei Python eigentlich nur Django und dann lange Zeit nichts. Django ist allerdings eher auf die traditionellen Webseiten-basierten Webanwendungen spezialisiert.
Büßen die Vorteile von Django nicht bereits mit der Tatsache ein, dass der OP "nur" ein Frontend für Webservices schreiben möchte? Dafür braucht er doch imho nur noch Routing und ggf. eine Template-Engine, was die Frameworkseite anbelangt.
Hyperion hat geschrieben:
sma hat geschrieben: Wie auch immer, bei der Technologie-Entscheidung würde ich auf etwas populäres setzen, was eine große Community hat, wo man dir ggf. helfen kann und wo du auch Lernmaterial in Form von Büchern und Informationen im Web findest. Da sehe ich bei Python eigentlich nur Django und dann lange Zeit nichts. Django ist allerdings eher auf die traditionellen Webseiten-basierten Webanwendungen spezialisiert.
Büßen die Vorteile von Django nicht bereits mit der Tatsache ein, dass der OP "nur" ein Frontend für Webservices schreiben möchte? Dafür braucht er doch imho nur noch Routing und ggf. eine Template-Engine, was die Frameworkseite anbelangt.
Vielen Dank für die Antworte!

Webservices sind RESTful mit XML und JSON. SOAP gibt es auch aber weniger, sollen mit REST XML und JSON ersetzt werden.

Ich bin auch der Meinung dass Django eher für traditionelle Webseiten-/anwendungen spezialisaiert ist. Hier geht es um Verwaltung von Angeboten, Kunden, Kundenaufträgen ... wie jemand geschrieben hat es ist eher RIA als eine Webseite. Vielleicht habe ich mich falsch ausgedruckt, mit Screens meinte ich Traksaktionen, wie Erfassung des Kundenauftrags usw. wollte nur Umfang der Logik ungefähr beschrieben.

Wie ich Komentare verstehe, sind Routing und Template-Engine ein Minimum was mein Framework haben soll. Anforderung ist auch dass Look & Feel schnel geändert werden kann, spricht schon für eine Template-Engine, oder?

Was mir beim Python ein bischen Angst macht, ist eine Reihe von Frameworks. Ich habe mich für Pylons fast entschieden, jetzt kommt Pyramid. Wenn ich jetzt Pyramid nehmen würde, kommt bald wahrs Pyramid++ o.ä.

Soll ich versuchen mit dem flask, werkzeug oder Pylons/Pyramid?

Danke und Gruß,
Leo
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonardo hat geschrieben: Soll ich versuchen mit dem flask, werkzeug oder Pylons/Pyramid?
Das musst Du leider selber entscheiden ;-) Letztlich muss man irgend wann einmal eine Entscheidung treffen und anfangen zu implementieren. Ggf. hilft es Dir ja, wenn Du mal a la rapid prototyping versuchts, einen simplen Service mit jedem der Auswahlen per Framework zugänglich zu machen. Dann bekommst Du wohl ein gefühl dafür, welches Framework Dir besser liegt. (Konzept, Doku, zusätzliche Module, usw)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten