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.
grails generate-all
Domänenobjekts Folgendes eingeben und Grails erzeugt Controller, Ansichten und verwaltet die Persistenz.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.
quelle
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.
quelle