New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Moxie Zhang on Nov 12, 2008
Given the number of frameworks now available for rich Internet application (RIA), choosing the right one, if not the best one, can be a difficult decision. Inside RIA recently completed an online survey that asked Flex/ActionScript RIA developers about their preferred frameworks.
The survey listed four major frameworks: Mate, PureMVC, Cairngorm and Swiz. The results speak for themselves. InsideRIA’s Rich Tretola says: “Well it appears that I was little off in my predictions. By getting over 30 percent of the vote, PureMVC has led the way, with Cairngorm taking second place, and Mate coming in third.”
In discussions surrounding the voting, one developer, Karl, shared why he does not use Cairngorm:
I found Cairngorm to be overly complex and, in a lot of ways, a square wheel. For example, why do I need to raise an event that gets handled by a front controller and routed to a command? Why not just invoke the command directly? The front controller pattern is trying to claim that keeping all of my commands in one place is agile. Actually, by removing the command's invocation from its natural context, I found myself spending a huge amount of time trying to remember where the source code related to the event was. After I finally found the correct code, I was trying to remember what I wanted to do with it. Overkill.
Others recommended frameworks that were not on the survey list. For example, one developer, Vipin, said:
We use Tom Bray's EasyMVC, which is very simple, but uses most of the concepts used by Cairngorm. There are lots of interesting features in the available frameworks, and we kind of mixed everything together and made an in-house framework, which is working nicely: faster development and multiple developers on the same project, and no confusion on how to deal with events and commands etc.
Chris Brind’s very thoughtful comments and suggestions really completed the survey:
The main advantage that a framework offers is a prescribed way of implementing an approach, be it MVC or ViewHelper, or whatever.
I would recommend that any team about to embark on a project take a close look at what frameworks are available and weigh up whether the benefits they will get from using an existing one will out-weigh writing their own or simply putting in place a convention and code-review process.
IMHO if you have quality, disciplined developers, a good convention is what is really required. But a lot of people don't like to work to conventions, and I imagine some of the more anal architects don't trust their developers enough to follow one, which is a sad case to start with.
Using Drools? See what you're missing! Get the Power of Drools with the Assurance of Red Hat
Monitor your Production Java App - includes JMX! Low Overhead - Free download
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
All of the listed frameworks require you to write a great deal of boilerplate plumbing code to get UI events to trigger data model changes. A better approach is to make UI widgets aware of data models and provide a standard processing pipeline for typical CRUD operations, which you can then override wherever you need to.
Interestingly the best implementations of the MVC pattern are in the Ajax space, not the flex space. For example, in SmartClient, just providing a visual component with a DataSource makes that component able to provide view, edit, validate and save interactions without further configuration. This works with any data provider, because the component only see the DataSource and it's data schema, and never knows the details of the underlying data provider.
This is just one example - there are many more in the example tree that this loads:
www.smartclient.com/#patternReuse
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
1 comment
Watch Thread Reply