To resume quickly, after the old client/server model where the software was duplicated on each client we passed to the thin client where the software was concentrated on the applications server and make easier deployment and support. But thin client have been criticized by users for the lack of interaction with desktop tools (particulary with the Office suite) and the dependence with the network because of HTML and HTTP. Then the rich client appear : it gives to users better ergonomy and less dependency to the network. The software intelligence is now fairly shared between server and client. The underneath diagram presents this evolution :
Then a new acronym is dedicated for the rich client : RIA. This concept is used a lot and i think have to be more clearly defined. The underneath diagram suggest a decomposition of RIA in 2 subgroup : the RDA (Rich Desktop Applications for oriented desktop applications, executed on the client without a browser) and the RWA (Rich Web Applications for web oriented applications executed in a browser).
This 2 subgroup could be extended to platform concept which suggest to help developers create applications with a pre initialized application and a lot of basics and utils components pluggable like help, preferences, splashscreen, view, …
The question is now which branch i have to choose between desktop or web to develop my application. The still problem is the deployment for desktop application, it have been the success of thin client where no deployment is needed (if you have a browser installed 😉 ). It’s not a problem now for Java because of the Java Web Start, for Microsoft and Micromedia the question is different and they suggest to use the browser with the dedicated plugin for WPF/e and Flex but is it really RDA ?
So the frontier between RDA and RWA is not always obvious. In one hand with Firefox/XUL we have a browser where desktop components can be added, in other hand a Flex application is linked to the browser only by the plugin, the interaction is possible but the Flex components are detached of the browser.
It bring us to the RSP (Rich Server Platform) concept which suggest to combine browser and desktop in the same application.
In thie RIA concept the 5 layers software architecture is always aware but have to evolve to take care of rich client features in particularly for RDA.
Application and enterprise layer have to be separate in 2 part : one for the server another for the client. Between this separation a new layer appear for the communication. It’s in this layer web services is used but not only them. Among of frameworks implementing this layer there are WebObjects EODistribution, Cayenne, Spring remoting. They don’t use web services so there is others alternatives. It’s Microsoft choice with WCF which integrate more exchange possibility (WCF represent 70% of the .NET 3.0).
Well, all of this don’t help me to answer to my question, which branch between desktop or web i have to choose ? The rich client is a real evolution for the client side but there is a lot of technology to implement it and not always concurrent. Maybe we have to define which technology or branch is appropriate for a set of needs.