Over the past couple days, I've been exploring some of the popular open source application frameworks out there. The ones that caught my attention were Spring.NET
, and ASP.NET MVC
All of these offer a nice way to implement web applications using the Model-View-Controller pattern. This pattern helps to separate the UI into it's logical pieces. Once implemented, it becomes much simpler to make powerful UIs with multiple views into the same information.
For an example of MVC, think of MS Word or MS Outlook. They can show you many different "views" of the same data. All of the views share the same centralized "model" (or data). You can even open two views of the same data and they'll stay in sync.
Try opening Outlook. Then right click your inbox and select "Open in New Window". Now send yourself a message and watch it pop into both windows simultaneously. That's a very tricky thing to do if the UI view "owns" the data. It's a lot simpler if your view simply shows the data that is in a centralized "model".
Now, take this to the web and you'll find that it's a little tricky to implement. Hence the aforementioned application frameworks.
I'll post more as I learn about them. At this point, I'm most interested in Spring.NET and ASP.NET MVC.
To learn more about the MVC pattern, check out the article on wikipedia.