Smart client and Integration aspects.
The world is going toward integration between systems (not applications). I personally spend time on IT aspects of companies merging and acquisitions. Usually merging and acquisitions process emphasis Integration problems. Integrating systems to operate as single system or to enable one system to gain other system data and logic is not simple task. This integration task becomes harder if those systems developed with different technologies and nightmare if each system develops for specific operation system. Acquisitions process emphasis Integration problems but Integration problems may raise on other scenarios, such as your company wants to share data and knowledge with other companies around the glob.
XML, the cockroach protocol HTML and web development seems to be the optimal solution for developing Integration aware applications. The server part of web application is black box of application data and logic and it accessible for other application from all around the glob by web services. HTML is the visualization layer of web application and it can be easily integrated into other application visual layer. HTML let us easily combine different formats of data from different data sources and present those data formats on single page for the end user.
Smart client are interesting and powerful applications that combine windows application easy development and web zero deployment to create window application. Smart client application download to the user client, take advantage of windows GUI abilities and use remote web service to get data. While smart client are very sexy and pushed by Microsoft there are some aspects with smart clients that don’t feet the System integration promise land. First smart clients download application logic to the client thus make it hard to consume application logic from other application. Second, visualization layer of application are integral part of application and can't be used from other applications. Yes I know that you can create loader application, assemblies with forms and to use XML to load dynamically Assemblies or visual aspects. But no matter how you look at smart clients they miss integration simplicity as you can find using WEB applications.
You can argue why we should need to integrated visual aspect, after all we can always use SOAP to integrate between applications. Well, this argument may be valid theoretical but it failed in practical world. Just on Friday one of my clients calls me to suggest a solution for integration issue. His company buys one of his competitors mainly for data they own. They use data, link analysis and visualization algorithms to display data in such a way that the user can come into conclusion fast and easily. He wants to use this ability in his IT systems but his company system is running on browsers while the competitor application is stand alone C++ application. Now to integrate such application you need to embed visual aspect of the application due to visualization algorithms used to show link analysis results.
I'm not saying that smart clients are bad or evil. I just argue that when you choose architecture for your application take in account organization overall demands and vision. If your organization sees integration, for one reason or another, as one of the organization target I don’t think that smart clients are the right choice.