What is a Smart Client?
A while ago I heard a definition on Smart Clients that was said to be from Microsoft. The person who told me the definition, said Smart Clients should be able to work disconnected. I totally disagreed with him, because I think in a lot of circumstances, working disconnected does not add anything to the user experience. Technically it’s a much larger challenge to provide disconnected functionality and when you require a user interface to compare local data against remote (server) data, you have to build many more screens then normal.
I think when your client can connect to a server via (for example) webservices and can also be updated automatically via internet or local intranet, you’ve got a pretty smart client there. Now just a minute ago, I came across a definition of a smart client, via the MSDN Smart Client site.
“Smart clients are easily deployed and managed client applications that provide an adaptive, responsive and rich interactive experience by leveraging local resources and intelligently connecting to distributed data sources.”
Now that’s a pretty smart definition. Some will probably interpret the “intelligently connecting” as offline capabilities, but for me it’s the connecting intelligently to my server via webservices. Securely, encrypted, reliable and what else you want.
Agreed? Or not?! 🙂
I think any application that uses a server connection (web services or other) should be able to provide some functionality without that connection. The old 2-tier apps that opened a database connection on startup and forgot to close them on shutdown ;-), but couldn’t work without one, are an example of how NOT to do it.
In my view you have a Service Agent interacting with the service on behalf of the application. It is more work but possible to cache data from the service on the client (offline store). Then even when the service is not available you can still have a meaningfull client application. Outlook is a great example of this.
A Smart Client takes that best features of a traditional Desktop App and the best features of a web app and combines them. I must say that Microsoft evangelizes this view on an architectural level (http://msdn.microsoft.com/smartclient/understanding/definition – note the “offline” paragraph ;-), but provide little support and guidance for it (Updater AppBlock, CAB & SmartClient on GotDotNet). Its easy to say, the app should this and that, quite another matter to build it, let alone have a customer pay for it.
In practice I would look into offline support only when the customer specifically asks for it. Your Smart Client App should always be able to handle connection errors gracefully, though.
>> Some will probably interpret the “intelligently connecting” as offline capabilities, but for me it’s the connecting intelligently to my server via webservices. Securely, encrypted, reliable and what else you want.
What else do you want?
Offline behavior of course!
Mobile applications should work mobile, also when there is no connection to the office available. A salesman for example wants to pick orders, also when he is in the desert, in the middle of the ocean or on every other place where he can sell something. He doesn’t want to depend on being online.
The smart client architecture and design guide tells us the following:
Smart client applications often have very diverse requirements, and so vary greatly
in design and implementation. However, all smart clients share some or all of the
following characteristics:
â—Ź Make use of local resources
â—Ź Make use of network resources
â—Ź Support occasionally connected users
â—Ź Provide intelligent installation and update
â—Ź Provide client device flexibility
Many applications do not need all of these characteristics. As you design your smart
clients, you will need to carefully consider your application scenario and decide
which of these characteristics your smart client application requires. Incorporating
all of these characteristics into your application will require very careful planning
and design, and in many cases you will need significant implementation resources.
@Marc : I agree with the connection errors.
@Karijn : I want to solve a business problem. My customer wants an application that can be very easily deployed, and look at data that changes every 15 minutes, and all data on a central server. The central server must be accessable over the internet, port 80.
I’m building a Windows Forms application that’s deployable via ClickOnce. It retrieves data over port 80 via xml/soap. Connection occurs intelligent because the location of the server can change, and via configuration it can be secured, encrypted and made reliable.
But according to some (read : you) it’s not Smart Client because it doesn’t support offline-capabilities.
I think my application has a client and it’s pretty smart also, because it can see when it needs to update and has a lot of other smart capabilities.
Therefor, I call it SmartClient. Thanks for letting my explain! 🙂
I just love (not!!) the definition in which Microsoft Office suddenly became a smart client: http://msdn.microsoft.com/smartclient/understanding/definition/
Well, I call Outlook 12 messing up my other e-mail client on installation a not so smart form of deployment.
For me, I’ve always viewed easy deployment over HTTP without installing something (other than the .NET framework) as the most important strong point. But I guess the term smart clients should be viewed as not necessarily related to “Zero Touch Deployment” (.NET 1.0 and .NET 1.1) and its more advanced version “ClickOnce” (.NET 2.0).
Maybe the term “smart client” is already fubar, like SOA.
For who wants to know, I got the definition I quoted from the survey they presented when I entered the MSDN Smart Client site.
Normally I don’t do these things, but for some reason I felt like it! 🙂
It is always funny to read somebody who is not agreeing with a definition !!!
Listen well… do you know what is a DEFINITION ?