Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Le Blog (Vert) d'Arnaud JUND

Bienvenue sur mon éco blog

Actualités

Gestion avancée de l’énergie dans les applications .NET

Cet article est issu de la présentation faite par mon ami Christophe Peerens lors du Community Day qui s’est déroulé le 23 juin 2011 en Belgique. 

Nous vivons dans un monde où nous sommes de plus en plus mobiles, nous utilisons de plus en plus d’appareils qui tirent leur énergie d’une batterie (ordinateurs portables, téléphones, tablettes, et autres appareils mobiles et tactiles …) 

Et très souvent, les développeurs ont porté des applications venant d’infrastructures fixes vers des infrastructures mobiles sans se soucier de savoir quel est le degré de consommation énergétique de ces applications.

L’objectif de la session, était de faire prendre conscience aux développeurs .NET, que même à leur niveau, on peut fournir du code source qui soit conçu pour optimliser la durée de vie des batteries de nos appareils mobiles.

Consommer moins d’énergie est déjà un but en soit, mais sans parler d’optimisation de code, on peut très facilement mettre en place des mécanismes qui permettent de minimiser l’utilisation de la batterie et donc d’augmenter son espérance de vie.

Le framework .NET fournit un ensemble d’outils, principalements des events, qui nous permettent d’adapter le comportement de nos applications en  fonction de certains facteurs énergétiques.

 

SystemEvents.PowerModeChanged +=
            new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);

PowerModeChanged, est un évènement qui peut être intercépté lorsqu’il y a un changement d’état au niveau de l’alimentation de l’appareil sur lequel est exécuté votre application.

 

void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
    switch (e.Mode)
    {
        case PowerModes.Suspend:
            // system is going to suspend…
            break;
        case PowerModes.Resume:
            // system is resuming…
            break;
        case PowerModes.StatusChange:
            // Power status notification…
            break;
    }
}

Si vous avez une application qui affiche des données sous forme de grille, qui se rafraîchit toutes les minutes au travers de l’appel d’un service web, quel est l’intérêt de ce rafraîchissement et donc de cet appel à un web service, si votre ordinateur portable est vérouillé et que donc il n’y a personne pour visualiser ces données mises à jour.

 

image

 

case PowerModes.StatusChange:

{

switch (SystemInformation.PowerStatus.BatteryChargeStatus)

{
case System.Windows.Forms.BatteryChargeStatus.Low: ….

break;

case System.Windows.Forms.BatteryChargeStatus.Critical:…

break;

}

break;

}

 

Est-il vraiment judicieux dans une application de lancer un traitement d’écriture sur disque (log ou autres), alors que le système va se couper car la batterie est dans un état critique.  Si je sais en tant que développeur que la battrie a atteind un niveau d’énergie relativement faible, je peux prendre des mesures automatiques qui permettent d’assurer la pérénité des données manipulées par l’utilisateur.

 

case PowerModes.StatusChange:

{

switch (SystemInformation.PowerStatus.PowerLineStatus)

{

case PowerLineStatus.Online: // running on AC
break;

case PowerLineStatus.Offline:// running on battery
break;

}

break;

}

Si mon application est construite avec des interfaces très riches (Silverlight, Animations, etc) peut-être que le fait de savoir que le système vient de basculer sur l’énergie issue de la batterie me permettrait en tant que développeur d’adapter mon application et ainsi d’optimiser la durée de la charge de la batterie.

 

 

image

 

Voilà des éléments simples qui permettent d’écrire des applications .NET qui prennent en compte certains éléments propres aux appareils qui tournent sur des batteries.  Donc sans aller vers de l’optimisation de code, qui souvent est coûteuse, on peut déjà très simplement fournir des applications intelligentes qui s’adaptent en fonction de l’état du sytème d’un point de vue purement énergétique.

Tous les blocs de construction sont disponibles - c'est juste une question de bonnes pratiques.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 18 juillet 2011 09:58 par junarnoalg

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

- Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35

- Conférences d’Automne 2014 par Le blog de Patrick [MVP SharePoint] le 09-24-2014, 14:53

- [TFS] Supprimer un projet de Visual Studio Online par Blog de Jérémy Jeanson le 09-22-2014, 20:42

- Nouveau blog en anglais / New blog in english ! par Le blog de Patrick [MVP SharePoint] le 09-18-2014, 18:42

- [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

- [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

- Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

- [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

- [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25