You are previewing SilverlightTM 4 Problem — Design — Solution.
O'Reilly logo
SilverlightTM 4 Problem — Design — Solution

Book Description

A hands-on guide to Microsoft's latest rich application development technology: Silverlight 4

Silverlight 4 is the newest version of the rich Internet application toolkit that provides support for .NET capabilities over the Internet. With this latest release of Silverlight, Microsoft has revolutionized the way that Web applications can be created. This book uses the popular Problem — Design — Solution strategy to demonstrate how to harness the power and abilities of Silverlight 4 to add value to the overall user experience of a Web site.

Using a Web site created by the author as a reference point, you'll go through the steps of creating a live, fully functional application for the Web using Silverlight 4 and the Silverlight Control Toolkit. Along the way, the book addresses important design considerations, such as the use of Web Services and the SQL Server database.

  • Uses the popular Problem — Design — Solution format show you how to harness the power of the latest version of Silverlight, Microsoft's rich Internet application toolkit

  • Puts the author's own Web site to task as you learn to create rich user interfaces that integrate video, HTML, and social networking components

  • xplains system linking and data flow, end user interface, system architecture based on Silverlight 4 and .NET 4, and more

  • Includes coverage on integrating social networking and Facebook

With this book, you'll quickly get started using the new features of Silverlight 4 to enhance the user experience of a Web site.

Note: CD-ROM/DVD and other supplementary materials are not included as part of eBook file.

Table of Contents

  1. Copyright
  2. CREDITS
  3. ABOUT THE AUTHORS
  4. ABOUT THE TECHNICAL EDITOR
  5. ACKNOWLEDGMENTS
  6. INTRODUCTION
    1. WHO THIS BOOK IS FOR
    2. WHAT THIS BOOK COVERS
    3. WHAT YOU NEED TO USE THIS BOOK
    4. CONVENTIONS
    5. SOURCE CODE
    6. ERRATA
    7. p2p.wrox.com
  7. 1. FitnessTrackerPlus
    1. 1.1. PROBLEM
    2. 1.2. DESIGN
      1. 1.2.1. Determining Requirements for the Site
        1. 1.2.1.1. Scalable
        2. 1.2.1.2. Rich User Interface
        3. 1.2.1.3. Dashboard
        4. 1.2.1.4. Nutrition Log
        5. 1.2.1.5. Exercise Log
        6. 1.2.1.6. Measurements Log
        7. 1.2.1.7. Public Journal Page
        8. 1.2.1.8. Social Networking Integration
        9. 1.2.1.9. Browser History Support
        10. 1.2.1.10. Generate Revenue
        11. 1.2.1.11. Feel Like a Desktop Application
      2. 1.2.2. Silverlight 4 Features
        1. 1.2.2.1. Navigation Framework
        2. 1.2.2.2. New Data Controls
        3. 1.2.2.3. Control Toolkit
        4. 1.2.2.4. WCF RIA Services
        5. 1.2.2.5. Dynamic, Implicit, and BasedOn Styling
        6. 1.2.2.6. Additional Features
    3. 1.3. SOLUTION
      1. 1.3.1. Chapter 2
      2. 1.3.2. Chapter 3
      3. 1.3.3. Chapter 4
      4. 1.3.4. Chapter 5
      5. 1.3.5. Chapter 6
      6. 1.3.6. Chapter 7
      7. 1.3.7. Chapter 8
      8. 1.3.8. Chapter 9
      9. 1.3.9. Chapter 10
      10. 1.3.10. Chapter 11
      11. 1.3.11. Chapter 12
      12. 1.3.12. Getting Started
    4. 1.4. SUMMARY
  8. 2. Prepare to Be Popular
    1. 2.1. PROBLEM
    2. 2.2. DESIGN
      1. 2.2.1. Physical N-Tier Design
      2. 2.2.2. Load Balancing
      3. 2.2.3. Cloud Computing
      4. 2.2.4. Logical N-Tier Design
        1. 2.2.4.1. Presentation Layer
        2. 2.2.4.2. Silverlight 4 Data Controls
        3. 2.2.4.3. Presenting Data with the DataGrid
        4. 2.2.4.4. Rich Data Entry with the DataForm
        5. 2.2.4.5. Providing Paging with the DataPager
        6. 2.2.4.6. Element to Element Binding
        7. 2.2.4.7. Silverlight Toolkit
        8. 2.2.4.8. Providing Users with Multiple Themes
        9. 2.2.4.9. Implicit Styling
        10. 2.2.4.10. Dynamic Theme Selection
        11. 2.2.4.11. Data Access Layer
        12. 2.2.4.12. LINQ to SQL
        13. 2.2.4.13. Entity Framework
        14. 2.2.4.14. Business Logic Layer
        15. 2.2.4.15. ASMX Web Services
        16. 2.2.4.16. WCF Services
        17. 2.2.4.17. ADO.NET Data Services
        18. 2.2.4.18. WCF RIA Services
        19. 2.2.4.19. Adding WCF RIA Services Support
        20. 2.2.4.20. Limiting the Number of Returned Records
        21. 2.2.4.21. Data Storage Layer
        22. 2.2.4.22. SQL Server
        23. 2.2.4.23. Oracle
        24. 2.2.4.24. MySQL
        25. 2.2.4.25. Access
      5. 2.2.5. FitnessTrackerPlus Application Design
        1. 2.2.5.1. Landing Page
        2. 2.2.5.2. Fitness Dashboard
        3. 2.2.5.3. Food Log
        4. 2.2.5.4. Exercise Log
        5. 2.2.5.5. Measurement Log
        6. 2.2.5.6. Public Fitness Journal
    3. 2.3. SOLUTION
      1. 2.3.1. Physical Tier
      2. 2.3.2. Logical Tier
    4. 2.4. SUMMARY
  9. 3. Sign Me Up
    1. 3.1. PROBLEM
    2. 3.2. DESIGN
      1. 3.2.1. Home Page
        1. 3.2.1.1. User Interface
        2. 3.2.1.2. Database, Data Access
        3. 3.2.1.3. Business Logic, User Interface Code Behind
      2. 3.2.2. User Registration
        1. 3.2.2.1. User Interface
        2. 3.2.2.2. Database
        3. 3.2.2.3. Data Access
        4. 3.2.2.4. Business Logic
        5. 3.2.2.5. User Interface Code Behind
      3. 3.2.3. Login Control
        1. 3.2.3.1. User Interface
        2. 3.2.3.2. Database, Data Access
        3. 3.2.3.3. Business Logic
        4. 3.2.3.4. User Interface Code Behind
    3. 3.3. SOLUTION
      1. 3.3.1. Main Landing Page
        1. 3.3.1.1. User Interface
        2. 3.3.1.2. Silverlight Not Installed
        3. 3.3.1.3. Database, Data Access, Business Logic
        4. 3.3.1.4. User Interface Code Behind
      2. 3.3.2. Home View
        1. 3.3.2.1. User Interface
        2. 3.3.2.2. Database, Data Access, Business Logic
        3. 3.3.2.3. User Interface Code Behind
      3. 3.3.3. User Registration
        1. 3.3.3.1. User Interface
        2. 3.3.3.2. Database
        3. 3.3.3.3. Data Access
        4. 3.3.3.4. Business Logic
        5. 3.3.3.5. User Information Service
        6. 3.3.3.6. User Information Service Metadata
        7. 3.3.3.7. FitnessTrackerPlus MembershipProvider
        8. 3.3.3.8. FitnessTrackerPlus RoleProvider
        9. 3.3.3.9. FitnessTrackerPlus ProfileProvider
        10. 3.3.3.10. User Interface Code Behind
      4. 3.3.4. Login Control
        1. 3.3.4.1. User Interface
        2. 3.3.4.2. Database, Data Access
        3. 3.3.4.3. Business Logic
        4. 3.3.4.4. User Interface Code Behind
      5. 3.3.5. Dashboard
        1. 3.3.5.1. User Interface, Database, Data Access, Business Logic
        2. 3.3.5.2. User Interface Code Behind
      6. 3.3.6. Supplemental Pages
      7. 3.3.7. URI Mapping
    4. 3.4. SUMMARY
  10. 4. Welcome Home
    1. 4.1. PROBLEM
      1. 4.1.1. Adding Navigation
      2. 4.1.2. Providing Site Announcements
      3. 4.1.3. User-Selectable Themes
      4. 4.1.4. Account Settings
      5. 4.1.5. Adding a Dashboard
    2. 4.2. DESIGN
      1. 4.2.1. User Home Page
        1. 4.2.1.1. User Interface
        2. 4.2.1.2. Database, Data Access
        3. 4.2.1.3. Business Logic
        4. 4.2.1.4. User Interface Code Behind
      2. 4.2.2. Navigation Menu
        1. 4.2.2.1. User Interface
        2. 4.2.2.2. Database, Data Access, Business Logic
        3. 4.2.2.3. User Interface Code Behind
      3. 4.2.3. Site Announcements
        1. 4.2.3.1. User Interface
        2. 4.2.3.2. Database, Data Access
        3. 4.2.3.3. Business Logic
        4. 4.2.3.4. User Interface Code Behind
      4. 4.2.4. Account Settings
        1. 4.2.4.1. User Interface
        2. 4.2.4.2. Database, Data Access
        3. 4.2.4.3. Business Logic
        4. 4.2.4.4. User Interface Code Behind
      5. 4.2.5. Theme Selection
      6. 4.2.6. Fitness Summaries
    3. 4.3. SOLUTION
      1. 4.3.1. Global Variables
      2. 4.3.2. Navigation Menu
        1. 4.3.2.1. User Interface
        2. 4.3.2.2. Database, Data Access, Business Logic
        3. 4.3.2.3. User Interface Code Behind
      3. 4.3.3. User Home Page
        1. 4.3.3.1. User Interface
        2. 4.3.3.2. Database, Data Access, Business Logic
        3. 4.3.3.3. User Interface Code Behind
      4. 4.3.4. Dashboard
        1. 4.3.4.1. User Interface
        2. 4.3.4.2. Database, Data Access, Business Logic
        3. 4.3.4.3. User Interface Code Behind
      5. 4.3.5. Account Settings
        1. 4.3.5.1. User Interface
        2. 4.3.5.2. Database
        3. 4.3.5.3. Data Access
        4. 4.3.5.4. Business Logic
        5. 4.3.5.5. User Interface Code Behind
      6. 4.3.6. Theme Selection
        1. 4.3.6.1. User Interface
        2. 4.3.6.2. Database, Data Access, Business Logic
        3. 4.3.6.3. User Interface Code Behind
      7. 4.3.7. Site Announcements
        1. 4.3.7.1. User Interface
        2. 4.3.7.2. Database
        3. 4.3.7.3. Data Access
        4. 4.3.7.4. Business Logic
        5. 4.3.7.5. User Interface Code Behind
      8. 4.3.8. Fitness Summaries
    4. 4.4. SUMMARY
  11. 5. One More Slice Can't Hurt
    1. 5.1. PROBLEM
    2. 5.2. DESIGN
      1. 5.2.1. User Stories
      2. 5.2.2. Requirements
      3. 5.2.3. Food Log
        1. 5.2.3.1. User Interface
        2. 5.2.3.2. Database
        3. 5.2.3.3. Data Access
        4. 5.2.3.4. Business Logic
        5. 5.2.3.5. User Interface Code Behind
    3. 5.3. SOLUTION
      1. 5.3.1. User Interface
      2. 5.3.2. Database
      3. 5.3.3. Data Access
      4. 5.3.4. Business Logic
      5. 5.3.5. User Interface Code Behind
        1. 5.3.5.1. DataGrid Enhancements
        2. 5.3.5.2. Adding Code to Select or Deselect All Rows
        3. 5.3.5.3. Supporting the Right-Click Context Menu
        4. 5.3.5.4. Creating the GlobalCalendar Event Handling Logic
        5. 5.3.5.5. Supporting Custom Foods
    4. 5.4. SUMMARY
  12. 6. Time to Hit the Gym
    1. 6.1. PROBLEM
    2. 6.2. DESIGN
      1. 6.2.1. User Stories
      2. 6.2.2. Requirements
      3. 6.2.3. Exercise Log
        1. 6.2.3.1. User Interface
        2. 6.2.3.2. Database
        3. 6.2.3.3. Data Access
        4. 6.2.3.4. Business Logic
        5. 6.2.3.5. User Interface Code Behind
    3. 6.3. SOLUTION
      1. 6.3.1. User Interface
        1. 6.3.1.1. Control Layout
        2. 6.3.1.2. DataGrids for Each Exercise Type
        3. 6.3.1.3. Using the DomainDataSource Control
      2. 6.3.2. Database
      3. 6.3.3. Data Access
      4. 6.3.4. Business Logic
        1. 6.3.4.1. The ExerciseService Class
        2. 6.3.4.2. Retrieving the Exercise Log Entries
      5. 6.3.5. User Interface Code Behind
        1. 6.3.5.1. Implementing the ProgressBar Control
        2. 6.3.5.2. Creating New Exercise Log Entries
        3. 6.3.5.3. Supporting Custom Exercises
        4. 6.3.5.4. Updating and Deleting Exercise Log Entries
        5. 6.3.5.5. Using the VisualTreeHelper
        6. 6.3.5.6. Deleting Exercise Log Entries
        7. 6.3.5.7. Accessing Previous Entries
    4. 6.4. SUMMARY
  13. 7. Am I Working Hard Enough?
    1. 7.1. PROBLEM
    2. 7.2. DESIGN
      1. 7.2.1. User Stories
      2. 7.2.2. Requirements
      3. 7.2.3. Measurement Log
        1. 7.2.3.1. User Interface
        2. 7.2.3.2. Database
        3. 7.2.3.3. Data Access
        4. 7.2.3.4. Business Logic
        5. 7.2.3.5. User Interface Code Behind
      4. 7.2.4. Calculator Controls
    3. 7.3. SOLUTION
      1. 7.3.1. Measurement Log Page
        1. 7.3.1.1. User Interface
        2. 7.3.1.2. Database
        3. 7.3.1.3. Data Access
        4. 7.3.1.4. Business Logic
        5. 7.3.1.5. User Interface Code Behind
      2. 7.3.2. Calculator Controls
        1. 7.3.2.1. Calculating Body Mass Index
    4. 7.4. SUMMARY
  14. 8. Unfinished Business
    1. 8.1. PROBLEM
    2. 8.2. DESIGN
      1. 8.2.1. Food Summary
        1. 8.2.1.1. User Interface
        2. 8.2.1.2. Database, Data Access
        3. 8.2.1.3. Business Logic
        4. 8.2.1.4. User Interface Code Behind
      2. 8.2.2. Exercise Summary
        1. 8.2.2.1. User Interface
        2. 8.2.2.2. Database, Data Access
        3. 8.2.2.3. Business Logic
        4. 8.2.2.4. User Interface Code Behind
      3. 8.2.3. Measurement Summary
        1. 8.2.3.1. User Interface
        2. 8.2.3.2. Database, Data Access
        3. 8.2.3.3. Business Logic
        4. 8.2.3.4. User Interface Code Behind
      4. 8.2.4. Printing Support
    3. 8.3. SOLUTION
      1. 8.3.1. Food Summary
        1. 8.3.1.1. User Interface
        2. 8.3.1.2. Charting with the Silverlight Toolkit
        3. 8.3.1.3. User Interface Continued
        4. 8.3.1.4. Database, Data Access
        5. 8.3.1.5. Business Logic
        6. 8.3.1.6. User Interface Code Behind
      2. 8.3.2. Exercise Summary
        1. 8.3.2.1. User Interface
        2. 8.3.2.2. Database, Data Access
        3. 8.3.2.3. Business Logic
        4. 8.3.2.4. User Interface Code Behind
      3. 8.3.3. Measurement Summary
        1. 8.3.3.1. User Interface
        2. 8.3.3.2. Database, Data Access
        3. 8.3.3.3. Business Logic
        4. 8.3.3.4. User Interface Code Behind
        5. 8.3.3.5. Adding Printing Support
        6. 8.3.3.6. Home Page Screenshot
    4. 8.4. SUMMARY
  15. 9. Sharing Your Success
    1. 9.1. PROBLEM
    2. 9.2. DESIGN
      1. 9.2.1.
        1. 9.2.1.1. Requirements
      2. 9.2.2. Public Journal Settings
        1. 9.2.2.1. User Interface
        2. 9.2.2.2. Database
        3. 9.2.2.3. Data Access
        4. 9.2.2.4. Business Logic
        5. 9.2.2.5. User Interface Code Behind
      3. 9.2.3. Public Journal
        1. 9.2.3.1. User Interface
        2. 9.2.3.2. Database
        3. 9.2.3.3. Data Access
        4. 9.2.3.4. Business Logic
        5. 9.2.3.5. User Interface Code Behind
    3. 9.3. SOLUTION
      1. 9.3.1. Public Journal Settings
        1. 9.3.1.1. User Interface
        2. 9.3.1.2. Database
        3. 9.3.1.3. Data Access
        4. 9.3.1.4. Business Logic
        5. 9.3.1.5. User Interface Code Behind
      2. 9.3.2. Public Journal
        1. 9.3.2.1. User Interface
        2. 9.3.2.2. Database
        3. 9.3.2.3. Data Access
        4. 9.3.2.4. Business Logic
        5. 9.3.2.5. User Interface Code Behind
    4. 9.4. SUMMARY
  16. 10. Social Networking
    1. 10.1. PROBLEM
    2. 10.2. DESIGN
      1. 10.2.1. MySpace
      2. 10.2.2. MySpace Silverlight SDK
      3. 10.2.3. FitnessTrackerPlus — MySpace Application
      4. 10.2.4. Requirements
        1. 10.2.4.1. User Interface
        2. 10.2.4.2. Database
        3. 10.2.4.3. Data Access
        4. 10.2.4.4. Business Logic
        5. 10.2.4.5. User Interface Code Behind
    3. 10.3. SOLUTION
      1. 10.3.1. Getting Started
      2. 10.3.2. FitnessTrackerPlus MySpace Application
        1. 10.3.2.1. User Interface
        2. 10.3.2.2. Database
        3. 10.3.2.3. Data Access
        4. 10.3.2.4. Business Logic
        5. 10.3.2.5. User Interface Code Behind
        6. 10.3.2.6. Deploying the FitnessTrackerPlus MySpace Application
    4. 10.4. SUMMARY
  17. 11. This Site Doesn't Run Itself
    1. 11.1. GENERATING REVENUE FOR FITNESSTRACKERPLUS
    2. 11.2. PROBLEM
    3. 11.3. DESIGN
      1. 11.3.1. Advertising-Based Solutions
      2. 11.3.2. Google AdSense
      3. 11.3.3. Recurring Monthly Fees
        1. 11.3.3.1. In-House Credit Card Processing
        2. 11.3.3.2. PayPal Subscriptions
      4. 11.3.4. Which Revenue Solution is the Right One?
    4. 11.4. SOLUTION
      1. 11.4.1. Google AdSense
        1. 11.4.1.1. Getting Started with AdSense
        2. 11.4.1.2. Displaying Advertisements in FitnessTrackerPlus
      2. 11.4.2. PayPal
        1. 11.4.2.1. Getting Started with Website Payments Standard
        2. 11.4.2.2. Integrating PayPal Subscriptions with FitnessTrackerPlus
        3. 11.4.2.3. Integrating PayPal with User Registration
        4. 11.4.2.4. Validating Fields Before Processing Payment
        5. 11.4.2.5. Auto Return
        6. 11.4.2.6. Payment Data Transfer
        7. 11.4.2.7. Canceling Subscriptions
    5. 11.5. SUMMARY
  18. 12. Let's Go Live
    1. 12.1. PROBLEM
    2. 12.2. DESIGN
      1. 12.2.1. Supplemental Pages
        1. 12.2.1.1. About FitnessTrackerPlus
        2. 12.2.1.2. Contact
        3. 12.2.1.3. Password Reset
        4. 12.2.1.4. Privacy Policy
        5. 12.2.1.5. Terms of Service
      2. 12.2.2. Shared Hosting Providers
    3. 12.3. SOLUTION
      1. 12.3.1.
        1. 12.3.1.1. Creating the Contact Page
        2. 12.3.1.2. Enabling Password Resets
        3. 12.3.1.3. Discount ASP.NET
    4. 12.4. SUMMARY