Microsoft Azure Development Cookbook Second Edition
By Neil Mackenzie and Roberto Freato
5/5
()
About this ebook
Beginning with the development of cloud services for Microsoft Azure, this practical Cookbook will show you the building blocks of Azure, focusing on why we should use one or the other, and when to use them appropriately. Even though reading the entire book will give you an advanced overview of the main blocks of the Azure platform, each chapter is self-contained. So, even an inexperienced reader could jump from one chapter to another without reading the entire book. Each chapter is organized into recipes—standalone units of practical tasks to complete that involve a specific feature/service of the platform.
This book tries to provide a comprehensive overview of the main aspects of the Azure platform from the point of view of a developer. Some building blocks such as virtual machines are deliberately avoided to focus on development tools, development libraries, and development strategies. This is a recipe-based book; expect to dirty your hands with code that is also outside the boundaries of the recipe, as you would do with food in a real recipe!
Related to Microsoft Azure Development Cookbook Second Edition
Related ebooks
Microsoft Windows Azure Development Cookbook Rating: 5 out of 5 stars5/5Tabular Modeling with SQL Server 2016 Analysis Services Cookbook Rating: 4 out of 5 stars4/5Amazon S3 Cookbook Rating: 0 out of 5 stars0 ratingsSQL Server 2016 Reporting Services Cookbook Rating: 5 out of 5 stars5/5SQL Server 2014 with PowerShell v5 Cookbook Rating: 0 out of 5 stars0 ratingsJIRA Development Cookbook Rating: 0 out of 5 stars0 ratingsSQL Server Analysis Services 2012 Cube Development Cookbook Rating: 0 out of 5 stars0 ratingsMastering Cloud Development using Microsoft Azure Rating: 0 out of 5 stars0 ratingsRobust Cloud Integration with Azure Rating: 0 out of 5 stars0 ratingsMicrosoft Azure IaaS Essentials Rating: 4 out of 5 stars4/5Learning Microsoft Azure Rating: 4 out of 5 stars4/5Microservices with Azure Rating: 0 out of 5 stars0 ratingsImplementing Azure Solutions Rating: 0 out of 5 stars0 ratingsMicrosoft Azure A Complete Guide - 2019 Edition Rating: 1 out of 5 stars1/5Implementing DevOps with Microsoft Azure Rating: 0 out of 5 stars0 ratingsAzure for .NET Core Developers: Implementing Microsoft Azure Solutions Using .NET Core Framework Rating: 0 out of 5 stars0 ratingsMicrosoft Certified Azure Fundamentals All-in-One Exam Guide (Exam AZ-900) Rating: 5 out of 5 stars5/5Exam AZ 900: Azure Fundamental Study Guide-2: Explore Azure Fundamental guide and Get certified AZ 900 exam Rating: 0 out of 5 stars0 ratingsMicrosoft Azure Storage Essentials Rating: 0 out of 5 stars0 ratingsMicrosoft Azure Infrastructure Services for Architects: Designing Cloud Solutions Rating: 0 out of 5 stars0 ratingsAzure Data Lake A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsMicrosoft Azure Administrator Exam Prep (AZ-104) Rating: 5 out of 5 stars5/5Microsoft Azure Fundamentals Exam Cram: Second Edition Rating: 5 out of 5 stars5/5Microsoft Azure Fundamentals: AZ-900- +250 Practices Questions - Second Edition Rating: 5 out of 5 stars5/5Microsoft Dynamics 365 Extensions Cookbook Rating: 5 out of 5 stars5/5Microsoft Azure Complete Self-Assessment Guide Rating: 0 out of 5 stars0 ratingsBuilding Web Services with Microsoft Azure Rating: 0 out of 5 stars0 ratingsAzure Devops A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratings
Operating Systems For You
Hacking : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Ethical Hacking Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5The Mac Terminal Reference and Scripting Primer Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Exploring Windows 11: The Illustrated, Practical Guide to Using Microsoft Windows Rating: 0 out of 5 stars0 ratingsPowerShell: A Comprehensive Guide to Windows PowerShell Rating: 4 out of 5 stars4/5Learn Windows PowerShell in a Month of Lunches Rating: 0 out of 5 stars0 ratingsNetworking for System Administrators: IT Mastery, #5 Rating: 5 out of 5 stars5/5CompTIA Linux+ Study Guide: Exam XK0-004 Rating: 0 out of 5 stars0 ratingsWindows 11 All-in-One For Dummies Rating: 5 out of 5 stars5/5Mastering Windows PowerShell Scripting Rating: 4 out of 5 stars4/5Make Your PC Stable and Fast: What Microsoft Forgot to Tell You Rating: 4 out of 5 stars4/5Bash Command Line Pro Tips Rating: 5 out of 5 stars5/5iPhone Unlocked Rating: 0 out of 5 stars0 ratingsWindows 11 For Dummies Rating: 0 out of 5 stars0 ratingsLinux Command Line and Shell Scripting Bible Rating: 3 out of 5 stars3/5Macs All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsHacking for Beginners: Mastery Guide to Learn and Practice the Basics of Computer and Cyber Security Rating: 0 out of 5 stars0 ratingsWindows 10 All-In-One For Dummies Rating: 4 out of 5 stars4/5Linux for Beginners: Linux Command Line, Linux Programming and Linux Operating System Rating: 4 out of 5 stars4/5Windows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry Rating: 4 out of 5 stars4/5OneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5The Windows Command Line Beginner's Guide: Second Edition Rating: 4 out of 5 stars4/5Raspberry Pi Cookbook for Python Programmers Rating: 0 out of 5 stars0 ratingsDarknet Rating: 4 out of 5 stars4/5The Linux Command Line Beginner's Guide Rating: 4 out of 5 stars4/5
Reviews for Microsoft Azure Development Cookbook Second Edition
1 rating0 reviews
Book preview
Microsoft Azure Development Cookbook Second Edition - Neil Mackenzie
Table of Contents
Microsoft Azure Development Cookbook Second Edition
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Instant updates on new Packt books
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Developing Cloud Services for Microsoft Azure
Introduction
Setting up solutions and projects to work with Cloud Services
Getting ready
How to do it...
How it works...
There's more
See also
Debugging a Cloud Service locally with either Emulator or Emulator Express
Getting ready
How to do it…
How it works…
There's more…
See also
Publishing a Cloud Service with options from Visual Studio
Getting ready
How to do it…
How it works…
There's more…
See also
Debugging a Cloud Service remotely with Visual Studio
Getting ready
How to do it…
How it works…
There's more…
See also
Configuring the service model for a Cloud Service
Getting ready
How to do it...
How it works...
There's more…
See also
Providing a custom domain name for a Cloud Service
Getting ready
How to do it...
How it works...
There's more...
Implementing HTTPS in a web role
How to do it...
How it works...
There's more...
Using makecert to create a test certificate
Using local storage in an instance
How to do it...
How it works...
See also
Hosting multiple websites in a web role
How to do it...
How it works...
There's more...
See also
Using startup tasks in a Microsoft Azure role
How to do it...
How it works...
There's more...
Developing startup tasks
See also
Handling changes to the configuration and topology of a Cloud Service
How to do it...
How it works...
There's more...
Testing changes with the SDK command line
Using LINQ with the RoleEnvironment API
See also
Managing upgrades and changes to a Cloud Service
Getting ready
How to do it...
How it works...
See also
Configuring diagnostics in Cloud Services
Getting ready
How to do it…
How it works...
There's more…
Log directories
Alerts
See also
2. Deploying Quickly with Azure Websites
Introduction
Deploying a Website
Getting ready
How to do it…
How it works...
There's more…
Azure Websites gallery
See also
Administering and monitoring a Website
Getting ready
How to do it…
How it works...
There's more…
Edit in Visual Studio Online
Traffic Manager
See also
Source versioning and continuous integration with Git and TFS
Getting ready
How to do it…
How it works...
There's more…
See also
Logging abstraction from .NET and PHP
Getting ready
How to do it…
How it works...
There's more…
See also
Deploying Java with Azure Websites
Getting ready
How to do it…
How it works...
There's more…
3. Getting Storage with Blobs in Azure
Introduction
Managing the Azure Storage service
How to do it...
How it works...
There's more…
See also
Connecting to the Azure Storage service
Getting ready
How to do it...
How it works...
There's more…
See also
Connecting to the storage emulator
How to do it...
How it works...
There's more...
Protocol versions in Storage Emulator
See also
Managing access control for containers and blobs
Getting ready
How to do it...
How it works...
See also
Creating a shared access signature for a container or blob
Getting ready
How to do it...
How it works...
There's more...
See also
Using a container-level access policy
Getting ready
How to do it...
How it works...
Setting properties and metadata for a blob
Getting ready
How to do it...
How it works...
See also
Using blob directories
Getting ready
How to do it...
How it works...
Creating and using a blob snapshot
Getting ready
How to do it...
How it works...
See also
Creating and using the root container for blobs
Getting ready
How to do it...
How it works...
See also
Uploading blocks to a block blob
Getting ready
How to do it...
How it works...
There's more…
Uploading a VHD into a page blob
Getting ready
How to do it...
How it works...
There's more…
See also
Downloading a blob asynchronously
Getting ready
How to do it...
How it works...
There's more…
See also
Using retry policies with blob operations
Getting ready
How to do it...
How it works...
There's more...
See also
Leasing a blob and implementing distributed locks
Getting ready
How to do it...
How it works...
There's more...
See also
Using the Azure Content Delivery Network (CDN)
How to do it...
How it works...
See also
4. Going Relational with the Azure SQL Database
Introduction
Creating a SQL Database server and database
Getting ready
How to do it...
How it works...
There's more…
Increasing the size of a database
See also
Managing SQL Database logins and firewall rules
Getting ready
How to do it…
How it works…
See also
Developing a SQL Database with Visual Studio
Getting ready
How to do it…
How it works…
There's more…
See also
Connecting to a SQL Database with ADO.NET
How to do it...
How it works...
There's more…
See also
Connecting to a SQL Database with Entity Framework
Getting ready
How to do it…
How it works…
See also
Connecting to a SQL Database from PHP and Java
Getting ready
How to do it…
How it works…
See also
Migrating a database to a SQL Database
Getting ready
How to do it...
How it works...
There's more…
See also
Leveraging backup solutions with SQL Database
Getting ready
How to do it…
How it works…
There's more…
Deleted databases
Automated Exports
See also
Monitoring SQL Database with the dynamic management views
Getting ready
How to do it...
How it works...
There's more…
See also
Handling connection failures to a SQL Database
Getting ready
How to do it...
How it works...
There's more...
See also
5. Going NoSQL with Azure Tables
Introduction
Creating a table
Getting ready
How to do it...
How it works...
There's more…
See also
Inserting, updating, deleting, and querying data against the Table service
Getting ready
How to do it...
How it works...
There's more…
Dealing with a custom context
Choosing a good combination of PartitionKey and RowKey
See also
Using entity group transactions
Getting ready
How to do it...
How it works...
There's more…
See also
Using continuation tokens and server-side paging
Getting ready
How to do it...
How it works...
See also
Going inside continuation tokens and segmented queries
Getting ready
How to do it...
How it works...
There's more…
See also
Handling entity serialization events
Getting ready
How to do it...
How it works...
There's more…
Legacy approach to custom serialization with Atom feeds
See also
Facilitating NoSQL with client-side projection
Getting ready
How to do it...
How it works…
There's more…
See also
6. Messaging and Queues with the Storage and Service Bus
Introduction
Managing Azure Storage queues
Getting ready
How to do it...
How it works...
There's more…
Nagle's algorithm
See also
Managing Azure Service Bus queues
Getting ready
How to do it...
How it works...
There's more…
See also
Adding messages to a Storage queue
Getting ready
How to do it...
How it works...
There's more…
See also
Adding messages to a Service Bus queue
Getting ready
How to do it...
How it works...
There's more…
Detecting duplicates
See also
Receiving messages with Storage queues
Getting ready
How to do it...
How it works...
There's more…
Poison messages
See also
Receiving messages with Service Bus queues
Getting ready
How to do it...
How it works...
There's more…
Dead lettering
See also
Implementing publish/subscribe with Service Bus topics
Getting ready
How to do it...
How it works...
See also
Implementing relayed messaging with the Service Bus
Getting ready
How to do it...
How it works…
See also
Communication between .NET and Java with the Service Bus and AMQP
Getting ready
How to do it…
How it works…
See also
7. Managing Azure Resources with the Azure Management Libraries
Introduction
Setting up the management client
Getting ready
How to do it…
How it works...
There's more…
See also
Managing the Storage service
Getting ready
How to do it…
How it works...
There's more…
See also
Deploying Cloud Services
Getting ready
How to do it…
How it works...
There's more…
See also
Inspecting and managing Cloud Services
Getting ready
How to do it…
How it works...
There's more…
See also
Managing and using the Azure Scheduler
Getting ready
How to do it…
How it works...
There's more…
See also
Monitoring and automating infrastructure operations
Getting ready
How to do it…
How it works...
There's more…
See also
Automating SQL Database operations
Getting ready
How to do it…
How it works...
There's more…
See also
Using Azure PowerShell
Getting ready
How to do it...
How it works...
There's more…
See also
8. Going In-memory with Azure Cache
Introduction
Building a simple cache for applications
Getting ready
How to do it…
How it works...
There's more…
ASP.NET Support
See also
Using local cache and notifications
Getting ready
How to do it…
How it works...
There's more…
See also
Diagnosing cache and optimizing performance
Getting ready
How to do it…
How it works...
There's more…
Using advanced caching features
Getting ready
How to do it…
How it works...
There's more…
See also
Using Redis Cache in Azure
Getting ready
How to do it…
How it works...
There's more…
See also
Index
Microsoft Azure Development Cookbook Second Edition
Microsoft Azure Development Cookbook Second Edition
Copyright © 2014 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: August 2011
Second edition: September 2014
Production reference: 1180914
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78217-032-7
www.packtpub.com
Cover image by Duraid Fatouhi (<duraidfatouhi@yahoo.com>)
Credits
Authors
Roberto Freato
Neil Mackenzie
Reviewers
Michael S. Collier
Peter Kirchner
Sarang Kulkarni
Sachin Prakash Sancheti
Aaron Whittaker
Commissioning Editor
Joanne Fitzpatrick
Acquisition Editor
Kevin Colaco
Content Development Editor
Rikshith Shetty
Technical Editors
Indrajit A. Das
Dennis John
Copy Editors
Roshni Banerjee
Karuna Narayanan
Project Coordinator
Kinjal Bari
Proofreaders
Ting Baker
Simran Bhogal
Maria Gould
Sandra Hopper
Indexers
Hemangini Bari
Monica Ajmera Mehta
Tejal Soni
Production Coordinators
Saiprasad Kadam
Conidon Miranda
Alwin Roy
Cover Work
Conidon Miranda
About the Authors
Roberto Freato has been an independent IT consultant since he started working. He worked for several small software firms while he was studying. After completing his MSc in Computer Science and Engineering, where he worked on a thesis on Consumer Cloud Computing, he specialized in cloud and Azure. Today, he works as a freelance consultant for important companies in Italy, helping clients design and kick-off their distributed software solutions. He trains for the developer community in his free time, addressing many conferences. He is a Microsoft MVP since 2010.
Thanks to Simona, Mom, and Dad.
Neil Mackenzie has worked with computers for nearly 3 decades. He started his computer career doing large-scale numerical simulations for scientific research and business planning. Since then, he has primarily been involved in healthcare software and developing electronic medical record systems. He has been using Microsoft Azure since PDC 2008 and has used nearly all parts of the Microsoft Azure platform, including those parts that no longer exist. Neil is very active in the online Microsoft Azure community, contributing to the MSDN Microsoft Azure forums in particular. He is a Microsoft MVP for Microsoft Azure.
I would like to thank all the people from whom I've learned Microsoft Azure. I would also like to thank the staff at Packt Publishing for nursing the project along and Brent Stineman for first suggesting my name to them. I have found the comments from the technical reviewers invaluable, which immeasurably improved the book. Last but not least, I would like to thank my wife, Claire, and my children for suffering through all the late nights and lost weekends that went into the writing of the book.
About the Reviewers
Michael S. Collier serves as a principal cloud architect for Aditi Technologies, a Microsoft NSI partner that focuses on cloud computing. He is a four-time Azure MVP and was the 2012 Azure MVP of the Year for his extraordinary community contributions. Michael has had a successful 12-year career at various consulting and technology firms, where he was instrumental in leading and developing solutions for a wide range of clients. He has many years of experience in helping companies determine the best strategy to adopt cloud computing and providing insight and hands-on experience to ensure that they're successful. He is also a respected technology community leader, and can often be found sharing his Azure insights and experiences at regional and national conferences. You can follow Michael's experiences with Azure on his blog at www.michaelscollier.com and on Twitter at @MichaelCollier.
Peter Kirchner has been working as a technical evangelist at Microsoft, Germany, since 2008. In this role, he addresses conferences and writes articles that focus on cloud computing, with the goal to inspire new technologies and support developers and administrators in developing for and using the Microsoft platform. Before working with Microsoft, Peter gained experience working in the area of SharePoint development and consulting. While studying, he showed interest in network technologies, security, and distributed systems, and graduated with a Diploma in Computer Science.
Sarang Kulkarni lives in Pune, India, with his wife and daughter. He has been coding for food for the last 14 years, and also talking and writing about it for the last 6 years. He has mostly been around the Microsoft stack, with an occasional adventure in SAP ABAP and Amazon AWS. Sarang has been building SaaS products and services on the Azure stack since the Red Dog
days. He worked with big consulting firms such as Accenture, Avanade, and Cognizant before settling in Zevenseas, a SharePoint company, building and growing its Azure business.
Sarang has previously worked on a collaborative book, Windows Azure Platform: Articles from the Trenches, as a co-author.
Thanks to Packt Publishing for approaching me with this interesting opportunity. I would also thank my family and my colleagues at Zevenseas for being supportive of everything I keep on doing.
Sachin Prakash Sancheti hails from a small town in western India called Washim. He has 15 years' experience, much of which was focused on Microsoft-oriented technologies. In the last 4 years, he developed an expertise in cloud computing across both Windows Azure and AWS. An innovative architect with solid technology acumen, Sachin is also an avid blogger and speaker. He calls himself a whiteboard as well as a keyboard guy.
Being proud of his modest origins, Sachin would like to bring recognition in some form to his hometown, Washim.
Currently, Sachin is working with Symphony Teleca, Pune, as a principal architect. Earlier in his career, he was with Infosys and Microsoft, both in India. Immediately prior to Symphony Teleca, he spent a couple of years with a startup called Cumulux, which was acquired by Aditi Technologies for its expertise in Windows Azure.
I would like to thank Packt Publishing for this opportunity to review the book. A special thanks to my wife, Vaidehi, who is my pillar when it comes to clearing the clutter in my mind. Clearly, she is the secret to my ability to focus on the task at hand.
Aaron Whittaker is a Microsoft Virtual Technology Solutions Professional (V-TSP) and a technical account manager. He has spoken at many major technology events, including several Microsoft TechEds. He is a guest author for Microsoft MSDN and TechNet. He proactively learns new technologies and is currently focused on building customer relationships to solve problems.
Aaron has received the vExpert award several times and was the host of a VMWare user group for 5 years. He currently hosts the Brisbane Cloud User Group.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Instant updates on new Packt books
Get notified! Find out when new books are published by following @PacktEnterprise on Twitter or the Packt Enterprise Facebook page.
Preface
Microsoft Azure is Microsoft's platform for cloud computing. It provides developers with elastic building blocks to build scalable applications. These building blocks are services for web hosting, storage, computation, connectivity, and more. They are usable as standalone services or are mixed together to build advanced scenarios.
This practical cookbook will show you these building blocks, focusing on why we should use one or the other, and when to use them appropriately. Even though reading the entire book will give you an advanced overview of the main blocks of the Azure platform, each chapter is self-contained. So, even an inexperienced reader could jump from one chapter to another without reading the entire book. Each chapter is organized into recipes—standalone units of execution to complete tasks that involve a specific feature/service of the platform. This approach gives readers the capability to focus on the technology for further use in real-world projects.
This book tries to provide a comprehensive overview of the main aspects of the Azure platform from the point of view of a developer. Some building blocks such as virtual machines are deliberately avoided to focus on development tools, development libraries, and development strategies. This is a recipe-based book; expect to dirty your hands with code that is also outside the boundaries of the recipe, as you would do with food in a real recipe.
Finally, Microsoft Azure is an evolving platform. As technical topics have a high decay rate, Azure services are enriched day by day with new features and service models, making the goal of writing a complete
book almost impossible. However, this book focuses on core concepts, which remain quite stable over time.
What this book covers
Chapter 1, Developing Cloud Services for Microsoft Azure, shows you the main compute engine of Azure (also known as web/worker roles). This building block uses a specific service model to run web applications as well as any other custom code on stateless virtual machines. This chapter is also a great introduction to Visual Studio integration for those who are not familiar with it.
Chapter 2, Deploying Quickly with Azure Websites, shows you one of the most advanced Platform as a Service in the market, which lets customers/developers deploy an existing web application in minutes. This building block does not require a specific development skill, as it is a lock-in-free environment that provides advanced integrated features regarding the ALM. This chapter is essential for anyone who wants to start a new project or move an existing project to the cloud.
Chapter 3, Getting Storage with Blobs in Azure, shows you how Azure deals with storage of files (also known as Blobs). This building block is about Blobs' features, management, and administration, with food for thought for advanced scenarios. This chapter will be helpful to those who want to access the storage services programmatically.
Chapter 4, Going Relational with the Azure SQL Database, shows you the RDBMS of Microsoft Azure, enabling existing SQL-Server-based solutions to move into the cloud seamlessly. This building block is about SQL database management, monitoring, and development. This chapter is a good read to identify the correct approach to SQL on Microsoft Cloud.
Chapter 5, Going NoSQL with Azure Tables, shows you how to use the original Table service as a data store for unstructured data. This building block can be used to store entities when there is no strict need of a SQL-based, but scalable, service. This chapter is particularly useful while building a scalable data store of arbitrary entities.
Chapter 6, Messaging and Queues with Storage and Service Bus, shows you how to build scalable systems with message-based, disconnected systems. This building block covers the need for communication between heterogeneous systems, using queues of messages. This chapter also covers the relayed messaging feature and cross-platform communication.
Chapter 7, Managing Azure Resources with the Azure Management Libraries, shows you how to remotely manage a big portion of the Azure services, programmatically, through Management Libraries. The building block is the Management API on which Management Libraries rely. This chapter is suited for automation solutions, custom management tools, or even parts of complex multitenant systems where resources must be created/configured/destroyed dynamically.
Chapter 8, Going In-memory with Azure Cache, shows you how to improve an application's performance with in-memory caching. This building block is of primary importance for situations where there's web traffic and the demand is high, providing good service by storing frequently accessed information. This chapter is about caching, so it is extremely important to read it even if you are not adopting it as part of the implementation.
What you need for this book
This book requires a basic exposure to the main concepts of cloud computing, as well as the C# programming language and the Visual Studio IDE. The software needed to run the samples (and hopefully extend them) are Visual Studio 2012/2013, with the latest Azure SDK, SQL Server Management Studio Express, and a few free tools that are referenced in the book.
Who this book is for
If you are an architect, this book will help you make the correct decisions about which Azure building blocks to use. If you are a developer, this book will help you understand how to use them appropriately, and if you are a .NET developer, this book is a pure delight.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: Select Custom and specify Local Folder.
A block of code is set as follows:
DefaultEndpointsProtocol=https;AccountName={ACCOUNT_NAME};AccountKey={ACCOUNT_KEY}
/>
Any command-line input or output is written as follows:
C:\Users\Administrator>PowerShell -ExecutionPolicy Unrestricted .\StartupTask.ps1
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: Open Visual Studio, and on the menu bar, navigate to File | New | Project.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <feedback@packtpub.com>, and mention the book title via the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <copyright@packtpub.com> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
Questions
You can contact us at <questions@packtpub.com> if you are having a problem with any aspect of the book, and we will do our best to address it.
Chapter 1. Developing Cloud Services for Microsoft Azure
In this chapter, we will cover the following topics:
Setting up solutions and projects to work with Cloud Services
Debugging a Cloud Service locally with either Emulator or Emulator Express
Publishing a Cloud Service with options from Visual Studio
Debugging a Cloud Service remotely with Visual Studio
Configuring the service model for a Cloud Service
Providing a custom domain name for a Cloud Service
Implementing HTTPS in a web role
Using local storage in an instance
Hosting multiple web sites in a web role
Using startup tasks in a Cloud Service role
Handling changes to the configuration and topology of a Cloud Service
Managing upgrades and changes to a Cloud Service
Configuring diagnostics in Cloud Services
Introduction
Cloud Services are classified typically as Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS). In the IaaS model, the core service provided is a Virtual Machine (VM) with a guest OS. The customer is responsible for everything about the guest OS, including hardening it and adding any required software. In the PaaS model, the core service provided is a VM with a hardened guest OS and an application-hosting environment. The customer is responsible only for the service injected into this environment. In the SaaS model, a service is exposed over the Internet, and the customer merely has to access it.
Microsoft Azure Cloud Services is the paradigm of the Platform-as-a-Service (PaaS) model of cloud computing. A Cloud Service can be developed and deployed to any of the desired Microsoft Azure datacenters (regions) located across the world. A service hosted in Microsoft Azure can leverage the high scalability and reduced administrative benefits of the PaaS model.
In later chapters, we do not see how Azure also offers an IaaS alternative, Microsoft Azure Virtual Machines, to let customers get the ability to deploy customized solutions in fully customized environments. Either way, the benefits of using PaaS are strongly evident compared to IaaS. In PaaS, we can reduce the governance of the whole system, focusing only on technology and processes, instead of managing the IT, as we did earlier. PaaS enforces the use of best practices throughout the development process, forcing us to take the right decisions in terms of design patterns and architectural choices.
From an IT architect's perspective, using PaaS is similar to trusting a black-box model. We know that the input is our code, which might be written with some environmental constraints or specific features, and the output is the running application on top of instances, virtual machines, or, generically, something that is managed, in the case of Azure, by Microsoft.
A Cloud Service provides the management and security boundaries for a set of roles. It is a management boundary because a Cloud Service is deployed, started, stopped, and deleted as a unit. A Cloud Service represents a security boundary because roles can expose input endpoints to the public internet, and they can also expose internal endpoints that are visible only to other roles in the service. We will see how roles work in the Configuring the service model for a Cloud Service recipe.
Roles are the scalability unit for a Cloud Service, as they provide vertical scaling by increasing the instance size and horizontal scaling by increasing the number of instances. Each role is deployed as one or more instances. The number of deployed instances for a role scales independent of other roles, as we will see in the Handling changes to the configuration and topology of a Cloud Service recipe. For example, one role could have two instances deployed, while another could have 200 instances. Furthermore, the compute capacity (or size) of each deployed instance is specified at the role level so that all instances of a role are the same size, though instances of different roles might have different sizes.
The application functionality of a role is deployed to individual instances that provide the compute capability for the Cloud Service. Each instance is hosted on its own VM. An instance is stateless because any changes made to later deployment will not survive an instance failure and will be lost. Note that the word role is used frequently where the word instance should be used.
A central driver of interest in cloud computing has been the realization that horizontal scalability, by adding commodity servers, is significantly more cost effective than vertical scalability achieved through increasing the power of a single server. Just like other cloud platforms, the Microsoft Azure platform emphasizes horizontal scalability rather than vertical scalability. The ability to increase and decrease the number of deployed instances to match the workload is described as elasticity.
Microsoft Azure supports two types of roles: web roles and worker roles. The web and worker roles are central to the PaaS model of Microsoft Azure.
A web role hosts websites using the complete Internet Information Services (IIS). It can host multiple websites with a single endpoint, using host headers to distinguish them, as we will see in the Hosting multiple websites in a web role recipe. However, this deployment strategy is gradually going into disuse due to an emerging powerful PaaS service that is called Microsoft Azure Web Sites. An instance of a web role implements two processes: the running code that interacts with the Azure fabric and the process that runs IIS.
A worker role hosts a long-running service and essentially replicates the functionality of a Windows service. Otherwise, the only real difference between a worker role and web role is that a web role hosts IIS, while the worker role does not. Furthermore, a worker role can also be used to host web servers other than IIS; in fact, worker roles are suggested by Microsoft when someone needs to deploy some kind of software that is not designed to run on the default Microsoft web stack. For example, if we want to run a Java application, my worker role should load a process of the JEE Application Server (that is, Glassfish or JBoss) and load the related files needed by the application to run, into it. This deployment model should be helped by some components, often called accelerators, that encapsulate the logic to install, run, and deploy the third-party stack (such as the Java one, for example) in a box, in a stateless fashion.
Visual Studio is a central theme in this chapter as well as for the whole book. In the Setting up solutions and projects to work with Cloud Services recipe, we will see the basics of the Visual Studio integration, while in the Debugging a Cloud Service locally with either Emulator or Emulator Express and Debugging a Cloud Service remotely with Visual Studio recipes, we will see something more advanced.
Setting up solutions and projects to work with Cloud Services
Microsoft Azure Cloud Service is the paradigm for PaaS. As such, Microsoft Azure provides a high-level, application-hosting environment, which is modeled on services, roles, and instances. The specification of the roles in the service is referred to as the service model.
As we mentioned earlier, Microsoft Azure supports two types of roles: web roles and worker roles. We said that a web role is essentially a worker role plus IIS because they comply with the same running model where there is an entry point that interacts with the Azure environment and our custom code, regardless of whether it is a web app or batch process.
Microsoft Azure provides us with a comprehensive set of command-line tools to package our solutions to be deployed on the Cloud, as they should be wrapped into a single deployment unit that is called a package. A package is like a ZIP file with encryption. It contains every project component of the Cloud Service, so it is the self-containing artifact that goes onto the Azure platform to instruct it about setting up machines and code. This package, along with its configuration, represents the whole Cloud Service that Azure Fabric (the big brain of the Azure data center) can deploy wherever it wants. In terms of black-box reasoning, the input of a Cloud Service is package plus configuration, which we can produce using command-line tools or just using Visual Studio, starting from our classic .NET binaries.
The corresponding Visual Studio artifact for the package mentioned earlier is a project template called Microsoft Azure Cloud Service. It is a .ccproj project that wraps the .NET projects in order to produce the resulting compressed unit