09 November, 2006

Learning about Smart Client Applications

My day job is requiring me to do some Smart Client development. Since my knowledge on the topic is rather limited, I am thinking a little research is in order. My research started with the MSDN website and had lead me to putting together this quick little post. I hope others find it useful.

A Smart Client application is the combination of rich and responsive user interface with the ability to work offline. A smart client can be designed to run on a desktop PC, laptop, Tablet PC, Pocket PC and Smartphones.

A well-designed Smart Client can take advantage of a rich user experience while providing the manageability benefits of a thin client. From a developers point of view this allows me to write programs that can take advantage for the client PC, provide a rich user experience, access to wide variety of local and remote services, and application manageability of a website.

Smart Clients applications are broken down into three broad groups: Windows Smart Client applications, Office Smart Client Applications, and Mobile Smart Client applications.

Windows Smart Client Applications are typically Windows Forms. This type of application provides the familiar Windows user interface. A Windows Smart Client would run on a desktop, laptop or Tablet PC.

Office Smart Client Applications are tightly coupled with one or more Microsoft Office application.

Mobile Smart Client Applications are designed to run on smart devices like the Pocket PC and Smartphones. These types of devices has limited screen size, limited memory and limited processing power. The ability is work in a non-connected mode is paramount. Applications are developed for the .NET Compact Framework.

Smart Clients can take advantage of the local machines resources. This means the application will run in a disconnected mode. I will not have control over the data on the user’s machine and the logic in the users’ version of the application could be out of date or using old logic.

Handling data in a Smart Client Application will take considerable thought. Data is broken in two major types: read-only reference data and transient data.

Read-only reference data is data that the client application will not change. This includes static or lookup data, data to support the data validation process, and presentation data. This type of data will be updated infrequently.

Transient data will be created, updated, and deleted by the client application. One of the major challenges is handling data changes from multiple clients.

Caching data is an important component to a Smart Client. An application can get a performance boost from caching data. The caching mechanisms should be able to handle both read-only reference data and transient data. The goal is to update the client’s data at any time regardless of the data of the data. You do not want to lose any changes the transient data the user has made. See the Caching Application Block for more information.

To keep data in synch, there are two main approaches: pessimistic concurrency or optimistic concurrency. Both of the approaches are similar in concept to pessimistic and optimistic locking in the database.

DataSets are one way of helping with the managing and syncing of the data. See the Microsoft documentation on ADO.NET for more information. DataSets offer a few benefits: DataSets can be treated like a database, DataSets can be bound to user controls, and DataSets keeps track of changed data.

There are multiple ways for a Smart Client to communicate with other resources: .NET Enterprise Services, .NET remoting, Message Queuing (MSMQ), and web services.

.NET Enterprise services provide access to COM+ service infrastructure. .NET remoting provides remote procedure call (RPC) mechanism to .NET components. MSMQ provides message-base access. Web services provide an industry standard was of communicating.

There are two major architectural approaches: data-centric and service-oriented. A data-centric approach utilizes a local installed database. The database handles the synchronization process, conflict resolution, and propagating the changes. The service-oriented approach stores data in messages and arranging the messages. Once the connection has been reestablished the messages to the server for processing.

There are seven main considerations for security: Authentication, Authorization, Data Validation, Protecting Sensitive Data, Auditing and Logging, Exception Management, and Change and Configuration Management.

Authentication uniquely identified the user of the client application. Authorization determines what resources the user can access. Data validation ensures on valid data is accepted by the application. Protecting sensitive data provides methods for storing and transmitting data. Auditing and logging keeps track of events and user action. Exception management ensures errors are well handled. Change and configuration management assists in tracking configuration changes.

There are multiple options of deploying a Smart Client: no-touch deployment, no-touch deployment with and application update stub, running code from a file share, xcopy and Windows installer packages.

No-touch deployment requires putting the application on a web server and sharing the link. No-touch deployment with an application update stub method follows the no-touch deployment process with the addition downloading the rest of the application to the local disk. Running code from a share requires a file share that all the users can access. Xcopy is to copy the files directly to the client. Windows installer package method is that traditional way most people think of deploying an application.

Deploying Smart Client updates also have multiple options: No-touch deployment, automatic updates, updates form a file share, xcopy updates and Windows installer package deployment.

No-touch deployment updates are simply copying the new files to a web server, when your application starts is checks the web server for updates. Automatic updates involve building the updating infrastructure in the Smart Client application. Updates from a file share involve replacing the old code on the file share with the new code. Xcopy updates are also really simple. Just copy the new files. Windows installer updates are to create an installer package with the new code.

Smart Client applications are part of the wave of the future. Smart Clients give the user a rich experience while give administrators and vendors a way of updating application with fewer headaches. I look forward to learning more.

No comments:

Challenging myself to learn something new

I have recently set a big challenge for myself. I want to know about Machine Learning . To add to the challenge, I am trying out usin...