Soms is het kosten efficiƫnt om een WebRole en een WorkerRole te combineren. Op deze manier nut je de volledige capaciteit van de VM/Server uit, zonder dat je extra instanties nodig hebt.

Stel je het volgende scenario voor. Je hebt een WebRole met 2 Websites en je hebt een WorkerRole. Maar nu blijkt dat de WorkerRole met een minder grote VM had kunnen draaien. Dan kun je uiteraard een kleinere VM kiezen, maar als je al een XS gekozen hebt?

Sterker nog, de WebRole met zijn 2 WebSites gebruikt ook niet de volle kracht van de VM.

clip_image002_thumb1

Dan lijkt het interessant om beide rollen samen te voegen.

clip_image004_thumb

Dat samenvoegen gaat simpel, door de WorkerRole logica te verplaatsen naar de WebRole. Dat kan door de methode Run() toe te voegen aan de WebRole.cs.

Let op: je zult eventuele specifieke settings uit app.config of Role configuration wel moeten verplaatsen van WorkerRole naar de WebRole web.config of Role configuration.

public override void Run()
{
  Trace.WriteLine("WorkerRole entry point called", "Information"
);
  while (true
)
  {
    <own logic>

    Trace.WriteLine("Working", "Information"
);
  }
  base.Run();
}

Hier een meer uitgewerkt voorbeeld.

clip_image006_thumb1

In de Local Development Emulator zie je dan ook daadwerkelijk de Traces langs komen. Terwijl de website gewoon in de browser geopend is en volledig functioneel. Uiteraard merk je als gebruiker van de Website niets dat er op de achtergrond nog een ander proces hard aan het werk is. Als je dat wel merkt, dan hebben we het daar zo over.

clip_image008_thumb

De andere kant om kan natuurlijk ook. Je hebt een WorkerRole en wilt daar een WebRole bijzetten. Je zult dan wel logica voor het starten van de website moeten inbouwen. De eerste kant uit is het eenvoudigst.

Op dit moment houdt hij zich voornamelijk bezig met Microsoft Azure, Cloud, C#, Software Ontwikkeling, Architectuur, etc. Hij werkt als consultant voor zijn eigen bedrijf JOEP-IT bv. In zijn vrije tijd is hij voorzitter, bestuurslid, eindredacteur en eventorganisator bij de SDN (Software Development Network). Sinds 1 oktober 2010 is hij MVP.

Leave a Reply

Your email address will not be published. Required fields are marked *