O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Building a Web 2.0 Portal with ASP.NET 3.5

Book Description

If you think you're well versed in ASP.NET, think again. This exceptional guide gives you a master class in site building with ASP.NET 3.5 and other cutting-edge Microsoft technologies. You learn how to develop rock-solid web portal applications that can withstand millions of hits every day while surviving scalability and security pressures -- not just for mass-consumer homepages, but also for dashboards that deliver powerful content aggregation for enterprises.

Written by Omar AL Zabir, co-founder and CTO of Pageflakes, Building a Web 2.0 Portal with ASP.NET 3.5 demonstrates how to develop portals similar to My Yahoo!, iGoogle, and Pageflakes using ASP.NET 3.5, ASP.NET AJAX, Windows Workflow Foundation, LINQ and .NET 3.5. Through the course of the book, AL Zabir builds an open source Ajax-enabled portal prototype (available online at www.dropthings.com), and walks you though the design and architectural challenges, advanced Ajax concepts, performance optimization techniques, and server-side scalability problems involved.

You learn how to:

  • Implement a highly decoupled architecture following the popular n-tier, widget-based application model
  • Provide drag-and-drop functionality, and use ASP.NET 3.5 to build the server-side part of the web layer
  • Use LINQ to build the data access layer, and Windows Workflow Foundation to build the business layer as a collection of workflows
  • Build client-side widgets using JavaScript for faster performance and better caching
  • Get maximum performance out of the ASP.NET AJAX Framework for faster, more dynamic, and scalable sites
  • Build a custom web service call handler to overcome shortcomings in ASP.NET AJAX 1.0 for asynchronous, transactional, cache-friendly web services
  • Overcome JavaScript performance problems, and help the user interface load faster and be more responsive
  • Solve scalability and security problems as your site grows from hundreds to millions of users
  • Deploy and run a high-volume production site while solving software, hardware, hosting, and Internet infrastructure problems
Building a Web 2.0 Portal with ASP.NET 3.5 also presents real-world ASP.NET challenges that the author has solved in building educational and enterprise portals, plus thirteen production disasters common to web applications serving millions of users. If you're ready to build state-of-the art, high-volume web applications, this book has exactly what you need.

Table of Contents

  1. Preface
    1. Who This Book Is for
    2. How This Book Is Organized
    3. What You Need to Use this Book
    4. Conventions Used in This Book
    5. Using Code Examples
    6. Safari® Books Online
    7. How to Contact Us
    8. Acknowledgments
  2. 1. Introducing Web Portals and Dropthings.OmarALZabir.com
    1. Defining a Web Portal
    2. Defining a Web 2.0 Portal
    3. Using a Web Portal
      1. How an Ajax-Powered Start Page Is Different
    4. Navigating Dropthings
    5. Using ASP.NET AJAX
    6. Using C# 3.0 and .NET 3.5
    7. Summary
      1. Additional Resources
  3. 2. Architecting the Web Portal and Widgets
    1. Object Model
      1. Object Model
      2. Application Components
      3. Data Model
      4. Solution Files
      5. Update Panels
      6. Drag-and-Drop Operations
    2. Using a Widget Framework
      1. Designing the Widget Container
    3. Adding Widgets
    4. Maximizing the First-Visit Experience
    5. Rendering a Second-Visit Experience
    6. Improving ASP.NET AJAX Performance
      1. Server-Side Rendering Versus Client-Side Rendering
      2. Runtime Size Analysis
      3. Reducing Extenders and UpdatePanels to Improve Browser Response
      4. Comparing Debug Mode Versus Release Mode
    7. Adding Authentication and Authorization
    8. Preventing Denial-of-Service Attacks
    9. Summary
  4. 3. Building the Web Layer Using ASP.NET AJAX
    1. Implementing the Start Page of a Web Portal
      1. The Header Area
      2. Add Stuff Area: The Widget Gallery
      3. The Tab Bar
      4. The Widget Area: The Three-Column Widget View
      5. Loading the Start Page
    2. Building a Custom Drag-and-Drop Extender for a Multicolumn Drop Zone
    3. Implementing WidgetContainer
      1. WidgetContainer.cs
        1. Updating
        2. Saving and editing
        3. Adding InstanceID
        4. Closing the widget
    4. Building Widgets
      1. Building a Flickr Photo Widget
        1. Flickr widget UI controls
      2. Building an Atom or RSS Widget
    5. Page Switching: Simulating a Nonpostback Experience
    6. Using the Profile Object Inside a Web Service
    7. Implementing Authentication and Authorization
    8. Implementing Logout
      1. Handlers
    9. Summary
      1. Additional Resources
  5. 4. Building the Data and Business Layers Using .NET 3.5
    1. Introducing LINQ to SQL
    2. Building the Data Access Layer Using LINQ to SQL
      1. Generating a Data Model Using the Visual Studio 2008 Designer
      2. Manipulating Data with a Database Helper
      3. Cleaning Up Inactive User and Related Data
    3. Introducing Windows Workflow Foundation
    4. Building the Business Layer Using WF
      1. Mapping User Actions to a Workflow
      2. Dealing with First Visit by a New User (NewUserSetupWorkflow)
      3. Dealing with the Return Visit of an Existing User (UserVisitWorkflow)
      4. Adding a New Tab (AddNewTabWorkflow)
      5. Moving Widgets (MoveWidgetInstanceWorkflow)
    5. Implementing the DashboardFacade
      1. Implementing the WorkflowHelper Class
    6. Summary
  6. 5. Building Client-Side Widgets
    1. Delaying Server-Side Widget Loading
      1. Delaying RSS/Atom Widget Loading
      2. Delay Flickr Photo Widget Loading
      3. Problems with Delaying Widget Loading
    2. Content Proxy
      1. Content Proxy Web Service
      2. Challenges with the Proxy Web Service
    3. Building a Client-Side RSS Widget
    4. Building a Client-Side Flickr Widget
    5. Summary
  7. 6. Optimizing ASP.NET AJAX
    1. Combining Multiple Ajax Calls into One Call
    2. Timing and Ordering Ajax Calls to the Server
      1. Bad Calls Make Good Calls Time Out
        1. Common problems
      2. Browsers Fail to Respond with Two or More Calls in Queue
      3. Caching Web Service Responses on the Browser
    3. Using HTTP GET Calls Instead of HTTP POST
    4. Working with the this Function
    5. Summary
  8. 7. Creating Asynchronous, Transactional, Cache-Friendly Web Services
    1. Scalability Challenges with Web Services
    2. Asynchronous Web Methods
    3. Modifying the ASP.NET AJAX Framework to Handle Web Service Calls
      1. Initializing the Cache Policy
    4. Developing Your Own Web Service Handler
      1. Basics of Asynchronous Web Service Handlers
      2. Adding Transaction Capability to Web Methods
      3. Adding Cache Headers
      4. Using the Attributes
      5. Handling the State Object
    5. Making an Asynchronous and Cache-Friendly Proxy
    6. Scaling and Securing the Content Proxy
      1. Maintaining Speed
        1. Connection management
        2. DNS resolution
      2. Avoiding Proxy Abuse
      3. Defending Against Denial-of-Service Attacks
    7. Summary
  9. 8. Improving Server-Side Performance and Scalability
    1. Instrumenting Your Code to Identify Performance Problems
    2. Optimizing the HTTP Pipeline
    3. Optimizing ASP.NET 2.0/3.5 Before Going Live
    4. Optimizing Queries in the ASP.NET Membership Tables
    5. Optimizing the ASP.NET 2.0/3.5 Profile Provider Before You Go Live
      1. Accessing the Use of Profile Provider
      2. Using Email for a Username
      3. Changing a Username in the ASP.NET 2.0/3.5 Membership Provider
      4. Rendering Page Parts As JavaScript
        1. Using HttpModule
        2. The HttpModule in detail
    6. ASP.NET Production Challenges
      1. Fixing Cookie Authentication Problems
        1. Generating the key
        2. Each machine requires a key
    7. Redirecting Traffic from an Old Web Site to a New One
    8. Summary
  10. 9. Improving Client-Side Performance
    1. Understanding Web Caching
      1. Basics of Web Caching
      2. Types of Web Caches
      3. Web Cache Problems
      4. How Web Caches Work
      5. Controlling Response Cache
        1. HTML metatags and HTTP headers
        2. Cache control in response header
        3. Pragma HTTP headers
        4. Controlling caches with the Expires HTTP header
        5. Cache-control HTTP headers
        6. ETag, last-modified headers
      6. Principles for Making the Best Use of Cache
      7. How to Configure Static Content Caching in IIS
    2. Content Delivery Networks
      1. Examining Web Site Performance Without a CDN
      2. Different Types of CDNs
    3. Optimizing Internet Explorer JavaScript Performance
      1. Reducing IE Symbolic Lookups
        1. Evaluating local variables
        2. Reducing symbolic lookup on DOM elements
        3. Speeding symbolic lookup by caching DOM elements, properties, and functions
      2. Mitigating Internet Explorer Memory Leak
        1. Avoid using event handlers as closures
        2. Use out-of-scope functions
        3. Remove DOM elements
    4. Reducing the Web Service Call Payload
    5. Loading the UI on Demand
    6. Using Read-Ahead Caching for Ajax Calls
    7. Hiding HTML Inside <textarea>
    8. Summary
  11. 10. Solving Common Deployment, Hosting, and Production Challenges
    1. Deploying Your Web Site in a Web Farm
      1. Web Farm Pros and Cons
      2. Designing a Reasonable Hosting Configuration
    2. Thirteen Production Disasters That Could Happen at Anytime
      1. The Hard Drive Crashes, Overheats
      2. The Controller Malfunctions
      3. The RAID Malfunctions
        1. Pros and cons of RAID 1
        2. Pros and cons of RAID 5
      4. The CPU Overheats and Burns Out
      5. The Firewall Goes Down
      6. The Remote Desktop Stops Working After a Patch Installation
      7. Remote Desktop Exceeds Connection Limit and Login Fails
      8. The Database Becomes Corrupted When Files Are Copied over the Network
      9. The Production Database Was Accidentally Deleted
      10. The Hosting Service Formatted the Running Production Server
      11. Windows Was Corrupted Until It Was Reinstalled
      12. The DNS Goes Down
      13. The Internet Backbone Goes Down in Different Parts of the World
    3. Choosing the Right Hosting Provider
      1. Checklist for Choosing the Right Hosting Provider
    4. Choosing a Web Site Monitoring Tool
    5. Configuring Proper Performance Counters
      1. Monitoring Web Server Performance Counters
      2. Monitoring Database Server Performance Counters
    6. Summary
  12. Index
  13. About the Author
  14. Colophon
  15. Copyright