Thursday, July 01, 2004
I define a smart client application as a rich user interface application that resides on the client in a secure manner, connected to a back-end server, and is deployed over http.
Let's break that statement into its elements:
"Rich user interface" means Widows-based user interface. Users simply prefer rich user interface. They dislike the dull interface of the web. They want floating toolbars, graphics and 3D grids, that they can edit in-place, without clicking through dozens of web forms. The only way to do that using managed code today is using Windows Forms.
"In a secure manner" means it uses code-access security, to enable secure execution and deployment, provide the user with a consistent experience – regardless whether they try to access files, run scripts, download EXEs or controls, they will not be able to shoot themselves in the foot yet they can get a workable and usable application. There is no need for runtime user decision ("Do you trust all content coming from so and so..").
"Connects to a backend server" means that you would want to have the actual logic in one centralized place. In most scenarios where calling to the server involves crossing boundaries, web services will make the most sense. Boundaries can mean a security boundary (firewall, or domain trust), team boundary, component technology boundary, operating system, geographical boundary, etc.
"Deployed over http" means no-touch-deploy, ClickOnce, or any web server (not necessarily IIS) capable of servicing the download. This is essential to overcoming internal IT groups resistance to deploying applications to numerous end-stations.