Cloud Computing with the Windows® Azure™ Platform

Book description

Leverage the power of the Azure Services Platform for cloud computing

With the Azure Services Platform, processing and storing data moves from individual corporate servers and Web sites to larger, more reliable, and more secure data centers. Roger Jennings, author of more than 30 books on Microsoft technologies, shows you how to leverage the power of Azure and its related services for cloud computing.

The book begins with a look at the differences between cloud computing and application hosting and examines the various issues that .NET developers and IT managers face in moving from on-premise to cloud-based applications, including security, privacy, regulatory compliance, backup and recovery, asset cataloging, and other common technical issues. The author then drills down, showing basic programming for individual Azure components, including storage, SQL Data Services, and .NET Services. He then moves on to cover more advanced programming challenges.

  • Explains the benefits of using the Azure Services Platform for cloud computing

  • Shows how to program with Windows Azure components, including Azure Table and Blob storage, .NET Services and SQL Azure

  • Addresses advanced programming challenges of creating useful projects that combine cloud storage with Web applications or services

  • Companion Web site features complete, finished applications that can be uploaded to jump start a Windows Azure project

  • Roger Jennings clears away the clouds and gets you started using the Azure Services Platform.

    Table of contents

    1. Copyright
    2. About the Author
    3. Credits
    4. Acknowledgments
    5. Introduction
      1. Who This Book Is For
      2. What This Book Covers
      3. How This Book Is Structured
        1. Part I: Introducing the Windows Azure Platform
        2. Part II: Taking Advantage of Cloud Services in the Enterprise
        3. Part III: Tackling Advanced Azure Service Techniques
        4. Part IV: Working with SQL Azure Services (Online Only)
      4. Conventions
      5. Source Code and Online Chapters
      6. Errata
      7. P2p.wrox.com
    6. I. Introducing the Windows Azure Platform
      1. 1. Surveying the Role of Cloud Computing
        1. 1.1. Why Migrate Applications and Services to the Cloud?
        2. 1.2. Cloud Computing's Ancestry
          1. 1.2.1. Diskless Workstations and Thin Clients
          2. 1.2.2. Web TV and Its Clones or Descendants
          3. 1.2.3. Netbook Clients
          4. 1.2.4. Application Service Providers and Software as a Service
          5. 1.2.5. Web Hosting Services
        3. 1.3. Cloud Computing and Everything as a Service
        4. 1.4. Cloud Computing Ontologies
        5. 1.5. Cloud Computing Concerns
        6. 1.6. Summary
      2. 2. Understanding Windows Azure Platform Architecture
        1. 2.1. The Windows Azure Developer Portal
        2. 2.2. Creating and Running Projects in the Azure Development Platform
          1. 2.2.1. Installing Windows Azure SDK and Tools for Visual Studio
          2. 2.2.2. Installing and Building the Windows Azure SDK Sample Applications
          3. 2.2.3. The Development Fabric
          4. 2.2.4. Development Storage
            1. 2.2.4.1. Azure Service Definition and Service Configuration Files
            2. 2.2.4.2. Azure Table Services
            3. 2.2.4.3. Azure Blob Services
            4. 2.2.4.4. Azure Queue Services
        3. 2.3. Using Azure Application Templates for Visual Studio 2008
          1. 2.3.1. Web Cloud Services and Client Wrapper Class Libraries
        4. 2.4. Taking Advantage of Auxiliary Cloud Services
          1. 2.4.1. .NET Services
            1. 2.4.1.1. Access Control Services
            2. 2.4.1.2. Service Bus
            3. 2.4.1.3. Workflow Services
          2. 2.4.2. SQL Azure
            1. 2.4.2.1. SQL Data Services and SQL Azure Database (SADB)
            2. 2.4.2.2. Obtaining an SADB v1 Private CTP Account
        5. 2.5. Deploying Applications and Services to the Azure Cloud
          1. 2.5.1. Azure Storage Services
          2. 2.5.2. Publishing Projects to the Azure Services Developer Portal
          3. 2.5.3. Publishing the Project to the Cloud Fabric
        6. 2.6. Summary
      3. 3. Analyzing the Windows Azure Operating System
        1. 3.1. A Quick Tour of the Windows Azure OS
        2. 3.2. The Lifecycle of a Windows Azure Service
          1. 3.2.1. Creating the Host VM and the First Guest VM on a Physical Server
          2. 3.2.2. Adding Guest VMs to a Host VM
          3. 3.2.3. Maintaining Role Instance Health
          4. 3.2.4. Upgrading Service Software and Windows Azure
        3. 3.3. Securing and Isolating Services and Data
          1. 3.3.1. Reliance on Cloud-Computing Vendors' Security Claims
          2. 3.3.2. Isolating Private Data of Multiple Tenants
        4. 3.4. Assuring Fabric Controller Availability
        5. 3.5. Virtualizing Windows Servers for Azure
          1. 3.5.1. Deploying the Azure Hypervisor in Non-Microsoft Data Centers
        6. 3.6. Summary
      4. 4. Scaling Azure Table and Blob Storage
        1. 4.1. Creating Storage Accounts
          1. 4.1.1. Create the First Storage Account with a Hosted Service Token
          2. 4.1.2. Create an Additional Storage Account with a Hosted Service Token
        2. 4.2. Using or Wrapping the Azure Storage Services' REST APIs
          1. 4.2.1. Using Fiddler2 to Display HTTP Request and Response Headers and Content
          2. 4.2.2. C# Wrappers for RESTful Storage and Authentication Operations
        3. 4.3. Understanding Azure Table Storage
          1. 4.3.1. Creating a New Table If the Table Doesn't Exist with Code
          2. 4.3.2. Creating a New Table If the Table Doesn't Exist with the HTTP POST Method
          3. 4.3.3. Adding Entities to a Table
            1. 4.3.3.1. Adding New Entities with Code
            2. 4.3.3.2. Adding a New Entity with the HTTP POST Method and AtomPub Body
            3. 4.3.3.3. Taking Advantage of Entity Group Transactions
          4. 4.3.4. Querying for a Specific Entity or Entities
            1. 4.3.4.1. Querying for Pages of Entities with Code
            2. 4.3.4.2. Querying for the Second Page of 12 Entities with the HTTP GET Method
            3. 4.3.4.3. Querying for the First Eight Customer Entities Located in the USA
          5. 4.3.5. Updating Entities by Replacing Their Property Values
            1. 4.3.5.1. Updating Entities with Code
            2. 4.3.5.2. Updating Entities with the HTTP MERGE Method
          6. 4.3.6. Deleting Entities
        4. 4.4. Storing and Retrieving Blobs
          1. 4.4.1. Blob Content Types
          2. 4.4.2. The StorageClient Class Library's Blob Storage and REST Blob Storage Classes
          3. 4.4.3. Obtaining a File from Windows Live SkyDrive and Uploading It to Azure Blob Storage with Code
            1. 4.4.3.1. Persisting Log Blobs to Containers
            2. 4.4.3.2. Viewing Content and Log Blobs with Utilities
          4. 4.4.4. Downloading a Blob File from SkyDrive with the HTTP GET Method
          5. 4.4.5. Uploading a Blob to Azure Storage Services in 1MB Blocks
          6. 4.4.6. Downloading a Selected Blob
            1. 4.4.6.1. Opening a Selected Blob in a Browser or Dialog with Code
            2. 4.4.6.2. Displaying a Selected Bitmap Blob in a Browser with a GET Request
          7. 4.4.7. Deleting a Specified Blob
            1. 4.4.7.1. Deleting a Blob Selected in a GridView Control with Code
            2. 4.4.7.2. Deleting a Blob Selected in a GridView Control with an HTTP DELETE Request
          8. 4.4.8. Taking Advantage of New Copy Blob and Get Blob List Methods
          9. 4.4.9. Late Changes to Azure Blobs
        5. 4.5. Summary
    7. II. Taking Advantage of Cloud Services in the Enterprise
      1. 5. Minimizing Risk When Moving to Azure Cloud Services
        1. 5.1. Bypassing Barriers to Cloud Computing
          1. 5.1.1. Maximizing Data Availability and Minimizing Security Risks
          2. 5.1.2. An IT-Related Risk Definition
          3. 5.1.3. NIST's Idea for Federal Cloud Computing Standards
          4. 5.1.4. Potential Cloud Computing Deployment by the Department of Defense
          5. 5.1.5. Gaining and Auditing Regulatory Compliance
            1. 5.1.5.1. Gramm-Leach-Bliley Act
            2. 5.1.5.2. Sarbanes-Oxley Act
            3. 5.1.5.3. Health Information Technology and HIPAA
            4. 5.1.5.4. Payment Card Industry-Data Security Standard (PCC-DSS)
              1. 5.1.5.4.1. PCI's Self-Assessment Questionnaire (SAQ)
              2. 5.1.5.4.2. PCI's Prioritized Approach Framework
            5. 5.1.5.5. California Senate Bill 1386
            6. 5.1.5.6. Massachusetts' and Nevada's Data Privacy Laws
        2. 5.2. Implementing Secure Sockets Layer Transmission Encryption for Web Roles
          1. 5.2.1. Enabling TLS for Azure Data Services
          2. 5.2.2. Creating a Self-Signed Certificate for the Development Fabric
          3. 5.2.3. Exporting and Importing the Issuer to the Trusted Root Certificate Authorities List
          4. 5.2.4. Creating a Test Root Certificate Authority and Using It to Sign a Test Certificate
        3. 5.3. Encrypting Personal Information in Azure Storage Services
          1. 5.3.1. Encrypting and Decrypting Strings with AES
            1. 5.3.1.1. Encrypting Plaintext to Ciphertext
            2. 5.3.1.2. Decrypting Ciphertext to Plaintext
            3. 5.3.1.3. Orchestrating Encryption and Decryption in a TableStorageEntity Instance
            4. 5.3.1.4. Analyzing Encryption's Performance Hit
            5. 5.3.1.5. Comparing Client-Side Encryption with SQL Server's Column-Based Server Encryption
            6. 5.3.1.6. Understanding SQL Server 2008's Transparent Data Encryption
        4. 5.4. Auditing Conformance to Regulatory and Industry Standards
          1. 5.4.1. Statement on Auditing Standards No. 70 (SAS 70)
          2. 5.4.2. The ISO/IEC 27001:2005 Standard
          3. 5.4.3. Azure's SAS 70 and ISO/IEC 27001:2005 Audits and Certifications
          4. 5.4.4. Service-Level Agreements and Business Interruption Risk
        5. 5.5. Summary
      2. 6. Authenticating and Authorizing Service Users
        1. 6.1. Taking Advantage of ASP.NET Membership Services
          1. 6.1.1. ASP.NET Login Controls
          2. 6.1.2. User Role and Profile Management
        2. 6.2. Adapting ASP.NET Authentication and Role Management to Windows Azure Web Roles
          1. 6.2.1. Running the Windows Azure SDK's AspProvidersDemo Service Locally
          2. 6.2.2. Working with the AspProvidersDemoDB Database
          3. 6.2.3. Exploring Azure-Specific Membership Elements and Attributes in the Web.config File
            1. 6.2.3.1. Membership Section
            2. 6.2.3.2. Role Manager, Profile, and Session State Sections
            3. 6.2.3.3. Optional Data Services and Default Settings in Web.Config
            4. 6.2.3.4. Data Services and Default Settings in ServiceConfiguration.cscfg
        3. 6.3. Analyzing the AspProviders Library's Classes
          1. 6.3.1. The TableStorageMembershipProvider Class
          2. 6.3.2. The TableStorageRoleProvider Class
          3. 6.3.3. The TableStorageProfileProvider Class
          4. 6.3.4. The TableStorageSessionProvider Class
        4. 6.4. Moving the AspProvidersDemo's Data Source to the Cloud
        5. 6.5. Integrating Membership Services with an Azure Service
          1. 6.5.1. Copying and Integrating Membership-Related Files
          2. 6.5.2. Customizing the AzureTableTestHarness Project's Default.aspx Page
        6. 6.6. Authenticating Users with Windows Live ID
          1. 6.6.1. Downloading and Installing the WLID Web Authentication SDK 1.2
          2. 6.6.2. Installing the Windows Live Tools for Visual Studio
            1. 6.6.2.1. IDLoginStatus Control
            2. 6.6.2.2. IDLoginView Control
          3. 6.6.3. Creating and Testing the Initial LiveIDSampleCloudService
            1. 6.6.3.1. Creating the New Cloud Service and Web Role
            2. 6.6.3.2. Copying Code from the WebAuth Sample
            3. 6.6.3.3. Registering the webauth_handler Page's ReturnURL in the Development Fabric
            4. 6.6.3.4. Securing a Hosted Project in the Azure Production Fabric
        7. 6.7. Summary
      3. 7. Optimizing the Scalability and Performance of Azure Tables
        1. 7.1. Assigning Primary Key Values to Entities
          1. 7.1.1. Choosing Partition Keys
          2. 7.1.2. Adding Row Keys
        2. 7.2. Handling Associated Entities
        3. 7.3. Taking Advantage of Entity Group Transactions
        4. 7.4. Uploading Table Data
          1. 7.4.1. Comparing Code for Uploading Data to Individual or Heterogeneous Tables
          2. 7.4.2. Comparing Performance of Homogeneous and Heterogeneous Table Operations
        5. 7.5. Displaying Data from Heterogeneous Tables in Grids
          1. 7.5.1. Displaying Parent Entities
          2. 7.5.2. Displaying Child Entities
        6. 7.6. Summary
      4. 8. Messaging with Azure Queues
        1. 8.1. Creating and Processing Azure Queues and Messages
          1. 8.1.1. Listing a Storage Account's Queues
          2. 8.1.2. Issuing HTTP/REST Requests at the Queue Level
            1. 8.1.2.1. Create a Queue with a Specified Storage Account
            2. 8.1.2.2. Delete the Specified Queue and Its Contents Permanently
            3. 8.1.2.3. Set or Update the User-Defined Metadata for the Queue
          3. 8.1.3. Working with HTTP/REST at the Message Level
            1. 8.1.3.1. Add a Message to the Queue
            2. 8.1.3.2. Get the Approximate Number of Messages in the Queue
            3. 8.1.3.3. Get a Message from the Queue
            4. 8.1.3.4. Peek at a Message in the Queue
            5. 8.1.3.5. Delete a Message from the Queue
            6. 8.1.3.6. Clearing All Messages from the Queue
        2. 8.2. Enhancing the Thumbnails.sln Sample Solution
          1. 8.2.1. Understanding the Interaction Between WebRoles and WorkerRoles
            1. 8.2.1.1. Thumbnail_WebRole Methods and Event Handlers
            2. 8.2.1.2. Thumbnail_WorkerRole Methods and Event Handlers
          2. 8.2.2. Analyzing Network Traffic Implications of Polling for Blob Updates
            1. 8.2.2.1. Calculating Cloud Data Egress and Ingress Costs
            2. 8.2.2.2. Testing the Effect of Disabling ViewState for the GridView
          3. 8.2.3. Moving to Client-Side Detection of Added Thumbnail Images
          4. 8.2.4. Enabling Thumbnail Deletion
        3. 8.3. Summary
    8. III. Tackling Advanced Azure Services Techniques
      1. 9. Authenticating Users with .NET Access Control Services
        1. 9.1. Creating a .NET Services Solution
        2. 9.2. Installing the .NET Services SDK, and Other Tools
          1. 9.2.1.
            1. 9.2.1.1. .NET Services SDK
            2. 9.2.1.2. Azure Management Tools (Optional)
            3. 9.2.1.3. Azure Services Training Kit (Optional)
            4. 9.2.1.4. Microsoft "Geneva" Beta 2 (Verify Compatibility Before Installing)
        3. 9.3. Creating CardSpace Credentials at FederatedIdentity.net
          1. 9.3.1. Exploring the HTTP Request and Response Messages of the CardSpace Information Card
          2. 9.3.2. Standardizing Information Card Terminology
        4. 9.4. Using a Managed CardSpace Credential with ACS
          1. 9.4.1. Setting Up FederatedIdentity.net for Use with the oakleaf-acs Solution
            1. 9.4.1.1. Configuring FederatedIdentity.net as a Recognized Token Issuer
            2. 9.4.1.2. Setting Up Claims Transformation Rules
            3. 9.4.1.3. Registering with FederatedIdentity.net as a Relying Party
          2. 9.4.2. Verifying the Managed CardSpace Card(s) with the EchoService
        5. 9.5. Summary
      2. 10. Interconnecting Services with the .NET Service Bus
        1. 10.1. Creating a .NET Services Solution and Installing Prerequisites
        2. 10.2. Relaying Messages with SB
        3. 10.3. Analyzing the .NET Services SDK's EchoSample Solution
          1. 10.3.1. Inspecting the Service Project's EchoContract.cs, EchoService.cs, and Program.cs Files
          2. 10.3.2. Verifying the Service User's Credentials with Code in Program.cs
          3. 10.3.3. Consuming the EchoSample Solution's Service
          4. 10.3.4. Making Services Publicly Discoverable
        4. 10.4. Using the Configuration File to Specify WSHttpRelayBinding
          1. 10.4.1. Associating a Self-Issued Card Space Identity Card with the Current Solution
          2. 10.4.2. Correcting the Autogenerated Scope for the Solution
          3. 10.4.3. Specifying Binding Details in App.config
        5. 10.5. Summary
      3. 11. Exploring .NET Service Bus Queues and Routers
        1. 11.1. Persisting Messages in Service Bus Queues
          1. 11.1.1. Creating SBQs with the QueueManagementClient Class
          2. 11.1.2. Test-Driving the HttpQueueSample Solution
          3. 11.1.3. Spelunking the HttpQueueSample Solution's Code
        2. 11.2. Delivering Messages with Service Bus Routers
        3. 11.3. Summary
    9. IV. Working with SQL Azure Services (Online Only)
      1. 12. Managing SQL Azure Accounts and Databases
        1. 12.1. Tracking SSDS's Migration to a Relational Database
        2. 12.2. Reviewing Current SQL Azure Database Documentation and Resources
        3. 12.3. Creating or Upgrading Windows Azure and SQL Azure Accounts
        4. 12.4. Setting Up the Server Firewall
        5. 12.5. Creating a User Database
        6. 12.6. Testing Database Connectivity
        7. 12.7. Connecting to SADB User Databases with SSMS 2008 R2 [Express]
          1. 12.7.1. Configuring the Server Firewall
          2. 12.7.2. Determining Server Usage
        8. 12.8. Using the sqlcmd Utility with SADB
        9. 12.9. Comparing SADB with SQL Server 2008 R2 Databases
        10. 12.10. Summary
      2. 13. Exploiting SQL Azure Database's Relational Features
        1. 13.1. Creating and Populating SADB Databases
          1. 13.1.1. Generating the Northwind Sample Database in SADB from the instnwind.sql Script
            1. 13.1.1.1. Conforming instnwind.sql to SADB T-SQL DDL Limitations
            2. 13.1.1.2. Updating IF EXISTS() Tests That Use sysobjects Arguments
            3. 13.1.1.3. Running InstnwindFromNorthwind.sql in SSMS
          2. 13.1.2. Generating the AdventureWorksLT (Lite) Database from the SQL Azure (December CTP) Sample
          3. 13.1.3. Using SSIS to Populate a Local AdventureWorksLT2008 Database from SADB
            1. 13.1.3.1. Installing Prerequisites for Moving Data Using SSIS
            2. 13.1.3.2. Verifying Demo Prerequisites with the Configuration Wizard
            3. 13.1.3.3. Creating a T-SQL Script with SSMS to Populate an SADB Database
            4. 13.1.3.4. Using the Pre-Built AdventureWorksLT2008_Azure.sql Script to Populate an SQL Azure Database
            5. 13.1.3.5. Designing the Package to Import Data from SQL Azure to On-Premises SQL Server Tables
              1. 13.1.3.5.1. Create Connection Managers for the Local (Source) and SADB (Cloud) Databases
              2. 13.1.3.5.2. Add and Test Execute SQL Tasks to Clear the Local SalesOrder and SalesHeader Tables
              3. 13.1.3.5.3. Add and Test Data Flow Tasks to Import SalesOrder Data from an SADB to a Local Database Table
          4. 13.1.4. Migrating Schemas and Data from the On-Premises AdventureWorksLT2008 Database to SQL Azure
          5. 13.1.5. Using the Bulk Copy Process to Populate SADB Tables
          6. 13.1.6. Populating Tables with the INSERT...BULK Command
        2. 13.2. Sharding Tables to Overcome Database Size Limits
        3. 13.3. Creating SADB Logins and Users, and Assigning Roles
        4. 13.4. Summary

    Product information

    • Title: Cloud Computing with the Windows® Azure™ Platform
    • Author(s): Roger Jennings
    • Release date: October 2009
    • Publisher(s): Wrox
    • ISBN: 9780470506387