Share via

Smart Client Architecture and Design Guide


patterns & practices Developer Center

patterns and practices Developer Center

David Hill, Brenton Webster, Edward A. Jezierski, Srinath Vasireddy and Mohammad Al-Sabt, Microsoft Corporation; Blaine Wastell, Ascentium Corporation; Jonathan Rasmusson and Paul Gale, ThoughtWorks; and Paul Slater, Wadeware LLC

June 2004

Related Links

Microsoft® patterns & practices Library

Application Architecture for .NET: Designing Applications and Services

Summary: This guide gives you prescriptive guidance on how to overcome architectural challenges and design issues when building smart client solutions. It also provides guidance on how to combine the benefits of traditional rich client applications with the manageability of thin client applications.

  • Smart Client Offline Application Block [Content link no longer available, original URL:;=en-US]


Who Should Read This GuideWhat You Must KnowWhat Is in This GuideCollaborators and ReviewersFeedback on the GuideCommunity and Newsgroup Support

Who Should Read This Guide

This guide is intended for software architects and developers who are developing smart client applications on the Microsoft .NET Framework using Windows Forms technology.

What You Must Know

To most effectively use this guidance, you should already have experience using .NET development techniques and technologies. You should be familiar with general distributed application architecture issues, and, if you have already implemented .NET Web application solutions, you should know your own application architecture and deployment pattern.

What Is in This Guide

This guide consists of a foreword by Microsoft .NET program manager Mark Boulter and the following chapters, each of which deals with a specific issue relevant to smart clients. Each chapter is designed to be read, in whole or in part, according to your needs.

Foreword by Mark Boulter

Chapter 1: Introduction

This chapter gives a high-level description of smart client applications and describes some of their basic properties and benefits. It then discusses some of the high-level architectural issues and provides guidance to help you determine whether a smart client architecture is right for your application.

Chapter 2: Handling Data

This chapter examines the various considerations for handling data on the client, including data caching, data concurrency, and the use of datasets and Windows Forms data binding.

Chapter 3: Getting Connected

This chapter describes a number of ways in which your application can connect to and use network resources and take advantage of processing power on the client computer, and discusses the strengths and weaknesses of each.

Chapter 4: Occasionally Connected Smart Clients

This chapter discusses the issues you might face when designing and building smart client applications that are occasionally connected to the network. The chapter explains the concept of connectivity, describes the two main approaches to implementing offline capabilities, and discusses some of the things you need to consider to make your application available when offline.

Chapter 5: Security Considerations

This chapter covers the smart client security issues. Smart clients distribute logic and data to the client computer; therefore, the security concerns are different from those associated with thin a client application, where data and logic are confined more to the server. This chapter discusses data security, authentication, authorization, and the role of code access security within a smart client application.

Chapter 6: Using Multiple Threads

This chapter discusses the issues surrounding the use of multiple threads in a smart client application. To maximize the responsiveness of your smart client applications, you need to carefully consider how and when to use multiple threads. Threads can significantly improve the usability and performance of your application, but they require very careful consideration when you determine how they will interact with the user interface.

Chapter 7: Deploying and Updating Smart Clients

This chapter describes how to best use the deployment features of the .NET Framework and the Windows platform in your smart clients, and provides guidance on how to choose between the deployment and update mechanisms available.

Chapter 8: Smart Client Application Performance

This chapter discusses how to optimize performance in your smart client applications. It examines steps you can take at design time, and looks at how you can tune your smart client applications and diagnose any performance issues.

Collaborators and Reviewers

  • Special thanks to our reviewers: Mark Boulter, Jamie Cool, Keith Yedlin, Richard Turner; Ivan Medvedev; Ram Singh, Philip Vaughn; Jay Schmelzer, Nathan Blecharczyk; Andy Dunn, Devendra Tiwari, Eric Leonard, Ken Perilman, Per Vonge Nielsen, Naveen Yajaman, and Chris Sells, Microsoft Corporation.
  • Special thanks to our external reviewer: Steven John Pack, Avanade.
  • Thanks to our editors and production team for helping to ensure a quality experience for the reader: Sharon Smith, Microsoft; Susan Filkins, Entirenet; and Tina Burden McGrayne, Entirenet; and Sanjeev Garg, Satyam Computer Services
  • Thanks to our test team: Prashant Bansode and Guru Shankar Sundaram, InfoSys Technologies Limited
  • Thanks to our product management: Eugenio Pace, Microsoft; and Vasu Vijay, Electronic Data Systems

Feedback on the Guide

We have made every effort to ensure the accuracy of this guide. We are particularly interested in feedback regarding the following:

  • Technical issues specific to recommendations
  • Usefulness and usability issues
  • Writing and editing issues

patterns & practices Developer Center

© Microsoft Corporation. All rights reserved.