Introduction:
Changing tack from previous posts, this article gives examples on how an application can be made without using Server-side Web Frameworks, thus reducing complexity and lowering costs.
I got many good replies to my recent post "The End Of Web Frameworks". In it I argued for the need to bypass all existing Web Frameworks on the server, to avoid their high complexity costs.
I realized the other day, on a related note, that Ajax in and of itself actually means not using Server-Side Web Frameworks. Think about it; Asynchronous JavaScript And XML which implements out-of-band channels where raw (XML) data is transferred between browser and server. Where in that proposal do you see the need to regenerate the client (again, and again) out of complex config files on the server?
Instead of just bashing though, I thought I should devote some time to explain what the alternative(s) are, and how one can go about designing an application without retorting to using Web Frameworks (WFs for short).
Proposal:
I have outlined fairly well the reasons for removing the web rendering from the server-side completely, and instead construct modular clients in JavaScript in my last post on this subject . The main points are the following:
1) Current server-side web framworks are very complex.
2) The reason that they are complex is because they try to generate a client out of the server.
3) If you remove the web client generation complexity from the server, the server becomes simpler.
4) If you program a client _on_ the client, using state of the art client frameworks, you get a simpler client (than the server-config-file client-in-parts, just add water, you had before).
5) This is a big win
The Client:
To begin with, on the client, nobody in his or hers right mind tries to reinvent the wheel and write hundreds of separate function supporting cross-browser oddities (read; IE) from scratch. Since several years ago there exists mature, well-tested cross-browser compatible "Ajax" libraries with copious documentation.
Good choices when coding your in-browser client;
1. Dojo 1.x
Url: http://dojotoolkit.org/
Reason: Dojo has a simple markup language, which the dojo 'runtime' will parse when loaded. It amounts to adding a tojoType="" tag to existing HTML markup, which make compact code.
Also, and more importantly, Dojo has very well designed data-binding structure, called dojo.data. Most high-end widgets such as Tree or Grid support reading their data (and sometimes writing as well) from a datastore, which can among other things be a csv file, an XML-generating service, or a custom component. This makes it easy to swap data sources, and presentations, without ever involving the server-side.
Dojo is also maybe the largest open "Ajax" framework in existence today, sporting encryption, Google Gears integration, cross-browser 2D and 3D graphics, charting, a powerful template-based, modularized and easily extensible widget system, complex Drag and Drop features (even in Trees), i18N support (currency, date, time, et.c.) for widgets and even support for widgets who have to display data right-to-left like Arabic, Japanese, et.c. Disclaimer: I'm a fanboy :).
2. Ext 2.0
Url: http://extjs.com/
Reason: Ext is perhaps the most polished "Ajax" framework, having very slick design and pixel-perfect looks. Ext also have powerful data bindings to its widgets, just like Dojo.
3. SmartClient.com (commercial but with LGPL client library).
Url; http://www.smartclient.com
Reason: The SmartClient guys have fairly covered all bases. They have about as much functionality as previously mentioned frameworks, but with the added twist of WSDL data bindings. This means that their widgets can read directly from a web service, or you can make a form which calls a web service directly. It is really quite a lot of stuff they're releasing as LGPL, so if you're missing anything from your current choice du jour, it might be a good idea to browse about the SDK. No, we're not affiliated, I just like what they're doing.
4. YUI (Yahoo User Interface)
Url: http://developer.yahoo.com/yui/
Reason: Very good data-binding widgets, such as their datatable (with good pagination examples), et.c.
5. TIBCO GI
Url: http://www.tibco.com/devnet/gi/
Reason: TIBCO has not only a very enterprise-y approach to building clients; Treetables (Matrices), extremely good support for WSDL Web services and a free visual GUI for creating browser-based clients.
The reason I'm not mentioning jQuery, Prototype or Mochikit and others is that I would like to emphasize the need for data binding and management as a key issue for a client-side framework, which is missing in the more basic ones, where the emphasis is more on design and effects.
The Server:
OK, we still need data from a server, of course. And if we place the client on the client, we don't need no client-code on the server, leaving us with a much more specific and "slim" server-side. Examples of servers which have well-defined interfaces to browser-based clients are;
1. DWR (Direct Web Remoting)
Url: http://getahead.org/dwr/overview/dwr
Reason: DWR is one of the slimmest offerings out there, which does the following, in their own words; "DWR is a RPC library which makes it easy to call Java functions from JavaScript and to call JavaScript functions from Java (a.k.a Reverse Ajax)". It is easy to get started with and fairly low on the configuration file department. It uses one XML file to map incoming queries to Java classes. It only returns data. Sweet. :)
2. Sling (RESTlike JCR implementation)
Url: http://incubator.apache.org/sling/site/project-information.html
Reason: Sling is a fairly young project which implements the Java Component API, which looks like a traditional web server, serving static pages from the outside, but where focus is on resource access and not page access. Each component can be implemented as a script (Rhino, Ruby, JSP or what have you). This means that Sling can be used as a stand-alone or servlet-droppable application which automatically maps requests for resources to specific scripts which generate data, thus making it more simple to focus on business-logic only on the server.
3. DIY (Because you're just serving yourself data anyway)
Url: http://localhost/yourapp
Reason: You get started in no time flat (if you're using scripting, like JSP or PHP). A little longer, perhaps, if you insist on compiling and bundling stuff up. You will not reinvent the wheel again and create yet another framework. Why? Because the client resides in a separate HTML file, which loads it's js libraries by itself. You will only implement security, business logic and serve data!
References;
The SOFEA team has a very detailed description of why server-side web frameworks are complex, in an excellent PDF.
Bob Bufone at rockstar apps has a very succinct and insightful post on client vs. server-side frameworks, which is a must-read. He ha a webinar on the subject with a downloadable PDF as well.
Per Olesen has also done some research into which server framework to choose for the development of Rich Internet Application apps, which is an interesting read.
Cheers,
PS
Wednesday, January 16, 2008
Subscribe to:
Post Comments (Atom)

11 comments:
I'd like to introduce you Appcelerator as well. We believe that server-oriented MVC are going to be a thing of the past soon.
You can try it out at http://try.appcelerator.org or download it from http://www.appcelerator.org.
Our product is open source and supports services built in Java, PHP, Rails, .NET, Python and Perl. The client uses a capability we call the web expression language that makes it fast and easy to build powerful RIA apps and integration them into your SOA.
Hi Jeff,
Sorry to not have you in the list from the beginning, but it's a big web :)
You have an interesting approach by using your own templating/macro language.
I like very much that you have separate backends, so that you're not tied to any one platform.
Cheers,
PS
Hi Nice Blog .If your time is less valuable, then it is probably less worthwhile to web time clock .
ugg bootsTHE SNOW wholesale ugg bootsSTARTED TO FALLWholesale handbags SEVERAL HOURS wholesale clothingBEFORE HER laborWholesale jewelry began.wholesale clothing A few flakes wholesale handbagsfirst, wholesale furniturein the dull Furniture Wholesalegray late-afternoon Wholesale jewelrysky,Ceramic tileand then Micro sd cardswind-driven swirls Wholesale clothingand eddies Wholesale Jewelryaround the edges Wholesale fashion jewelryof their wide Wholesale costume jewelryfront porch. ugg bootsHe stood by her wholesaleside at the windowwholesale electronics, watching sharp gusts of snow billow,skin care products
then swirl and drift to the ground. All around the neighborhood, lights came on, and the naked branches of the trees turned white.
[URL=http://www.uggbootsdirect.com]ugg boots[/URL]It had been [URL=http://www.uggbootsdirect.com/]uggs[/URL]an excellent [URL=http://www.ismachines.com]High pressure blower[/URL]pregnancy, without medical[URL=http://www.ismachines.com]Industrial fan[/URL] restrictions.[URL=http://www.ismachines.com]Industrial blower[/URL] Even so,[URL=http://www.ismachines.com]Commercial blower[/URL] he had not been [URL=http://www.downtownkey.com/]wholesale[/URL]able to make love [URL=http://www.downtownkey.com/]china wholesale[/URL]to her for [URL=http://www.downtownkey.com/]wholesale shoes[/URL]several months. [URL=http://www.downtownkey.com/]wholesale clothing[/URL]He found himself wanting [URL=http://www.accessasl.com/]watches[/URL]to protect her instead, to carry her up[URL=http://www.ismachines.com]pressure blower[/URL] flights of stairs, [URL=http://www.ismachines.com]pressure blowers[/URL]to wrap her in blankets,[URL=http://www.ismachines.com]fans[/URL] to bring her cups of custard. [URL=http://www.ismachines.com]blowers[/URL]"I'm not an invalid," she protested each time, laughing. "I'm not some fledgling you discovered on the lawn."
[URL=http://www.guildnav.com]wholesale[/URL]She was eleven[URL=http://www.hohotrade.com/atv-wholesale-9_51.html]wholesale atv[/URL] years younger than he was.[URL=http://www.hohotrade.com/wedding-dresses-wholesale-11_77_236.html]wedding dresses[/URL] He had first[URL=http://www.hohotrade.com/mp3-players-accessories-wholesale-13_98.html]MP3 player[/URL] seen her not much
[URL=http://www.guildnav.com/mp3-players-wholesale-5/]wholesale mp3[/URL] more than[URL=http://www.hohotrade.com/mp4-players-accessories-wholesale-13_105.html]Wholesale Mp4[/URL] a year ago, [URL=http://www.hohotrade.com/cameras-photo-wholesale-8.html]digital camera wholesale[/URL]as she rode up an[URL=http://www.hohotrade.com/consumer-electronics-wholesale-13.html]consumer electronics[/URL] escalator in a department [URL=http://www.guildnav.com/mp5-players-wholesale-7/]mp5 player[/URL]store downtown, [URL=http://www.guildnav.com/memory-cards-wholesale-14/]memory cards[/URL]one gray November[URL=http://www.guildnav.com/car-video-wholesale-2/]Car video players[/URL]Saturday while[URL=http://www.guildnav.com/gps-wholesale-955/]gps devices[/URL] he was buying ties.[URL=http://www.guildnav.com/bluetooth-wholesale-11/]bluetooth headset[/URL] He was thirty-three[URL=http://www.hohotrade.com/mp3-players-accessories-wholesale-13_98.html]Mp3 Wholesale[/URL] years old and[URL=http://www.guildnav.com/mp3-players-wholesale-5/ ]Mp3 Wholesale[/URL] new to Lexington,[URL=http://www.hohotrade.com/mp4-players-accessories-wholesale-13_105.html]Mp4 Wholesale[/URL] Kentucky, [URL=http://www.guildnav.com/8gb-mp4-watches-wholesale-8_853/]Mp4 Wholesale[/URL]and she had risen out of the crowd like some kind of vision, her blond hair swept back in an elegant chignon。
The Nets wow goldwent 9-7 in October and November, wow goldand they went 6-10 in January. wow goldThe falloff offensively haswow gold outweighed the improvementwow gold defensively. But we see wow goldnow that the fast start was a bit of a mirage.
There aredofus kamas three teams that appearkamas dofus twice above. The Thunderdofus kamas are on the right end of kamas dofusboth lists. They'veacheter dofus improved bothbuy kamas offensively and defensively, acheter kamasthanks in part to how horrible they were early in the season. They had nowhere to go but up.
These areworld of warcraft gold relatively smallcheap wow gold sample sizes, wow orand factors otherwow power leveling than how world of warcraft goldwell the wow poteam is playing (injuries, schedule)wow orhave certainly buy wow goldhad an effect. But the Nets'cheap wow gold improvementwow power leveling on the wow powerlevelingdefensive end dofus kamasisn't too hard tokamas dofus explain. They had a lot of roster turnover and Lord of the Rings Online Goldhave several LOTRO Goldyoung players, LOTR Goldincluding two rookies, flyff moneyin their rotation.flyff penyaSo, as their team buy flyff goldhas grown together ffxi giland their young buy ffxi gilguys have Final Fantasy XI giladjusted to the buy Warhammer goldspeed of theWarhammer gold game, they've improved defensively.EverQuest 2 gold"Experience is a eq2 platlot of it," says rookie Ryan Anderson, who has started the last 12 games in the absence of Yi Jianlian. "I know I've improved a ton defensively this season."
It could be that wow gold farmingmarks wow gold guidethe sell wow goldfirst wow gold pricesWheatieswow gold hacks appearance forwow gold guides Reed. cheap wow gold euOther wow gold gameWheaties make wow goldBlack wow gold shopHistory wow europe goldMonthwow fishinghonorees wow gold tradehave wow gold makingincluded wow gold onlineMuhammad Ali, wow hacksHank paladin wowAaron,paladin wow Jackie gold in wowRobinson, wow druidJosh wow gold mmoGibson, wow warlockSatchellwow gold tips Paige, wow free goldJames wow gold farming"Cool Papa" wow gold usBell, wow instant goldAlthea Gibson,wow map Arthur gold seller wowAshe, to wow goldWalter very cheap wow goldPayton, wow 1000 goldBill wow addonsRussell wow gold sellerand wow goldsJulius buy gold for wow"Dr. wow eu gold" Erving.wow europe The wow forumsnewwow gold exchange 15.6-ounce wow gold fastWheaties wow gold paypalpackage wow guidesis cheap gold for wownow selling wow goldavailablewow gold guide nationwide.Thewow gold price NBA, wow gold sellingfoundedwow private server in best wow gold1946, isgold on wowa globalof wow gold sports wow characterandwow gold on entertainmentwow gold and brand how to wowthatwow gold for sale features wow patch30buy cheap wow gold teams buy wow gold cheapin buying wow goldthe Unitedwow cd key Stateswow gold sale and buy wow accountsCanada. During gold for wowthe wow farming2008-09wow gold for season, wow guideNBA games sell wow goldwill reach guild wars gold215 countries cheapest gold wowand cheapest wow goldterritories wow accountin 41 wow accountslanguages. Thewow pvp It could be that Devin Harris was playing a little over his head earlier in the season. He shot 49 percent in the first month and 39 percent in January.
wholesale jewelry , supply vast kinds of styles handmade jewelry,mainly engage in handmade jewelry wholesale handmade jewelry,such as wholesale pearl wholesale crystalwholesale gemstone,wholesale costume jewelry,also wholesale fashion jewelry like wholesale swarovski crystal,wholesale beads,wholesaleturquoise,wholesale coral,wholesale costume jewelry ,shell jewelrycostume jewelry and discount jewelry, jewelry wholesale, just on AYpearl jewelry store.
fashion jewelry
Post a Comment