Developing and Extending Applications for Windows Azure with ...

farmacridInternet και Εφαρμογές Web

2 Φεβ 2013 (πριν από 4 χρόνια και 2 μήνες)

346 εμφανίσεις







Developing and Extending Applications
for Windows Azure with Visual Studio

2010


White Paper



1



Published:
February, 2011

Table of Contents
Introduction

................................
................................
................................
.............

1

A Case for Cloud Computing

................................
................................
......................

2

SaaS, IaaS and PaaS

................................
................................
............................

3

Introducing Windows Azure

................................
................................
.......................

5

Hello Cloud!

................................
................................
................................
.............

6

Exploring the Green Fee Broker Sample Application

................................
..................

6

Developing for Windows Azure with Visual Studio 2010

................................
.............

7

Deploying to Windows Azure

................................
................................
................

14

Conclusion

................................
................................
................................
.............

19

About the Author:

................................
................................
...............................

20

Appendix

................................
................................
................................
...............

21

Windows Azure Compute Service

................................
................................
..........

21

Windows Azure Storage

................................
................................
.......................

22

Security in the Cloud

................................
................................
...........................

22


1

Developing and Extending Applications for Windows Azure with Visual Studio
2010


1


Developing and Extending Applications
for Windows Azure with Visual Studio
2010

White Paper

Published:
February, 2011

(style = Published)

For the latest information, please see
http://msdn.microsoft.com
/vstudio

Introduction

Organizations of all sizes are
under increasing pressure to do more with less.


Providing solutions that meet these demands while reducing operational costs and
maximizing efficiency
is not just highly desirable, but has become a necessity.
What’s more, p
roviders of
information technol
ogy

solutions are expected to be
able to guarantee service delivery while dynamically growing with the needs of
the business and at the same time, minimizing costs.


This is a difficult proposition. Organizations must be very careful in selecting
infrastr
ucture and
a platform
that deliver
s both

development

and operational

productivity. These choices must be able to meet both

current a
nd future needs
of the business
.

However,

planning investments around unpredictable
platform
and
infrastructure
costs can be

daunting.


In response to these challenges is the advent
of
a disruptive technology known as
cloud computing
. Wikipedia defines
cloud computing a
s the


natural evolution of
the widespread adoption of virtualization,
s
ervice
-
oriented architecture and
utility
computing. Details are abstracted from consumers, who no longer have need for
expertise in, or control over,

the technology infrastructure ‘in the cloud’

that
supports them
.



Windows Azure is a
Platform as a Service (PaaS)

cloud computing
offering

which
forms

the bedrock of Micr
osoft’s Azure Services Platform. PaaS offerings focus on
enabling customers to develop, deploy and operate applications without needing
to focus on underlying infrastructure or servers or ongoing operation
s

management.


Deve
lopers write applications for Win
dows Azure using Microsoft .NET,

a
comprehensive framework for building
desktop, mobile,
web

and cloud

applications and services
.
While Windows Azure supports
several
non
-
Microsoft
programming
languages
including

PHP, Java and Ruby,
Microsoft .NET offers
developers

a number of

language choices
,


the most common being
Visual
C#
and Visual Basic

for writing applications in .NET

as well as ASP.NET, Microsoft’s
premier framework for building web
applications
. These

a
pplications can be
wri
tten with a simple text editor and command line tools for managing
compilation, however
,

Visual Studio 2010 is the premiere integrated development
2

Developing and Extending Applications for Windows Azure with Visual Studio
2010


2


environment (IDE) for writing .NET applications for deployment both on
-
premise
and in t
he cloud.

A Case for
Cloud Computing

Estimating and provisioning infrastructure is expensive because it is difficult to
predict the elastic needs of an application or service over time. Even when
engaging experts to conduct capacity planning, the needs of

the business can
expand and contract abruptly as demands for products and service
s

are often
elastic. The result is that often times, companies are faced with the choice to
either go small or go big on their infrastructure purchases. The former introduces

the very real risk of service delivery failure, and the latter can be prohibitively
expensive.


As shown in Figure 1, m
any companies typically land somewhere in the middle,
which means a never ending procurement process and ballooning expenses with
serve
r after server seemingly disappearing into a black hole. This is not only a
drain on operating budgets from a hardware perspective, but provisioning and
deploying servers is time consuming and expensive and detracts from the ability
to deploy resources to
more tangible revenue generating activities.



Figure 1: The perpetual mismatch of supply and demand of IT capacities.


Does an organization

need to
over
-
invest in
platform and
infrastructure to ensure
that they are able to scale to the ever changing
needs of the business? What is
the cost of excess capacity that goes unused for any given period of time? Worse,
given increasingly aggressive budgets, what are the consequences to brand
identity and customer experience when under
-
investing and introducing

the risk
of failing to meet the operational needs of the business?


Cloud computing is revolutionary
because it
delivers the consumption of
infrastructure, platform and software as a utility, or a service to the masses.

3

Developing and Extending Applications for Windows Azure with Visual Studio
2010


3


With cloud computing, companies who

are experts at providing infrastructure,
platform and packaged software leverage massive investments in data centers
and redundant infrastructure to provide these capabilities as commodity services
that
your company can
consume as needed. Just as with you
r household utilities,
you
r company extends an application to

just “plug in” to the cloud, taking
advantage of the massive scale and redundancy for a pre
-
defined, metered or
per
-
user rate.

The result is a much better alignment of IT capacity with the elast
ic
needs of the business as shown in Figure 2.



Figure 2: Alignment of capacity with the elastic needs of the business.


In this white

paper,
you’ll learn

how to “plug in” to Windows Azure with Visual
Studio 2010 by walking through the process of taking
an existing application and
extending it for the cloud.


Before we get started, let’s discuss the three most common ways that cloud
providers
, including Microsoft

package their cloud computing products.


SaaS, IaaS and PaaS

The promise of cl
oud is choice,

and there are a number of companies that provide
a variety of cloud services packaged either as Software as a Service (SaaS),
Infrastructure as a Service (IaaS) or Platform as a Service (PaaS) as summarized
in Figure 3.


4

Developing and Extending Applications for Windows Azure with Visual Studio
2010


4


Software as a Service (SaaS) is e
xactly what it sounds like. Companies build
commercial software packages and make them easily available on the Internet.
SaaS can deliver significant savings to organizations that want to take advantage
of packaged offerings such as customer relationship m
anagement (CRM) software
packages allowing greater access to that software without worrying about
“system requirements” or other pre
-
requisites.


Infrastructure as a Service or (IaaS) is a type of cloud service that offers the
management, hosting and provi
sioning of computer infrastructure. Instead of
buying physical hardware such as servers and PCs, installing operating systems,
racking servers and connecting to networks, users of IaaS merely consume
instances of operating systems that are made readily ava
ilable at their fingertips.


While SaaS and IaaS have their place in cloud computing
, for many organizations,
only highly customized solutions will do.
Platform as a Service or (PaaS) abstracts
beyond IaaS
and provides a platform on which to build custom software
enabling
organizations
to develop, deploy and operate applications without needing to
focus on underlying infrastructure or servers or ongoing operation
s

management.


With PaaS, you don’t focus on i
nfrastructure at all. You write your applications
against a given platform

such as .NET

and simply deploy your software
to a
logical container
.

This

eliminates cumbersome deployment chores and simply
makes your application available for use at whatever lev
el of scalability and
redundancy you require.


Microsoft
offer
s

businesses and developers the greatest breadth of choice as they
engage in cloud computing

because they are the only company that delivers
across SaaS, IaaS and PaaS product offerings
. Micros
oft

further

differentiates
itself from Amazon, Google or any other competitor in a fundamental way by
providing customers the flexibility to use on
-
premises technology, cloud
technology or both, as part of Microsoft’s software
-
plus
-
services (S+S) strategy.


In this paper, I will focus your attention on Windows Azure which at its core
provides you with the .NET platform as a service (PaaS) on which to build
customized and highly dynamic applications at Internet scale.


Figure 3: Common products offered by c
loud providers.

5

Developing and Extending Applications for Windows Azure with Visual Studio
2010


5


Introducing Windows Azure

Windows Azure
is Microsoft’s operating system for the cloud
and
forms

the
bedrock of Micr
osoft’s
Windows
Azure Platform.
As a PaaS offering,
Windows
Azure

abstracts the details of hosting, runtime components and
management

which helps you focus your time and resources on building software that delivers
business value.


I
n
addition to providing an operating system for the cloud, the
Windows
Azure
Platform
provides

additional cloud products including
AppFabric
,
SQL
Azure, CDN
and
MarketPlace
. Each of these
technologies enrich the development experience
and reach of applications deployed in Windows Azure, the enterprise,
on premise,
in the cloud
,

or any combination thereof.




AppFabric

is an integrated set of services

for hosting
,

managing,

connect
ing
and securing your
applications
and
third
-
party
applications that are deployed
both on
-
premise or in the cloud.

It allows you to connect and scale your
applications whether they run on
-
premise, in the cloud or both.




SQL Azure
is a cloud
-
based relational database service (RDBMS
) built on SQL
Server
technologies. It
provides many of the capabilities of SQL Server with
the ease of being hosted by Microsoft in the cloud.

With SQL Azure, you just
point your application to
the database and SQL Azure takes care of the rest.




CDN

is a Content Delivery Network that geographically distributes copies of
frequently used data such as files, images, and videos so that they are as
close as possible to users of your applications that
consume this media.

This
helps ensure that the content your application needs can be accessed as
quickly as possible.




Market
p
lace

provides one
-
stop
-
shopping for discovering data feeds and other
applications that can be used to bring your applications to m
arket more
quickly and easily.

For example, DataMarket provides data feeds that you can
integrate with your application, saving you the time and expense of building
or finding this data on your own.


While there are many exciting and useful features in the
Windows
Azure Platform
,
this paper will

focus on
gaining a better understanding of
Windows Azure
and how
easy it is to build new and extend existing applications for Windows Azure with
Visual Studio
2010
. You’ll learn how
together
they

provide

a development, run

time, and management environment that supports the ability to develop, deploy
and run your applications at Internet
-
scale.


To learn more about the Windows Azure Compute Service, Windows Azure

Storage and Security in the Cloud, refer to the appendix of this paper.


6

Developing and Extending Applications for Windows Azure with Visual Studio
2010


6


Hello Cloud!

Exploring the Green Fee Broker Sample Application

Let’s start by exploring a start
-
up company who has recently begun experiencing
growing pains.


Green Fee Broker allow
s golfers to play their favorite courses at the lowest
possible rate. Golfers install
the
“My Green Fee Broker”
application
on their
smart
phone,

pick from a list of participating golf courses, and subscribe to alerts when
a registered course publishes an
available tee time. If
a golfer is
interested in
submitting a booking offer, the
y

can either submit an offer
directly from their
smart phone
, or login to
My
Green Fee Broker Online, a
web
site that
also
provides
the ability to submit a booking request to the Green Fee Broker Service from any
PC. From there, Green Fee Broker
Service
goes to work to search for the lowest
possible
published
rate available, books the course, and notifies the golfer of his
or
her tee time via a
smart phone
alert and/or an e
-
mail notification.


The great thing about the Green Fee Broker Service is that it is always available.
It exposes a
web service

API that can be consumed either by the My Green Fee
Broker
smart phone
applicat
ion

or
Green Fee Broker online

(
as well as
branded
Web properties for specific golf courses
) which allow golfers to
use the
Green Fee
Broker Service API

to submit a booking request on
-
demand or in response to a
smart phone
alert.


However, the greatest str
ength of this product is quickly becoming its biggest
liability
. The success of marketing campaigns and word of mouth has really put a
strain on the company’s ability to ensure that core engine that exposes the API
for managing customer requests and enroll
ing new customers remains available



the volume of traffic to the
Green Fee Broker Service
API
has simply outpaced the
abilities of the current infrastructure and the
occasional

application crashes
threatens the brand that the start
-
up has worked so hard
to build. Realizing that
adding more and more servers, and dealing with the complexities of configuring
web farms and clusters is simply not an option, the company looks to the cloud
for a solution.


One option would be to move the
Green Fee Broker Service

from the on
-
premise
facility to a
n

IaaS provider. While this is certainly
a
more attractive option than
the current situation, installing all of the requisite platform components and
deploying the service to multiple hosted instances really takes away fro
m the
focus of Green Fee Broker which is to simply always be available.

Moreover, the
time and expense managing each of the instances independently could be better
re
-
deployed to activities that enhance the product directly.


After some internal discussion, the development management team decides that
Green Fee Broker Service API

is perfect for deployment
to
Windows Azure
.

A
t its
core is a brokering engine that is exposed

as a
web service

over HTTP

to any
number of

consumers wh
o leverage the API

and

t
he Broker Service

must not only
7

Developing and Extending Applications for Windows Azure with Visual Studio
2010


7


be always available,

but be able to scale to the increasing demands of this
successful start
-
up.
Rather than continuing to fall into the staircase trap depicted
in Figure 1, Windows Azure provides Green Fee Broker with the tools to align
capacity with the precise needs of its customers as originally discussed in Figure
2.


Since the team is already w
riting applications on

the
.NET

F
ramework
, the
learning curve is minimal and they get to leverage the tools and skills they
already have with little to no changes to the code.


In addition,

Windows Azure does not require big expenditures up front
,

so
capit
al
expenses can be c
onverted to operational expense
s
. S
ince the
start
-
up must only
pay for what they use
, they

gain the flexibility and abilit
y to
test new ideas
without having to make big, up
-
front investments in infrastructure which fuels
innovation
. All

of these benefits of Windows Azure

allow
the company
to focus on
buildin
g and innovating on the product on the same platform and with the same
tools they’d build any other applications for .NET.


Developing for Windows Azure with Visual Studio 2010

Visual

Studio is an integrated development environment (IDE) for developing
applications
on

Microsoft
’s

.NET

Framework
.

Visual Studio 2010 provides a
premier toolset for developing
, testing,

and maintaining applications for both on
-
premise deployment and the clo
ud. I’ll show you how to extend an existing
application for deployment to Windows Azure with Visual Studio by adding a
Windows Azure Project and associating it with a
w
eb
r
ole. I’ll then demonstrate
how simple
Visual Studio 2010 makes testing

a cloud appli
cation locally and
packaging it for deployment to Windows Azure.



Exploring the Green Fee Broker Service


The Green Fee Broker Service
is a
web service

written
with

Windows
Communication Foundation (WCF)
. WCF
is a messaging framework that is part of
the
.NET

Framework

that
allows you to share
modular units of functionality called
classes with other applications by exposing the
se

classes with special functions
known as operations.
These operations can be executed by applications on the
same machine, by dif
ferent machines in the same network or on machines on
completely different networks altogether.

The Green Fee Broker Service exposes
key functionality

over HTTP

including operations for registering a new golf course,
retrieving a list of participating golf

courses and allowing golf courses to publish
available tee times.



Visual Studio organizes classes into special containers called projects, which are
in turn grouped into a special container called a solution. A solution can have one
or more projects whi
ch
includes

one or more classes. After you’ve written code
inside classes, you build a solution which conducts a series of verifications to
ensure that the code you’ve written is valid and follows the rules of the language.
If all goes well, each project w
ill be packaged into an assembly which can then
8

Developing and Extending Applications for Windows Azure with Visual Studio
2010


8


either be executed directly or called by a different assembly that is part of a
project

(in the case of a web service, a client sends messages to the assembly
over a communication channel to execute it).


Ins
ide the GreenFeeBroker solution is a Visual Studio 2010 project called
“BookingService”.
In this case, the “BookingService” project uses the WCF Web
Application Template which provides the basic files for building a WCF
web
service
. In its simplest form, t
he WCF Web Application project consists o
f two files
as shown in Figure 4
:




BrokerService.svc

contains the implementation of the operations
mentioned above.



Web.config

contains basic configuration for hosting the web service.


Figure 4
: The Broker Service

project in Visual Studio 2010 Solution Explorer.


The Green Fee Broker service exposes its functionality using SOAP over the HTTP
protocol.
SOAP

makes it possible to use familiar
object
-
oriented techniques when
developing the service and automates the means by which the service exchanges
and processes XML messages over the Internet.


It would be tempting to write the code that implements the
BrokerService
operations directly in the Broke
rService.svc file, however
,

the Green Fee Broker
application was developed with separation of concerns in mind such that each unit
of functionality is independent of the other but work together to get a job done.
As such,
the project contains additional

cl
asses which define a
golf course (the
“Course” class),
isolate business rules for working with courses into a class called
9

Developing and Extending Applications for Windows Azure with Visual Studio
2010


9


“CourseManager” and group all data operations into a common class called
“DataServiceAgent”.


Separation of
concerns
is

an important design principle when developing for both
on
-
premise and cloud because it allows you to focus on slices of functionality and
makes for software that is easy to understand and maintain. What’s more, when
developing applications that will run b
oth on premise and/or in the cloud, the
ability to manage state and make deployment decisions is significantly simplified
by mapping logical layers onto physical tiers as with
web role
s,
worker role
s and
storage
services.


Extending the Green Fee Broker S
ervice for the Cloud


Creating new applications and services for Windows Azure with Visual Studio 2010
is very simple.

Believe it or not, since the service was written in .NET
with Visual
Studio
for on
-
premise hosting,
with the exception of a little config
uration, it is
already ready to be hosted in Windows Azure.


To demonstrate this, let’s take the existing Green Fee Broker application and
enable it for Windows Azure
1
.


Creating a Windows Azure Project


T
he first thing you will do when developing or exte
nding an application for
Windows Azure is add a
Windows Azure
P
roject to your Visual Studio 2010
solution. Just as the WCF Service Application template provides everything you
need for creating a WCF
web service
, the
Windows Azure Project template
provides

the container and

configuration required to package a common Visual
Studio 2010
solution

for Windows Azure.

To get started simply

add a new
Windows Azure Project to the GreenFeeBroker solution,

provide a name for
the

project
, and

click OK

(Figure 5)
.




1

In addition to Visual Studio 2010, you must install the Windows Azure Tools for Microsoft Visual Studio
version
1.3 which includes the
Software Development Kit (SDK) and is available here:
http://msdn.microsoft.com/windowsazure/cc974146.aspx
.

If you are running a
32
-
bit version of Windows 7, or are running Windows Vista or Windows Server 2008, there are some hotfixes you will want to insta
ll as
well.


10

Developing and Extending Applications for Windows Azure with Visual Studio
2010


10



Figure 5: Adding a Windows Azure Project in Visual Studio 2010


Visual Studio 2010 presents you with a list of roles that will tailor the template to
the kind of application you are building. In this case, since we want to
enable

the
BrokerService

for Wind
ows Azure

we’ll choose

the WCF Service
web role

as shown
in Figure 6
.



Figure 6
:
Choosing the WCF Service
web role
.


The Windows Azure Project makes it simple to configure
the BrokerService project

for Windows Azure by providing a user interface for asso
ciating projects with a
role. You can simply
right
-
click on the Roles icon to select an existi
ng project or
create a new one after which the project you added will be associate
d

with the
role as sh
own in Figure 7
.

11

Developing and Extending Applications for Windows Azure with Visual Studio
2010


11



Figure 7
:
The result of
associating

a ne
w or existing project to a Windows Azure
Project
.


To make working with the solution as easy as possible,
right
-
click the
GreenFeeBroker.C
loud project and select “Set as Start Up Project
.
” This ensures
that when you test your application locally, the proje
ct is initialized correctly in
the Development Fabric
(
which is covered shortly
)
.


There are a number of configuration options when deploying your application or
service to Windows Azure and you can set these options by
right
-
c
licking on the
associated
role (in this case the

BrokerService shown in Figure 7
) and selecting
properties.


The most common settings include how many instances you would like Windows
Azure to allocate for you upon deploying your application as well as the size of the
virtual machi
ne your deployment will target. These choices are among the most
important because they will have a direct effect on applic
ation performance,
availability,
scalability

and cost
.


Figure 8

shows various configuration options including
the type of virtual m
achine
you want to use and the number of i
nstances

you’d like Windows Azure to
allocate to your application
.
In this case, I’ve configured 4 Small instances.
Don’t
worry if you aren’t sure what settings to choose at first.
As you learn more,
c
hances are yo
ur needs can and will change and the nice thing about Windows
Azure is that you can change your mind!


12

Developing and Extending Applications for Windows Azure with Visual Studio
2010


12



Figure 8
: Windows Azure
web role

c
onfiguration
options.


The
Settings
tab allows you to set configuration string/value pairs for things like
database
connections, paths for logging, etc. Visual Studio 2010 provides a great
development experience by allowing you to set up configurations for both testing
locally and running in the cloud.


Local Testing with the Development Fabric


Visual Studio 2010 provi
des full application lifecycle management capabilities for
applications designed to run both on
-
premise and in the cloud. When developing
applications for Windows Azure, the development lifecycle is
consistent with best
practices for Application Lifecycle
Management (ALM).


As shown in Figure 9
, y
ou develop and test locally with Visual Studio 2010 and
development run
-
time tools for emulating both Compute and Storage. You then
deploy to a staging environment provided in the cloud by Windows Azure where
you
perform testing before finally pushing your application or service to
production.



Figure 9
: Windows Azure Application Lifecycle Management
.

13

Developing and Extending Applications for Windows Azure with Visual Studio
2010


13



Visual Studio 2010, together with the Windows Azure SDK
,

includes a package for
doing local
development,
testing

and debugging called the Development Fabric.
The Development Fabric c
onsists of two main components:
the Compute Emulator
and the Storage Emulator.


The
Compute Emulator allows you to build, deploy and test your applications for
Windows Azure in your loc
al development environment. You might think of the
Compute Emulator as the equivalent of the web hosting capabilities inside Visual
Studio that provides an Azure hosting and debugging experience that emulates
IIS. Visual Studio provides a seamless developm
ent, testing and debugging
experience that allows you to interact with your application running in the
Compute Emulator directly from within the IDE.


For simulating the
storage service
, the Windows Azure SDK includes a
storage
service
emulator intended fo
r local development and testing called
the
Storage

Emulator
.
The Storage Emulator

provides a development experience that is
identical to working directly with
Azure
storage
at the API level.
When working
locally, Visual Studio will automatically provision
local storage for you using any
recent version of Microsoft SQL Server including SQL Server Express Edition. This
allows you to write code that uses the same storage APIs regardless of whether
the code is running locally or in the cloud
. However,
please be

aware that the
Storage Emulator is for development purposes only and should never be used for
production scenarios.


In fact, with

V
isual Studio 2010, interacting with the
Development Fabric
is simply
a matter of
running

your application

from
the IDE
!


When you
start your solution within Visual Studio 2010
, you will notice some
feedback in the lower
left
-
hand corner of the IDE indicating that Visual Studio is
both packaging and deploying your application to the
Development Fabric
including application co
de to the Compute Emulator and table, blob or queue
instructions to the Storage Emulator

(please refer to the appendix for more
information on the Windows Azure storage service)
.


At this point,
the

application is
hosted
and ready for testing. Visual Studi
o 2010
will automatically
open a browser window with the base address of your
application or service and
put the application into
debug
mode which allows you
to interact with the application and conduct any troubleshooting with the code in
an interactive m
anner.


In addition,
any instructions for creating tables, blobs or queues will be executed.

These instructions can be placed in a
global file

which will allow for the code to be
executed during various stages of the application lifecycle including start
up.


To see the active deployment, look for the Windows Azure icon in your task
taskbar,
right
-
click it and select
“Show Compute Emulator UI”
.

14

Developing and Extending Applications for Windows Azure with Visual Studio
2010


14


The Windows Azure Compute Emulator UI provides visibility into the application’s
status and health. You can star
t and stop the application as well as continue to
monitor it visually. Notice in
Figure 1
0

that there are four virtual instances of the
application, just as we selected when we configured the BrokerService Windows
Azure Project.



Figure
10
: The Windows
Azure Compute Emulator UI
.


At this point, with
the Broker
Service hosted,
you
can test it as
you

normally
would and make any modifications necessary before deploying to Windows Azure.


Deploying to Windows Azure

Once you have developed and tested your appl
ication locally, you are ready to
deploy to Windows Azure!


Packaging
Your
Application with Visual Studio 2010

The first step to deploying your application to Windows Azure is to create a
deployment package. Visual Studio 2010 simplifies this process by au
tomating the
creation of the package for you when you
right
-
click on the Windows Azure
project and select “Publish
.


As shown in Figure 1
1
, y
ou can choose from two
approaches:



Create Service Package Only
.
This creates a package file containing your
applica
tion and a configuration file containing all the settings that you
15

Developing and Extending Applications for Windows Azure with Visual Studio
2010


15


specified for provisioning, deploying and run
ning

your application. You can
then upload your package via the Windows Azure Management Portal.



Deploy Your Windows Package to Windows Azure
.
T
his automates packaging
and deploying your application into one easy step.

The second option requires

that an X.509 certificate be installed on the local
development machine and uploaded to the Windows Azure
Management Portal to
ensure that only authorized

packages are being deployed.



Figure 1
1
: Windows Azure packaging and deployment in Visual Studio 2010.


I’ll show you how to deploy your application using the first method
to give you
so
me

familiarity with
the Windows Azure Management Portal
.
A
s you gain
experience
with setting up and managing Windows Azure deployments, the fully
integrated deployment experience that the second option provides

within Visual
Studio

will become useful, particularly when re
-
deploying existing applications or
servic
es.


To package your solution, c
lick OK and you will instantly see Windows Explorer
open to the location of the package that Visual

Studio 2010 created. Figure 1
2

shows the two files that are created.


16

Developing and Extending Applications for Windows Azure with Visual Studio
2010


16



Figure 1
2
: Service Package and Configuration files f
or deployment.


Deploying
Your
Application via the Windows Azure Management Portal


The Windows Azure Management Portal provides everything you need to manage
your Windows Azure Platform services, including
compute
r
oles
,
storage
, CDN,
AppFabric and
Market
place
services.


When you log into the portal

(
provided you’ve set up a Windows Azure
account
),
you will have the option to create a
new
Hosted Service and a
new
Hosted Storage Account. These options allow you to define a
compute
and
storage
deployment, wh
ich you must do before you deploy you
r

application and
corresponding storage requirements to Windows Azure.


The process for deploying an application or service to
stage
or
production
is
identical, and you must choose one of the two when first deploying
your
application to Windows Azure.


To deploy the BrokerService, after clicking on “New Hoste
d Service” as shown in
Figure 1
3
, a window appears which you populate in order to prepare the hosting
environment. After you select a subscription account, you pro
vide a name for the
service that you’ll use to easily identify the application in the Windows Azure
Management Portal. You also must specify a unique URL prefix as this will become
part of the fully qualified URL that will be used to access your applicatio
n or
service, in this case the BrokerService WCF
web service
.


17

Developing and Extending Applications for Windows Azure with Visual Studio
2010


17



Figure 1
3
: Windows Azure Management Portal New Hosted Service
provisioning.


You will also notice
the ability to select
affinity groups, which

allow

you to make
explicit requests for where y
our Compute and Storage
applications will be located.
For example, s
ince the

Windows Azure data centers are geographically distributed
worldwide,

to optimize performance

it may be
a good idea
to ensure that your
application hosted in Compute is as close to

your data hosted in Storage as
possible.

Affinity
groups
are the tool for accomplishing this.


Deployment options include whether you want to deploy your application to the
stage environment
, the
production environment
, or not at all. Keep in mind that
yo
u will be billed the same regardless of whether you choose
stage
or
production
.
The main benefit of having two environments is the ability to test a version of an
application before it is live in production, and this is particularly useful when
testing two

versions of an application side by side.


You can select anything you’d like for the Deployment
name
, but I recommend
adopting a simple versioning standard that you can use as a label. This will make
it easy to identify and track
and recognize the
differe
nt versions
of your
applications and services
as you move them from
stage
to
production
.


Lastly,
providing

the

path to the

package and configuration files tha
t Visual Studio
created for you
by clicking “Browse Locally…”
and clicking OK will begin the
deployment and provisioning process.


The

management experience
that

is
created
based on yo
ur choices
will show you
that

four

instances
of compute (in this case, 4 “Small” VMs)
are being
allocated
for v1 of the

BrokerService
.
The status of each instance will cycle through
waiting, creating, and starting the compute instances that will host the
18

Developing and Extending Applications for Windows Azure with Visual Studio
2010


18


application.
T
his
takes a few
minutes
, however w
hen you consider how long it
would take to get
four

traditional servers

or virtual machi
nes

up and running

in a
load balanced environment

and fully deployed with your application, the speed
and ease
of accomplishing this with just a few simple clicks is

quite remarkable!


As shown in Figure
14
, w
hen
all

instance
s are ready the logical service

will show
a
status of

Ready. Clicking on the label will provide metadata about the deployment
including the date created, number of instances allocated, along with the DNS
name to the publically availab
le URI which provides a single
logical load balance
d
endpoint to the BrokerService.




Figure
14
:

The BrokerService ready

for consumption
.


Testing in Windows Azure

At this point, you can test the service just as you would in a traditional on
-
premise testing environment.


To
browse to

the service, simply c
lick on

the DNS name shown in Figure
14
which
will launch your browser. Add the BrokerService.svc file name at the end of the
URL in the address
bar
and you should see a hosting page appear indicating that
the service is ready to be consumed.
I always reco
mmend conducting post
-
deployment verification testing or “smoke testing” to ensure that the service is
hosted properly and able to perform common, routine functions.


You can use the WCF Test Client that ships with Visual Studio 2010 to test the
service i
n Windows Azure staging or production just as you
would
locally
against
the Storage Emulator.


19

Developing and Extending Applications for Windows Azure with Visual Studio
2010


19


Promoting to Production in Windows Azure


Once you’ve deployed your application to Windows Azure, you can instantly
deploy your application to
production
by
selecting the “Swap VIP” option

in the
Azure Management Portal
. If you don’t have an active
production
deployment,
then your
staging
deployment will be promoted to
production
. From this point on,
you can use the
production
URL, in this case
http://brokerservice.cloudapp.net
.


Managing
Your
Application in Windows Azure


You will use the
Windows Azure Management Portal not only for deploying, but
also
for
managing your Windows Azure applications and services.


When you are ready to deploy a new version of the application, you can follow the
same
steps

outlined above which will result in a different version deployed to
physically separate nodes in the
stage
environment.


You can also upgrade a currently running application by uploading a newer
version of the package or configuration, and you can also choose to simply update
the configuration file, leaving the package or application code intact.


In addition, you can provi
sion
storage
services including
table
,
blob
and
queue
from the same management portal. In fact, while details on
storage services
are
beyond the scope of this white

paper, the BrokerService sample application
makes extensive use of
table
storage
for storin
g new golf course descriptions and
for retuning a list of all golf

courses in the store.
A
storage
account has been
created for the BrokerService application called “GreenFeeBrokerTable” and the
REST endpoints for accessing the
table
,
queue
and
blob
storage services are
provided just as with the local Storage Emulator.


Conclusion

Organizations of all sizes stand to benefit from cloud computing. Windows Azure
provides Platform as a Service
capabilities that allow developers to leverage the
ease and pr
oductivity of Microsoft .NET
,

and Visual Studio 2010 provides a
premier development environment for developing applications both on premise

and
in the cloud. Together, Windows Azure and Visual Studio 2010 provide a
powerful value proposition for building n
ew applications while extending existing
applications

to take advantage of the cloud,

making the development, testing and
management of hybrid applications virtually seamless.


20

Developing and Extending Applications for Windows Azure with Visual Studio
2010


20


About the Author:

Rick G. Garibay is the General Manager of the Connected Syst
ems Development
practice at Neudesic. Rick is a Microsoft MVP, speaker and author focused

on
connected technologies such as
SOA and hybrid composite solutions
.

This paper is derived from an article originally printed in
CODE Magazine

and is
used with permission of the publisher, EPS Software

Corporation
.

This white paper was developed in partnership with A23 Consulting.

For more information:

http://www.microsoft.com/visualstudio





21

Developing and Extending Applications for Windows Azure with Visual Studio
2010


21


Appendix

Windows Azure Compute Service

The Compute Service is a logical container for any number of Windows Server
virtual machines that host your application. The Compute Service uses load
balancers whi
ch ensure that requests for your application are always routed to an
available virtual machine instance (provided multiple instances have been
configured).


The Compute Service is partitioned into two roles:
w
eb
r
ole

and
w
orker
r
ole
. Each
role has affinity to a virtual machine; however, an application in each role is
never aware of what physical machine or logical virtual machine it is running on.


When designing an application for Windows Azure, your application must target
either
the web role or worker role, and it can also be partitioned and distributed
to take advantage of both.


Web Role


You can think of a web role as a container for web applications that you would
deploy to a web server. In Windows Azure, an application design
ed for the web
role runs on Microsoft’s flagship web server, Internet Information Services (IIS)
which provides a premiere hosting environment for both .NET and non
-
.NET
applications and services. Applications deployed to a web role can accept HTTP
and HTT
PS requests from outside of the Microsoft data center network (i.e., your
desktop or your customer’s server in their own data center). As such, it is
somewhat equivalent to an on
-
premise DMZ (or demilitarized zone).


Worker Role


A worker role can only acc
ept input from another application inside of Windows
Azure and accepts requests via a Windows Azure storage feature called Queue
Storage. A worker role equates to the same way you might think about an
application server in a traditional on
-
premise data cen
ter which may run a series
of middleware services that do heavy, long
-
running work in the background,
ensuring that the user experience of your front
-
end application is not affected.


Of course, you may choose to design your logical application taking a la
yered
approach which includes both roles and this is an excellent pattern if you want to
provide optimal scalability by supporting background, asynchronous work that
does not consume resources in the web role application. In this white paper,
however, I wi
ll focus on developing an application exposed as a web service
deployed to a web role.

22

Developing and Extending Applications for Windows Azure with Visual Studio
2010


22


Windows Azure Storage

Just as with on
-
premise applications, for software to be useful, it must be
able to save and retrieve information across a variety of media types
i
ncluding text or strings, objects, and files such as images, documents,
music or video.
The
s
torage
s
ervice provides three key
options for enabling
your applications to store and interact with data and resemble traditional
storage mechanisms you may be use
d to when writing software on
-
premise.



Table
s
torage

allows developers to model their conceptual schema using
.NET entities without regard to the underlying logical storage technology.
The Table
s
torage service is exposed using

an architectural style

known

as
REST which provides the ability to insert, update, delete and read
records within tables deployed to Table
s
torage.

Although this is different
than common relational approaches to data storage and manipulation, it
provides a simple alternative to other

options such as Microsoft SQL
Azure.



Blob
s
torage

allows you to store data in binary form, which is ideal for
media types such as images, files or trees. You can think of Blob storage
as a file system for Windows Azure.



Queue
s
torage

provides queue
-
base
d messaging between applications and
roles. Queues are very common in distributed software design as they
provide both a means for processing jobs in the order the jobs are created
as well as durabilty for ensuring that jobs or messages are not lost before

they can be processed.


Security in the Cloud


Security is a very broad topic, yet eminently important to anyone adopting cloud
computing. Microsoft takes great care in ensuring the security of their datacenters
and servers and puts you in control of app
lying the necessary security
requirements in your applications.


Since you are targeting the same platform (Windows and .NET) both on
-
premise
and in the cloud, you use the same tools and techniques for identifying the users
of your application (authenticat
ion) and deciding what privileges they have
(authorization). You can also encrypt and digitally sign your data as necessary
just as you would on
-
premise. In addition, Microsoft provides a service known as
the Access Control Service (ACS) which allows you t
o take advantage of claim
-
based security, which greatly simplifies the process of authenticating and
authorizing users of your applications and takes advantage of a variety of identity
providers including Windows Active Directory, Windows Live, and FaceBoo
k.


For more information on security scenarios in Windows Azure, please see the
Patterns and Practices site dedicated Windows Azure Security:
http://azuresecurity.codeplex.com/
.


23

Developing and Extending Applications for Windows Azure with Visual Studio
2010


23


   




©2011 Microsoft
Corporation. All rights reserved. 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. You bear the risk of using it.

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.