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