Chapter 1:
Chapter 2:
Chapter 3:
Chapter 4:
Chapter 5:
Chapter 6:
Chapter 7:
978-1-62114-013-9
This document is provided as-is. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice.
Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred.
This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes.
2012 Microsoft. All rights reserved.
Microsoft, Active Directory, BizTalk, Hotmail, MSDN, SharePoint, SQL Azure, Visual C#, Visual Studio, Windows, Windows Azure, Windows Live, and Windows PowerShell are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners.
Most applications today are not simple; they may consist of many separate features that are implemented as services, components, third-party plug-ins, and other systems or resources. Integrating these items when all of the components are hosted locally in your datacenter is not a trivial task, and it can become even more of a challenge when you move your applications to a cloud-based environment.
For example, a typical application may use web and worker roles running on Windows Azure, store its data in SQL Azure databases, and connect to third-party services that perform tasks such as authenticating users or delivering goods to customers. However, it is not uncommon for an application to also make use of services exposed by partner organizations, or services and components that reside inside the corporate network that, for a variety of reasons, cannot be migrated to the cloud.
Applications such as this are often referred to as hybrid applications. This guide focuses on the common challenges you will encounter when building applications that run partly in the cloud and partly on-premises, or when you decide to migrate some or all elements of an existing on-premises application to the cloud. It focuses on using Windows Azure as the host environment, and shows how you can take advantage of the many features of this platform, together with the SQL Azure, to simplify and speed the development of these kinds of applications.
Overview
This book is the third volume in a series about Windows Azure. Volume 1, Moving Applications to the Cloud,provides an introduction to Windows Azure, discusses the cost model and application life cycle management for cloud-based applications, and describes how to migrate an existing ASP.NET application to the cloud. Volume 2, Developing Applications for the Cloud, demonstrates how you can create from scratch a multi-tenant, Software as a Service (SaaS) application to run in the cloud by using the latest versions of the Windows Azure tools and the latest features of Windows Azure.
This guide focuses on applications that span the cloud and on-premises boundary, where some parts run in Windows Azure, while other parts are located inside the corporate network. It also describes how you can integrate these kinds of applications with external partners. The guide describes how a fictitious corporation named Trey Research migrated its on-premises Orders application to a hybrid application that interacts with external transport partners using many features and services available in Windows Azure and SQL Azure. It also includes a series of appendices that document the use cases and challenges typically encountered in hybrid applications, and provide guidance on the technologies for addressing these challenges.
Common Scenarios
Audience Requirements
The guide is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates applications and services that run on or interact with the cloud. Although applications do not need to be based on the Microsoft Windows operating system to work in Windows Azure, this book is written for people who work with Windows-based systems. You should be familiar with the.NET Framework, Visual Studio, ASP.NET MVC, and Visual C#.
System Requirements
These are the system requirements for running the scenarios:
- Microsoft Windows 7 with Service Pack 1 or later (32 bit or 64 bit edition), or Windows Server 2008 R2 with Service Pack 1 or later
- Microsoft Internet Information Server (IIS) 7.0
- Microsoft .NET Framework version 4.0
- Microsoft ASP.NET MVC Framework version 3
- Microsoft Visual Studio 2010 Ultimate, Premium, or Professional edition with Service Pack 1 installed
- Windows Azure SDK for .NET (includes the Visual Studio Tools for Windows Azure)
- Microsoft SQL Server or SQL Server Express 2008
- Windows Identity Foundation
- Enterprise Library 5 (required assemblies are included in the source code download)
- Windows Azure Platform cmdlets (install the Windows Azure Platform cmdlets as a Windows PowerShell snap-in, this is required for scripts that use the Azure Management API)
- Sample database (scripts are included in the Database folder of the source code)
Design Goals
Trey Research's Orders application enables visitors to place orders for products. It is a web application that has evolved over time to take advantage of the benefits of cloud-based deployment in multiple datacenters in different geographical locations, while maintaining some essential services and applications within the on-premises corporate infrastructure. This is a common scenario for many organizations, and it means that solutions must be found to a variety of challenges. For example, how will the application connect cloud-based services with on-premises applications in order to perform tasks that would normally communicate over a corporate datacenter network, but must now communicate over the Internet?
In Trey Research's case, some vital functions connected with the application are not located in the cloud. Trey Research's management and operations applications and some databases are located on-premises in their own datacenter. The transport and delivery functions are performed by separate transport partners affiliated to Trey Research. These transport partners may themselves use cloud-hosted services, but this has no impact on Trey Research's own application design and implementation.
When Trey Research originally created the Orders application it ran entirely within their own datacenter, with the exception of the partner services for transport and delivery. The application was created as two separate components: the Orders application itself (the website and the associated business logic), and the suite of management and reporting applications. It was designed in this way because Trey Research realized early on that these were two separate functional areas.
In addition, the public Orders web application would need to be able to scale to accommodate the expected growth in demand over time, whereas the management and reporting applications would not need to scale to the same extent. Trey Research proposed to scale the management and reporting applications as demand increases by adding additional servers to an on-premises web farm in their datacenter.
Next page