L’objectif de la modification de cette classe consiste à séparer les parties spécifiques au rôle Worker du code utilisable dans n’importe quel rôle Worker. Pour faciliter son intégration dans n’importe quelle application Azure, vous pouvez concevoir l’API au moyen de méthodes d’extension sur la classe Microsoft.ServiceHosting.Service Run
Gérer les fonctionnalités communes

time.RoleEntryPoint. La première étape consiste à créer une méthode capable de gérer les fonctionnalités communes dans votre méthode Start(). Les actions communes vont rester en sommeil pendant un certain temps, elles vont s’exécuter, puis elles vont déterminer si vous continuez à traiter des requêtes. Cette fonctionnalité est facile à représenter au moyen de la méthode d’extension suivante :
public static void RunWorker(
this RoleEntryPoint role,
TimeSpan sleepTime,
Func
{
do
{
Thread.Sleep(sleepTime);
} while (method());
}
Ensuite, vous devez examiner les actions effectuées à chaque étape. Ce rôle Worker effectue son travail en utilisant les éléments présents dans la table Azure Storage. Il s’agit d’un schéma commun: exécuter des requêtes sur une table Azure, traiter certains éléments, puis enregistrer les modifications dans la table en question. Cela correspond à une autre méthode d’extension utile. Les éléments de table Azure sont accessibles via un contexte de service sous la forme IQueryTable
public static void ProcessTableData
this IQueryable
Action
TableStorageDataServiceContext context)
{
sequence.ForAll(action);
context.SaveChanges();
}
public static void ForAll
sequence, Action
{
foreach (T item in sequence)
action(item);
}
ForAll est une méthode d’aide qui fournit une interface simple permettant d’agir sur tous les éléments dans une séquence. ProcessTableData n’est pas une méthode aussi compliquée qu’il n’y paraît, car vous pouvez construire votre requête dans le code appelant. N’importe quel code LINQ fonctionnera pour filtrer la table (where, take, skip, orderby ou n’importe quelle autre méthode LINQ). En fait, c’est ce que j’effectue dans ma méthode Start(). La méthode Start() réusinée a l’aspect suivant :
public override void Start()
{
RoleManager.WriteToLog("Information",
"Worker Process entry point called");
StorageAccountInfo accountInfo =
StorageAccountInfo.GetAccountInfoFromConfiguration(
"TableStorageEndpoint");
LinkDataServiceContext context =
new LinkDataServiceContext(accountInfo);
this.RunWorker(TimeSpan.FromSeconds(30), () =>
{
RoleManager.WriteToLog("Information",
"Checking Link Database");
context.WebLinkDataCollection.
Where((link) =>
(!link.LinkValid) || DateTime.Now –
link.LastVisit >
TimeSpan.FromDays(1)).
ProcessTableData((item) =>
CheckLink(item), context);
return true;
});
}
L’autre schéma commun pour un rôle Worker consiste à récupérer les messages d’une file d’attente et à traiter chacun d’eux. Voici un exemple de code Azure correspondant :
// retrieve messages and write them to the
//development fabric log
while (true)
{
Thread.Sleep(10000);
if (queue.DoesQueueExist())
{
Message msg = queue.GetMessage();
if (msg != null)
{
RoleManager.WriteToLog("Information",
string.Format(
"Message '{0}' processed.",
msg.ContentAsString()));
queue.DeleteMessage(msg);
}
}
}
Téléchargez cette ressource

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Bâtir une entreprise AI-native : par où commencer
- La France à l’avant-garde de la conteneurisation et de l’IA générative
- La souveraineté numérique pour renforcer la cybersécurité
- Perspectives IA, Cybersécurité et STaaS en 2025
- Impact des outils d’IA sur la satisfaction, le niveau de stress et le bien-être !
