This post originated from an RSS feed registered with .NET Buzz
by Sam Gentile.
Original Post: OCC is Full Edge and Synchronized Smart Client
Feed Title: Sam Gentile's Blog
Feed URL: http://samgentile.com/blog/Rss.aspx
Feed Description: .NET and Software Development from an experienced perspective - .NET/CLR, Rotor, Interop, MC+/C++, COM+, ES, Mac OS X, Extreme Programming and More!
It's really great to see Don Dodge from Microsoft really get my OCC architecture post and what we are doing at Adesso. As Don says, “Adesso’s secret sauce is a replication and synchronization engine that keeps application data and application logic synchronized across all devices. The Adesso platform tailors the application for each device. So for example, small form factor wireless devices get a version of the application and data that is usable for them while desktop PC’s get a richer version. The cool thing is that Adesso keeps the “state” of application data and logic synchronized across all devices.”
Yes, it is, and Cliff Reeves has worked in this space for many years at Lotus and at Microsoft states in his blog the problem this way;“So what's the right application platform for when you want to have your data all the time -- even when you aren't connected to the network? Well, it's some sort of continual and opportunistic replication. Whenever you have connectivity, data moves from your local PC or device to your server, and vice versa. When you are disconnected, you likely have all the data you need, and you can work on what you have. Combine this underlying replication model with a rich set of ways to view, create and protect data... and a rich set of semantics for data access rights,.. and you have a powerful and highly approachable way to build distributed business applications. “
Phil echoed that I got the OCC model right too but Clarke Scott in his excellent and thoughtful response, while agreeing that my post and OCC validates his thoughts and dreams for the future of business applications,” raises objections to the having a local DB; “Personally, I believe there should be NO local database. By having a database of each desktop the deployment of our applications becomes far more difficult. With Click Once we can simply roll out a new version and know that it will reach every desktop. But, if the new version of our application has database schema changes then clearly our deployment model has become far more complex.”
Good point Clarke; Ah, that's the hard part as I mentioned in my post. It is more complex but worth it! The deployment is not really an issue anymore but the schema changes are. I am not trying to sell Adesso here, but they handle all that seamlessly with schema changes. Outside of Adesso and in people's smart client architectures, I am still advocating the OCC model for truly disconnected Smart Clients because as Cliff says above, “So what's the right application platform for when you want to have your data all the time -- even when you aren't connected to the network? Well, it's some sort of continual and opportunistic replication. Whenever you have connectivity, data moves from your local PC or device to your server, and vice versa. When you are disconnected, you likely have all the data you need, and you can work on what you have.”
What we are truly talking about is having the full relational power and a full smart client OUT ON THE EDGE en-powering edge workers to have truly distributed business applications with all their data through opportunistic replication or synchronization. The simple route I mentioned and that Clarke Scott agrees to is a necessary but not sufficient step forward to full OCC. It is not enough to simply detect that the network has dropped off and start serializing stuff to XML and then re-hydrating that when the network is back. That doesn't give you a true OCC smart client. The edge worker, on the smart client, has to be empowered to work at complete power on the smart client and that involves having the full application with a relational database with all the needed business data and then synchronizing delta schema changes and the like to the server in the sky. Is it a hard problem? Yes, but a doable one (Adesso, Groove and Lotus Notes, Keith Pleas and Billy Hollis teach on it) have done it and this kind of architecture should be both studied and propagated into other OCC Smart Client designs architects are taking by using some form of Indigo/WSE to synchronize over in a loosely coupled fashion. The last thing I want to say is that this is not the design for all smart clients and it depends on your needs but to have what I consider an true OCC Smart Client, this is what I see.