You are previewing Smart Client Architecture and Design Guide.
O'Reilly logo
Smart Client Architecture and Design Guide

Book Description

Get expert guidance for designing and building smart client applications on the Microsoft® .NET Framework, including handling data, connecting to the back end, offline functionality, security features, multithreading, deployment, and performance.

Table of Contents

  1. Smart Client Architecture and Design Guide
    1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
    2. Foreword
    3. 1. Introduction
      1. What Is a Smart Client?
        1. Rich Client Applications
        2. Thin Client Applications
        3. Smart Client Applications
          1. Using Local Resources
          2. Using Network Resources
          3. Supporting Occasionally Connected Users
          4. Providing Intelligent Installation and Update
          5. Providing Client Device Flexibility
      2. Types of Smart Clients
        1. Windows Smart Client Applications
        2. Office Smart Client Applications
        3. Mobile Smart Client Applications
      3. Choosing Between Smart Clients and Thin Clients
      4. Smart Client Architectural Challenges
      5. Scope of This Guide
      6. How to Use This Guide
      7. Who Should Read This Guide
        1. Prerequisites
      8. Chapter Outlines
        1. Chapter 1: Introduction
        2. Chapter 2: Handling Data
        3. Chapter 3: Getting Connected
        4. Chapter 4: Occasionally Connected Smart Clients
        5. Chapter 5: Security Considerations
        6. Chapter 6: Using Multiple Threads
        7. Chapter 7: Deploying and Updating Smart Client Applications
        8. Chapter 8: Smart Client Application Performance
      9. Summary
      10. More Information
    4. 2. Handling Data
      1. Types of Data
        1. Read-Only Reference Data
        2. Transient Data
      2. Caching Data
        1. The Caching Application Block
      3. Data Concurrency
      4. Using ADO.NET DataSets to Manage Data
        1. Merging Data with Datasets
        2. Increasing the Performance of Datasets
      5. Windows Forms Data Binding
        1. Windows Forms Data Binding Architecture
        2. Binding Data to Windows Forms Controls
          1. Binding Controls to DataSets
          2. Navigating Through a Collection of Data
          3. Custom Formatting and Data Type Conversion
          4. Using the Model-View-Controller Pattern to Implement Data Validation
          5. Updating the User Interface When the Underlying Data Changes
      6. Summary
    5. 3. Getting Connected
      1. Loosely Coupled and Tightly Coupled Systems
      2. Communication Options
        1. .NET Enterprise Services
        2. .NET Remoting
        3. Message Queuing
        4. Web Services
      3. Choosing a Communication Option
      4. Designing Connected Smart Client Applications
        1. Use Coarse-Grained, Encapsulated Messages
        2. Avoid Distributed ACID Transactions
        3. Avoid Sending Datasets Across the Network
        4. Break Up Large Datasets
        5. Version Your Web Services and Assemblies
      5. Summary
    6. 4. Occasionally Connected Smart Clients
      1. Common Occasionally Connected Scenarios
      2. Occasionally Connected Design Strategies
        1. The Data-Centric Approach
        2. The Service-Oriented Approach
      3. Designing Occasionally Connected Smart Client Applications Using a Service-Oriented Approach
        1. Favoring Asynchronous Communication
        2. Minimizing Complex Network Interactions
        3. Adding Data Caching Capabilities
          1. Handling Changes to Reference Data
        4. Managing Connections
          1. Manual Connection Management
          2. Automatic Connection Management
        5. Designing Store-and-Forward Mechanisms
        6. Managing Data and Business Rule Conflicts
          1. Partitioning and Locking Data
            1. Data Partitioning
            2. Pessimistic Locking
            3. Optimistic Locking
          2. Tracking Unconfirmed or Tentative Data
          3. Handling Stale Data
          4. Reconciling Conflicts
            1. Automatically Reconciling Data on the Server
            2. Custom Reconciliation on the Client
            3. Third-Party Reconciliation
        7. Interacting with CRUD-Like Web Services
          1. Create
          2. Read
          3. Update
          4. Delete
      4. Using a Task-Based Approach
      5. Handling Dependencies
        1. Handling Dependencies at the Server
        2. Handling Dependencies at the Client
        3. Using Orchestration Middleware
      6. Summary
    7. 5. Security Considerations
      1. Authentication
        1. Smart Client Authentication Scenarios
          1. Installation
          2. Authenticated Application Access
          3. Authenticated Local Data Access
          4. Authenticated Network Access
        2. Choosing the Right Authentication Model
        3. Network Access Authentication Types
          1. Integrated Windows Authentication
            1. Web Services that Use Integrated Windows Authentication
          2. HTTP Basic Authentication
            1. Web Services that Use Basic Authentication
          3. HTTP Digest Authentication
          4. Certificate-based Authentication
          5. WSE-based Authentication
          6. Custom Authentication
        4. Gathering and Validating User Credentials
          1. Gathering Currently Logged-On User Credentials
          2. Gathering User Credentials Using a Logon Dialog Box
        5. Authentication Guidelines
      2. Authorization
        1. Types of Authorization
          1. Resource-based Authorization
          2. Role-based Authorization
        2. Adding Authorization Capabilities to Your Application
          1. Performing Declarative Demands Using the PrincipalPermissionAttribute
          2. Performing Imperative Demands Using the PrincipalPermission Object
          3. Performing Role Checks Using the IsInRole Method
          4. Performing Role Checks for Custom Authentication
        3. Authorization Guidelines
        4. Authorizing Functionality When the Client Is Offline
        5. The Authorization and Profile Application Block
      3. Input Validation
      4. Handling Sensitive Data
        1. Determining Which Data to Store on the Client
        2. Techniques for Protecting Sensitive Data
          1. Ensure that Only Authorized Users can Access Data
          2. Consider Using EFS to Encrypt Files
          3. Consider Using DPAPI to Avoid Key Management Issues
          4. Consider Storing Hash Values Instead of Plain Text
          5. Consider Isolated Storage for Partially Trusted Applications
          6. Protect Private Keys
      5. Code Access Security
        1. Code Access Security Permission Resolution
        2. Designing for Code Access Security
          1. Designing Partially Trusted Applications
            1. Know Your Application Deployment Scenarios
            2. Avoid Permission Demands that Raise Exceptions
            3. Use the Demand/Assert Pattern for Partially Trusted Callers
            4. Consider Using Strong-Named Assemblies
            5. Avoid Giving Full Trust to Restricted Zones
          2. Designing Fully Trusted Applications
      6. Summary
    8. 6. Using Multiple Threads
      1. Multithreading in the .NET Framework
        1. Choosing Between Synchronous and Asynchronous Calls
        2. Choosing Between Foreground and Background Threads
        3. Handling Locking and Synchronization
        4. Using Timers
      2. When to Use Multiple Threads
        1. Communicating Over a Network
        2. Performing Local Operations
        3. Distinguishing Tasks of Varying Priority
        4. Application Startup
      3. Creating and Using Threads
        1. Using the ThreadPool Class
        2. Using the Thread Class
        3. Using Delegates
        4. Calling Web Services Asynchronously
      4. Using Tasks to Handle Interaction Between the UI Thread and Other Threads
        1. Defining a Task Class
        2. Using the Task Class
      5. Summary
    9. 7. Deploying and Updating Smart Client Applications
      1. Deploying the .NET Framework
        1. Preinstalling the .NET Framework
        2. Installing the .NET Framework with an Application
      2. Deploying Smart Client Applications
        1. No-Touch Deployment
          1. Limitations of No-Touch Deployment
            1. Restricted Default Security Settings
            2. Unreliable Offline Functionality
            3. No Transacted Installations
        2. No-Touch Deployment with an Application Update Stub
        3. Running Code from a File Share
        4. Xcopy Deployment
        5. Windows Installer Packages
      3. Choosing the Right Deployment Approach
      4. Deploying Smart Client Updates
        1. No-Touch Deployment Updates
        2. Automatic Updates
        3. Updates from a File Share
        4. Xcopy Updates
        5. Windows Installer Updates
      5. Choosing the Right Update Approach
      6. Summary
    10. 8. Smart Client Application Performance
      1. Designing for Performance
        1. Data Caching Guidelines
        2. Network Communications Guidelines
        3. Threading Guidelines
        4. Transaction Guidelines
        5. Optimizing Application Startup Time
        6. Managing Available Resources
        7. Optimizing Windows Forms Performance
          1. Using BeginUpdate and EndUpdate
          2. Using SuspendLayout and ResumeLayout
          3. Handling Images
          4. Use Paging and Lazy Loading
          5. Optimizing Display Speed
      2. Performance Tuning and Diagnosis
        1. Setting Performance Goals
          1. Considering the User’s Perspective
          2. Considering the Application Operating Environment
        2. Performance Tuning Process
        3. Performance Tools
          1. Using Performance Logs and Alerts
          2. Instrumentation
          3. CLR Profiler
      3. Summary
      4. References
    11. A. Collaborators and Reviewers
    12. Index
    13. SPECIAL OFFER: Upgrade this ebook with O’Reilly