Warum hat die .NET-Welt nichts wie Rails / Grails / Django / Roo? [geschlossen]

10

Es scheint mir, dass sich schnell entwickelnde Webplattformen die Welt der Webanwendungen radikal verändern werden.

Es ist fünf Jahre her, seit Rails 1.0 für Ruby veröffentlicht wurde, und seitdem haben wir Grails für Groovy, Django für Python und Roo für Java gesehen.

Aber meines Wissens (was wahrscheinlich begrenzt ist, da es sich um einen Java / Groovy-Programmierer handelt) gibt es kein ähnliches Framework für C #.

Gibt es so etwas? Wenn nicht, warum nicht?

Bearbeiten: Es ist durchaus möglich, dass ich nicht die richtigen Wörter verwende, wenn ich "schnelle Entwicklung" sage, aber ich spreche von Frameworks, mit denen Sie möglicherweise in 30 Minuten eine funktionierende Blog-Engine erstellen können. Sie konnten dies beispielsweise mit Java, Spring und Hibernate nicht vernünftigerweise tun, da die verschiedenen Konfigurationen erforderlich sind, damit Ihre Controller gefunden werden können, und sowohl die Konfiguration als auch der Code, die erforderlich sind, damit Ihre Entitäten bestehen bleiben und abgerufen werden können.

Ich spreche also von Frameworks, die das gesamte CRUD mit einer Konvention-über-Konfiguration-Mentalität behandeln. Wenn jemand die richtigen Worte für das hat, worüber ich spreche, lass es mich wissen.

Eric Wilson
quelle

Antworten:

5

Es scheint mir, dass es noch keinen Namen für diese Art von Framework gibt, über die Sie alle in diesem Thread sprechen. Ich nenne sie im Moment nur RAILS-ähnliche Frameworks : Frameworks, die die Produktivität steigern , indem sie andere vorhandene Frameworks orchestrieren, um die Grundanforderungen der meisten Webanwendungen zu lösen, aber gleichzeitig alle Komplexitäten vor dem Entwickler verbergen.

Unter Grundbedürfnissen verstehe ich die Implementierung eines Persistenzanbieters, eines Dependency Inyection Containers, eines Protokollierungstools, einer MVC-Plattform, einer HTML Template Engine, eines Website Template Starter Kits mit CSS-Voreinstellungen, eines Sicherheitsframeworks und einiger Javascript Library for AJAX-Funktionen und andere coole Sachen. Die RAILS-ähnlichen Frameworks orchestrieren alle diese Frameworks und Tools auf der Grundlage des Domänenmodells (der Entitäten Ihres Systems mit seinen Attributen).

Dank des Convention-over-Configuration-Prinzips müssen diese Frameworks nicht viele Konfigurationsdateien definieren, die normalerweise für die von ihnen orchestrierten Frameworks erforderlich sind (z. B. Spring, Spring MVC, Hibernate, Log4J usw.), wobei standardmäßig Konfigurationen basierend auf der Benennung angenommen werden , Struktur und Metadaten, die in denselben Klassendefinitionen enthalten sind.

Dank der dynamischen Sprachen, die diese Frameworks verwenden (wie Ruby, Groovy, Python, Clojure usw.), werden mit Ausnahme von SpringRoo, das dynamisches Verhalten in Java mithilfe von AspectJ implementiert, die Funktionen der darunter liegenden Frameworks erweitert und erweitert werden dem Entwickler so einheitlich und elegant zur Verfügung gestellt, dass er sich nur der zugrunde liegenden Technologien bewusst ist.

Schließlich werden dank der Gerüsttechnik Unit-Tests, Integrationstests, Controller und Ansichten automatisch für die Hauptfunktionen (CRUD) über jedes der vom Entwickler definierten Domänenobjekte generiert.

In der .NET-Welt wurde nach allen vorherigen Definitionen noch nichts entwickelt. Aber nichts hindert daran, dass dies bald geschieht. In der .NET-Welt sind bereits großartige Frameworks, Tools und Bibliotheken verfügbar, die von einem neuen RAILS-ähnlichen Framework für die CLR orchestriert werden können. Es gibt unter anderem Unity, Spring.NET und Castle Windsor für die Anforderungen von Dependency Inyection. Entity Framework 4, NHibernate und iBatis.NET sind ziemlich gute .NET-Persistenzanbieter. ASP.NET MVC ist mit Unterstützung für verschiedene Template Engines neben dem traditionellen ASP.NET stark angekommen.

Selbst wenn es niemandem gelingt, eine DLR-Sprache zum Erstellen eines solchen Frameworks zu verwenden, kann jeder mit ausreichendem Willen dem SpringSource-Pfad folgen und ein RAILS-ähnliches Framework mit einer statischen Sprache wie F #, C # oder VB.NET implementieren, wobei ein Aspekt verwendet wird -Orientierter Container (wie AspectSharp oder Gripper-LOOM.NET), um dynamisches Verhalten zu erhalten.

Ich würde gerne etwas über eine Gruppe von Leuten erfahren, die versuchen, ein solches Framework in .NET zu entwickeln.


quelle
4

Ich weiß nicht, was Sie unter "Webplattformen mit schneller Entwicklung" verstehen. Die Definition von "Rapid Development", mit der ich vertraut bin, hat nichts mit Sprachen, Paradigmen oder Frameworks zu tun, sondern mit der Verwendung von Rapid Prototyping und iterativer Entwicklung zur Erstellung eines Systems. Jede Sprache oder jedes Framework kann gleich gut verwendet werden.

Ich habe noch nie Grails oder Roo verwendet, aber Django und Rails sind beide MVC-Frameworks, sodass ihr Gegenstück in .NET ASP.NET MVC wäre .

Thomas Owens
quelle
1
Nun, ich würde ASP.NET MVC als Gegenstück zu Spring MVC sehen. Und zu sagen, dass Rails ein MVC-Framework ist, ist wie zu sagen, dass Stackoverflow eine QS-Site ist, wie ein Expertenaustausch. Es ist eine wahre Aussage, aber es fehlt das wichtigste Merkmal und der Grund für seinen wilden Erfolg.
Eric Wilson
1
Bitte erläutern Sie "das wichtigste Merkmal". Rails ist nichts anderes als ein MVC-Framework für die Ruby-Sprache. Das fängt alles ein.
Thomas Owens
2
Nun, Spring ist ein MVC-Framework für Java, aber es macht nicht viel, was Rails and Grails großartig macht. Zum Beispiel kann ich mit Grails nach dem Erstellen eines grails generate-allDomänenobjekts Folgendes eingeben und Grails erzeugt Controller, Ansichten und verwaltet die Persistenz.
Eric Wilson
3

Sie können in Visual Studio Steuerelemente per Drag & Drop auf eine Webseite ziehen und sie mit wenig bis gar keinem Code mit einer Datenbank verbinden. Ein Klick zum Testen / Anzeigen. Und ein Klick zum Hochladen auf eine Website (ok, geben Sie Ihre Anmeldeinformationen ein).

Nicht, dass dies die am häufigsten verwendete oder sogar empfohlene Methode ist, aber es wird wirklich nicht viel einfacher.

JeffO
quelle
0

Weil .NET-Webanwendungen einen Erstellungszyklus haben.

Ruby / Python sind sehr agile / flinke und dynamische Sprachen.

Wo ich arbeite, haben wir eine riesige .NET-Webanwendung und die Kompilierungszeiten sind vergleichbar mit einem typischen mittelgroßen bis großen C ++ - Programm.

In meiner Freizeit entwickle ich Web-Apps in Python und die Kompilierungszeit ist 0. Es gibt überhaupt keinen Kompilierungsschritt. Der laufende Interpreter lädt beim Speichern nur .py-Dateien neu.

hasen
quelle
1
Nun, Java-Anwendungen haben einen Erstellungszyklus, aber Spring Roo wirkt immer noch Wunder für Java / Spring-Anwendungen. Ich denke also, dass es hier noch andere Probleme gibt.
Eric Wilson