gibt es ein MVC Framework ähnlich wie ASP.NET MVC?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi, ich arbeite mich gerade etwas in ASP.NET MVC ein. Da ich das unter Mono verwenden möchte und ich nicht weiß, ob Mono schon ausreichend stabil ist, schaue ich mich sicherheitshalber nach Alternativen um.

Gibt es für Python etwas vergleichbares zu ASP.NET MVC? Vor allem das Routing finde ich klasse. Hier ein Beispiel. Man muss sich nicht wie in PHP mit htaccess Rules herumschlagen oder irgendwelche Klimmzüge machen.

Außerdem finde ich das MVC Pattern für mein Vorhaben geeignet. Ich habe mir zwar schon mal Django angeschaut, bin aber so gar nicht damit zurecht gekommen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das Routing sieht irgendwie aus wie das was Werkzeug mitbringt, nur mit viel Boilerplate-C#-Code drumrum. Wenn du ein Werkzeug-basiertes Webframework haben willst, kannst du dir ja Glasshammer ansehen. Ich denke Bottle ist so ähnlich, aber das haben ich nicht benutzt, weil ich dafür bisher keinen Bedarf hatte.

Andererseits... kein sinnvolles Framework nutzt noch dateibasierte URLs, das ist viel zu schmerzhaft und schlichtweg unnötig.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich muss gestehen, dass ich Web Frameworks in Python immer gemieden habe, weil mir die Einrichtung immer zu kompliziert vorkam. Da kam mir Mono und ASP.NET MVC eigentlich genau richtig. Das hatte ich nach ein paar Minuten funktionsfähig eingerichtet.

Ich schätze an Mono auch, dass es auch bei Webanwendungen durch den JIT deutlich schneller ist und das man auch CPUs mit mehreren Cores nutzen kann. Wäre Mono wirklich Stable und auf dem Niveau von .NET 3.5 würde ich die Frage vermutlich nicht stellen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:Ich muss gestehen, dass ich Web Frameworks in Python immer gemieden habe, weil mir die Einrichtung immer zu kompliziert vorkam.
Inwiefern?

Und selbst wenn die Einrichtung länger dauert hat man auf lange Sicht gesehen mit Python Zeit gespart, weil man einfach schneller (und weniger) Code schreiben kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Kann ich selbst nicht so genau sagen. Es kam mir jedenfalls immer recht umständlich vor und ich bin bisher daran gescheitert. Frag mich nicht warum.

Habe mir gerade mal Werkzeug angeschaut. So wie ich das auf den ersten Blick sehe ist das Routing nicht ganz so komfortabel wie das von ASP.NET MVC. Prinzipiell kann man dort eine komplette Webanwendung mit dem Standard Pattern erstellen. So wie das bei Werkzeug aussieht muss man für jede Klasse und für jedes Pattern Muster eine Rule erstellen, oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:Kann ich selbst nicht so genau sagen. Es kam mir jedenfalls immer recht umständlich vor und ich bin bisher daran gescheitert. Frag mich nicht warum.
Na dann kann man dir auch schlecht helfen.
burli hat geschrieben:So wie das bei Werkzeug aussieht muss man für jede Klasse und für jedes Pattern Muster eine Rule erstellen, oder?
Du hast die volle Flexibilität, kannst ja auch Rules dynamisch generieren lassen, über Introspection ist ja in Python fast alles trivial machbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich habe mich mit ASP MVC jetzt nicht ausführlich beschäftigt, aber ich ging davon aus, dass das ein Clone von Ruby on Rails für ASP wäre. Somit wäre etwas vergleichbares - wenn auch nicht für Python - erstmal RoR.

Ich meine auch, dass Pylons und/oder Turbo Gears relativ stark von RoR beeinflusst wären. Daher wäre das mein Tipp, wenn Django zu weit weg ist. Das wiederum verstehe ich allerdings nicht, denn auch Django ist doch ein MVC-basiertes System, welches zudem noch auf sehr ähnliche Weise eine zentrale Routing-Tabelle pflegt.

Was an C# und ASP.NET so toll sein soll, verstehe ich jedoch nicht. Denn mit etwas weniger syntaktischem Ballast, kann man doch das zitierte Beispiel auch in Python ausdrücken:

Code: Alles auswählen

def register_routes(routes):
    routes.ignore_route("{resource}.axd/{*pathinfo}")
    routes.map_route(
        name="Default",
        url="{controller}/{action}/{id}",
        defaults={"controller":"Home", "action":"index", "id":""})

class MvcApplication(system.web.HttpApplication):
    def application_start(self):
        register_routes(self.route_table.routes)

class HomeController(Controller):
    def index(self, id):
        return View()
Um ähnliches mit Django zu machen, müsste man sich einen passenden Dispatcher bauen. Hier ein ungetestetes Beispiel:

Code: Alles auswählen

url(r'^(?<controller>[^/]+)(?:/(?<action>[^/]+)(?:/(?<id>[^/]+))?)?$', dispatcher, name="default")

controllers = {
    'Home': HomeController
}

def dispatcher(controller="Home", action="index", id=""):
    return getattr(controllers[controller], index)(id)
Stefan
Antworten