Michells Mesterværk

Windows Azure – udviklingsoplevelsen!

by Administrator 19. May 2009 09:32

Hvis du ikke har læst min første blog post om Windows Azure, burde du, inden du går videre her, lige sætte dig ind hvad Windows Azure dækker over.

Når du har fået dine adgangskoder og nøgler til netop Windows Azure, og har installeret Cloud Services templaten til Visual Studio samt Windows Azure SDK’et så kan du nu oprette et Windows Azure projekt.

Du vil ligge mærke til at der er ændret et par ting i forhold til at oprettet “normalt” projekt. Der er et par nye termer der skal afmystificeres men når det er sagt, så er det faktisk ikke så slemt.

AzureProject 

Når man udvikler med Windows Azure er tingene delt op i forskellige “roles”. Pt. har vi 2 roles; en worker-role og en web-role.

En worker-role er en process der køre i baggrunden af enten en eller flere andre processer. Det er en slags service som hele tiden køre, og som du kan få til at holde øje med andre ting. Når du udvikler Windows Azure lokalt har du adgang til din worker-role via en form for “console” vindue, men på selve Windows Azure kan du ikke tilgå den rent visueen lt.

En web-role er i realiteten et web projekt hvori du kan gøre stort set de samme ting som i et normalt webprojekt med Visual Studio. I Windows Azure er der også undstøttelse for Full Trust, FastCGI og native kode, så du behøver ikke at udvikle ASP.NET men kan også bruge f.eks PHP. (nedenstående er et “Web and Worker Cloud Service” projekt”.)

 

AzureSolution

Lad os starte med at åbne code behind filen til Default.aspx. Den ligger i vores web-role. Lav en Response.Write(DateTime.Now); og debug din løsning. Nu vil du se, at ligsom der plejer, åbnes et browser vindue og ud kommer vores dato. Det er der ikke meget nyt i.

Development Fabric

Når man har installeret Windows Azure SDK’et kommer der bla. et lille program med som hedder “development fabric”. Dette lille program er faktisk din lokale instans af Windows Azure – jeps – intet mindre!

Prøv at lav en “Set as StartUp Project” på det øverste af projekterne (MyFirstApp på billedet). Genstart Visual Studio som Administrator (hvis du ikke allerede er det) og kør en debug på løsningen.

Hvis din development fabric ikke starter så se efter om den ligger i din system tray til højre for din task bar.

DevFabric

Som du kan se i developer fabric er der både en WebRole og en WorkerRole, og når du debugger din løsning lokalt vil din applikations forskellige roles være at finde her.

Hvis vi kigger på vores WorkerRole i developerment fabric’en, og samtidig prøver at åbne vores WorkerRole.cs fil fra vores WorkerRole projekt, kan vi se at der bliver skrevet til en log.

public class WorkerRole : RoleEntryPoint
{
    public override void Start()
    {
        // This is a sample worker implementation. Replace with your logic.
        RoleManager.WriteToLog("Information", "Worker Process entry point called");

        while (true)
        {
            Thread.Sleep(10000);
            RoleManager.WriteToLog("Information", "Working");
        }
    }

    public override RoleStatus GetHealthStatus()
    {
        // This is a sample worker implementation. Replace with your logic.
        return RoleStatus.Healthy;
    }
}

Du kan se hvordan WorkerRolen’s log bliver udskrevet under development fabric’en. Du skal forstå dette som, at din WorkerRole hele tiden køre og, at den i modsætning til din WebRole aldrig har noget med brugerens interaktion at gøre.

workerRole

Kør PHP og ASP igennem Windows Azure.

Med FastCGI kan du køre PHP på Windows Azure, og ærlig talt så er det ikke ret meget det kræver at sætte ens WebRole op til at kunne klare den opgave.

1. Installer PHP på din maskine (følg disse steps: http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/).
2. Tilføj en web.roleConfig (xml fil) fil til dit WebRole projekt.
3. Tilføj dette kode til din web.roleConfig fil:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <fastCgi>
      <application fullPath="%RoleRoot%\php\php-cgi.exe"/>
    </fastCgi>
  </system.webServer>
</configuration>

4. Åben ServiceDefinition.csdef i dit Cloud Service projekt og tilføj følgende kode:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyFirstApp" 
xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="WebRole" enableNativeCodeExecution="true"> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name="HttpIn" protocol="http" port="80" /> </InputEndpoints> </WebRole> <WorkerRole name="WorkerRole"> </WorkerRole> </ServiceDefinition>

5. Åben en “Administrator” command prompt fra roden af dit WebRole projekt og lav en xcopy af PHP ud til din webrole:

xcopy /s \php php (tryk D når den spørger)

6. Tilføj en handler til PHP filer i din WebRole web.config fil:

<add name="PHPCgiModule" path="*.php" verb="*" modules="FastCgiModule" 
scriptProcessor="%RoleRoot%\php\php-cgi.exe" resourceType="Unspecified" />

7. Tilføj en php fil med følgende kode: <?php phpinfo();?> ,til din WebRole og debug din løsning!

phpAzure

Vil du køre ASP tilføjer du bare en fil til din WebRole, det er allerede konfigureret til at virke :).

Er det bare hosting ?

Ovenstående eksempler er sådan set bare hosting. Dog uden at have adgang til serveren på nogen måde – heller ikke med FTP. Og nej, vi har jo ikke engang set på hvordan vi rent faktisk kan ligge det op i Windows Azure endnu. Det kommer vi naturligvis til.

Dog er der et par ting hvor Azure skiller sig ud for at være en ordinær og ret kedelig hosting løsning. En af tingene har vi allerede været en lille smule indover, nemlig den her WorkerRole. Vi kommer til at se mere til vores WorkerRole i nogle af de næste blogposts.

En ting som vi slet ikke har kigget på er vores konfigurationsfil der ligger i selve Cloud Service projektet. Filen hedder ServiceConfiguration.cscfg og åbner du den kan du se, at der pr. default er skrevet noget om “Instances”. Som jeg nævne i den forrige post er der bygget skalering direkte ind i Windows Azure, og det er netop lige her man bla. kan konfigurer dette. Hvor mange instanser ønsker du at køre af henholdsvis din WorkerRole og din WebRole. Instanser = kørende kopier af samme software.

Du kan teste det lokalt med det samme. Prøv at ændre Count til 10 på din WorkerRole’s konfiguration og debug; <Instances count="10"/>. Hvis du åbner din development fabric nu kan du se 10 instanser af din WorkerRole og det må være tegn nok til at det virker efter hensigten. Rent teknisk ligger der en loadbalancer foran din løsning nu, og den finder selv ud af hvor det enkelte request skal peges hen.

At kunne skalre sin løsning ved kun at ændre en konfiguration, og i fremtiden automatisk, åbner helt nye døre for både udvikleren og forretningen. Kan du skalere din løsning til 1.000.000 hits om dagen på så kort tid lige nu ? Uanset hvad du svare, så tror jeg næppe du har et lignende fleksibelt miljø som dette.

Opsamling

I denne blogpost har vi set lidt på hvad WebRole og WorkerRole begreberne betyder og hvordan de virker lokalt. Vi så på hvad Windows Azure development fabric er for noget, og hvordan man i sammenspil med den, kan se hvad ens WorkerRole laver. Til sidst har set hvordan vi kunne få afviklet PHP via FastCGI og hvordan man kan skalere sin løsning ved hjælp af ganske enkel XML konfiguration.

Tags:

VS2010

Comments

7/17/2009 7:06:38 PM #

Maria

Nice blog, just book marked it for later reference

Maria United Kingdom

7/17/2009 7:06:42 PM #

Peter

I have enjoyed your blog, thank you,

Peter United Kingdom

7/19/2009 9:59:08 PM #

запознанства

Thank you, for this code Smile Cheers!

запознанства

10/7/2009 9:12:06 AM #

rapid4me

Everything is now clear, thanks for posting this example.

rapid4me Russia

10/21/2009 8:15:33 AM #

Online loans

Now you are smart blog writer. As you have mentioned the entire information clearly. Thanks

Online loans United Kingdom

10/21/2009 10:00:00 PM #

fast cash advance

I just hope to have understood this the way it was meant

fast cash advance United States

10/30/2009 8:12:08 AM #

Same day payday loans

I am interested in reading your blog.

Same day payday loans United States

11/2/2009 7:56:48 AM #

Payday No Teletrack

It really seems that you have done hard work on this post. I think no one can reject it. Keep it up.............. Thanks a lot.

Payday No Teletrack United States

11/7/2009 9:24:31 AM #

Cheap Payday Loans

I really like your writing style………..thanks. Keep it up and I will wait for your next post.

Cheap Payday Loans United Kingdom

11/10/2009 10:42:49 AM #

Contract Mobile Phones deals

What a great post you made here. I am really impressed and want to copy some points in your blog………………thank you so much for posting.  

Contract Mobile Phones deals United Kingdom

11/10/2009 10:26:05 PM #

Anders Lybecker

Hej Daniel,

God dev intro til Azure.

I dag snakkede jeg en times tid med Simon Karn, Azure Specialist fra MS UK. En super diskussion om muligheder med Azure og om de nye tiltag der kommer i næste.

Du er vist ramt af lidt blog spam...  Smile

Anders Lybecker Denmark

11/12/2009 11:15:27 AM #

Payday No Teletrack

Well I think it must be one of the star rated posts because it is truly very nice and unique too. Thanks you so much for this post.  

Payday No Teletrack United States

11/12/2009 11:19:38 AM #

Golden Triangle Tours Package

I am glad to receive this post because the stuff of this blog is very interesting. Thanks for making some difference  

Golden Triangle Tours Package United States

11/13/2009 7:23:45 AM #

faxless payday loans

I guess there's always an easier way ...

faxless payday loans United States

11/13/2009 10:13:42 PM #

cash loans

Yea nice Work !Laughing

cash loans United States

11/18/2009 10:33:33 AM #

payday loans

I just hope to have understood this the way it was meant

payday loans United States

11/18/2009 10:20:25 PM #

payday loans

Hmmm interesting stuff

payday loans United States

11/25/2009 7:18:51 AM #

Must High School

Howdy, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you prevent it, any plugin or anything you can advise? I get so much lately it's driving me mad so any assistance is very much appreciated.

Must High School United States

11/25/2009 7:20:25 AM #

Must High School

This is a great article thanks for sharing this informative information.. I will visit your blog regularly for some latest post.

Must High School United States

11/25/2009 7:23:40 AM #

Must High School

POST input and decides what to do with it, handing over to domain objects (ie the model) which contain the business rules and know how to carry out specific tasks such as processing a new subscription.

Must High School United States

11/25/2009 7:26:18 AM #

Must High School

Your post is just the same to the thoughts I was having today. Thanks for perfect ideas.

Must High School United States

12/2/2009 8:24:33 PM #

payday loans


This is exactly what i was looking for. thank you for the informative post and keep up the good work!

payday loans United States

12/6/2009 12:41:30 AM #

agrandir penis

Of course, what a great site and informative posts, I will add backlink - bookmark this site? Regards, Reader.

agrandir penis United States

12/29/2009 2:38:58 PM #

Georgia Payday Loans

I just hope to have understood this the way it was meant

Georgia Payday Loans United States

1/19/2010 11:19:33 PM #

women's tank tops

Very good blog! It is rare that I find something new in blogs, but you know how to surprise your visitors. Thank you very much for working for us! Your blogs are strong and different than others' writings.

women's tank tops United States

1/22/2010 1:32:21 PM #

payday loans

I just hope to have it understood the way it was meant

payday loans United States

1/26/2010 11:06:57 AM #

fast payday loans

It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something.

fast payday loans United States

2/14/2010 1:57:24 PM #

اخبار

Thank you very much for the possibility to have a look into the office. Nice boy, he has got the talent to explain.

اخبار Egypt

2/23/2010 4:08:26 PM #

high life style

Make a better friend of every man with whom you come in contact

high life style United States

2/24/2010 10:03:09 PM #

stock prices

I didn't see a link anywhere but do you offer advertising? I have several blogs in the same niche and I would like to add my banner somwhere on your page.

stock prices United States

2/25/2010 2:54:30 AM #

Daniel Millions

Just wanted to say that you have some awesome content on your blog. If it's allowed I would like to use some of it on my blog. If I link back to your website do I have your permission to do so?

Daniel Millions United States

2/28/2010 3:20:20 AM #

stock broker

Do you mind if I quote you on my website if I link back to your website?

stock broker United States

2/28/2010 11:33:18 AM #

stock quotes

Great blog it's not often that I comment but I felt you deserve it.

stock quotes United States

3/1/2010 11:14:53 PM #

gazeteler

Fine information, many thanks to the author. It is puzzling to me now, but in general, the usefulness and significance is overwhelming. Very much thanks again and good luck!

gazeteler United States

3/4/2010 6:22:47 AM #

watch movies online free

I like streaming movies online, it is way cheaper than going to the theaters.

watch movies online free United States

3/9/2010 8:44:05 PM #

WoW Mobile

Do you know which cell phone services allow tethering?

WoW Mobile United States

3/17/2010 11:56:00 AM #

arac sorgulama

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

arac sorgulama United States

3/20/2010 3:33:19 PM #

ehliyet

Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work.

ehliyet Denmark

4/7/2010 9:32:20 PM #

IA Payday Loans

No person will make a great business who wants to do it all himself or get all the credit.

IA Payday Loans United States

Add comment


(Will show your Gravatar icon)

(De 3 specielle karaktere i det danske alfabet?)
  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen