Pergunta

It seems to me that rapid-development web platforms are going to radically change the world of web applications.

It has been five years since Rails 1.0 was released for Ruby, and since that time we have seen Grails for Groovy, Django for Python, and Roo for Java.

But to my knowledge (which is probably limited, being a Java/Groovy progammer) there is no similar framework for C#.

Does such a thing exist? If not, why not?

Edit: It's quite possible I'm not using the right words when I say "rapid-development," but I'm talking about frameworks that can conceivably allow you to build a working blog engine in 30 minutes. You couldn't reasonably do this with, say, Java, Spring, and Hibernate, given the various configuration needed to allow your controllers to be found, and both configuration and code necessary for your entities to persist and be retrieved.

So I'm talking about frameworks that handle all of the CRUD with a convention-over-configuration mentality. If someone has the right words for what I'm talking about, let me know.

Foi útil?

Solução

It seems to me that there is no name yet for this kind of framework you are all talking about in this thread. I call them for the moment just RAILS-like Frameworks: Frameworks that increment productivity by orchestrating other existing frameworks with the purpose of solving the basic needs of most web applications, but at the same time hiding all the complexities from the developer.

By basic needs I mean the implementation of a Persistence Provider, a Dependency Inyection Container, a Logging tool, an MVC platform, an HTML Template Engine, a Web Site Template Starter Kit with CSS presets, a Security Framework and some Javascript Library for AJAX features and other cool stuff. The RAILS-like Frameworks orchestrate all these frameworks and tools on the basis of the Domain model (the entities of your system with its attributes).

Thanks to the Convention-over-Configuration principle, these frameworks avoid the need of defining lots of configuration files usually required by the frameworks they orchestrate (like Spring, Spring MVC, Hibernate, Log4J, etc.), assuming configurations by default based on naming, structure and metadata included in the same classes definitions.

Thanks to the dynamic languages that these frameworks make use (like Ruby, Groovy, Python, Clojure, etc.), with the exception of SpringRoo that implements dynamic behaviour in Java by using AspectJ, the functionality that belongs to the frameworks underneath are extended and are made available to the developer in such a uniform and elegant manner that he/she is just aware of the underlying technologies.

Finally thanks to the Scaffold technique, unit tests, integration tests, controllers and views are automatically generated for the main functions (CRUD) over each one of the domain objects defined by the developer.

In the .NET world nothing has been developed yet, following all the previous definitions. But nothing prevents that from occurring soon. There are great frameworks, tools and libraries already available in the .NET world that can be orchestrated by a new RAILS-like framework made for the CLR. There are Unity, Spring.NET and Castle Windsor among others for the Dependency Inyection needs. Entity Framework 4, NHibernate and iBatis.NET are pretty good .NET Persistence Providers. ASP.NET MVC have strongly arrived with support for various Template Engines besides the traditional ASP.NET.

Even if nobody achieves to use a DLR language to build this kind of framework, anyone with enough will can follow the SpringSource path and implement a RAILS-like framework with some static language like F#, C# or VB.NET, making use of an Aspect-Oriented Container (like AspectSharp or Gripper-LOOM.NET) to obtain dynamic behaviour.

I would love to know about any group of people trying to develop such framework in .NET.

Outras dicas

I don't know what you mean by "rapid development web platforms". The definition of "rapid development" that I'm familiar with has nothing to do with languages, paradigms, or frameworks, but rather the use of rapid prototyping and iterative development to produce a system. Any language or framework can be used equally well.

I've never used Grails or Roo before, but Django and Rails are both MVC frameworks, so their counterpart in .NET would be ASP.NET MVC.

You could go into Visual Studio and drag and drop controls on a web page and connect them to a database with little to no code. One click to test/view. And one click to upload to a website (ok, enter credentials).

Not that this is the most used or even recommended way of doing it, but it really doesn't get much easier than this.

Because .NET web applications have a build cycle.

Ruby/Python happen to be very agile/nimble and dynamic languages.

Where I work, we have a huge .NET web application, and the compilation times are comparable to a typical medium-to-large C++ program.

In my spare I develop web apps in python, and the compilation time is 0. There's just no compilation step at all. The running interpreter just reloads .py files as you save them.

Licenciado em: CC-BY-SA com atribuição
scroll top