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.

07 November, 2006

Book Review: Code Complete 2nd Edition

Yesterday, I finished Steve McConnell's book "Code Complete, Second Edition." As a self taught developer, I am always looking for books, magazine articles and web posts that can help me improve my craft. This book has become an important part of my library.

One of my favorite parts of the book is the checklists at the end of sections. I have used the "Using Conditionals" Checklist multiple times in my work. The checklist has prompted me to refactor my code and to think about the code I write differently. The code looks cleaner, is more readily understood by myself and other developers.

Another benefit I have gotten out of the book was better ways to communicate with non-programmers about technical topics. I have used several of the items in the book with end users. The results have been positive. I was able to more clearly present technical issues to the end users. I have been able to develop a better working relationship with the end user. These same points have also caused me to think about my end users in a different light.

This book has already become a favorite of mine and I have a feeling I will referencing this book frequently in the future.

If you are a programmer, a developer, a coder, an architect or a manager of technical people this book should be in your library.

Book specs:
Paperback: 960 pages
Publisher: Microsoft Press; 2nd edition (June 2004)
Language: English
ISBN: 0735619670

One Reason Why I Don't Read the St. Louis Post-Dispatch

It is just a little past 8:00 PM Central time on Election Day. I have been trying for the last 10 minutes to find election results from the St. Louis area. I made a major mistake, I assumed the website for the St. Louis Post-Dispatch (www.stltoday.com) would have the numbers. Just to have a sanity checked, I checked out a couple of news websites. With in a 2 minutes, I was able to find information on the elections are shaping up.

I am so glad that I no longer waste my money on a subscription to a newspaper that can't do its job.

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...