Rich Cloud Application (RCA) is a concept describing a new type of Rich Internet Application (RIA) served from the cloud. To the end user it would look exactly like RIA but with additional functions that take it to the next level - peer awareness, session awareness and duplex communication with a server. Client user doesn't have to know what is powering all these functions on the server, but presence of larger, richer context than before will be apparent - traditional client-server relationship will be effectively replaced with relationship with other users, some of which will be exactly at the same level of functionality and some will be at different level (power users, admins, etc.).
What this new rich context gives is the ability to create massive-scale applications that have not just scale in the back-end (traditional cloud) but also massive scale across their client base. Depending on how application is designed it might potentially multiply the amount of resources the application has at its disposal as clients effectively become part of the infrastructure application may depend on (with notion of loose coupling and random availability of course), but this is not the primary goal of RCA. The most important benefit is that applications can gain peer-to-peer and collaboration capabilities that scale massively in the cloud.
How does this all map to Microsoft technology stack? Microsoft cloud platform is Windows Azure, so all cloud-based services are going to be Azure applications with web or worker roles (depending on type of endpoints needed and whether some sort of background processing is needed on user's data). Rich Clients can be either managed applications or Silverlight applications. What Silverlight gives here is seemless deployment and much larger client base due to its cross-platform nature. For the purposes of RCA it doesn't lacks any of the functions compared to WPF. In next few posts I will show how various concepts of RCA can be implemented with Azure and Silverlight.
I am very interested in reading your future posts on RCA. This kind of technology would be very useful. I am especially interested in hearing how peer-to-peer communication is accomplished.
Thanks for your feedback Shaun.
I specifically didn't get into the details - after all it will depend on the client technology. Our implementation is going to be based on SL4 and Azure 1.0, so peer-to-peer will likely use new SL4 UDP stack that allows to skip client-to-server communication altogether and talk to someone who has the UDP socket open (which is a big deal in Azure where trafic to/from cloud is not free). This will require app to be trusted. For non-trusted, the regular polling duplex messaging (described in one of my previous posts) will be used and will be psuedo peer-to-peer as it will have Azure proxy in the middle. HTH.