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

- L’application des MiniDrones Parrot est aussi disponible pour Windows 8.1 par Blog de Jérémy Jeanson le 10-28-2014, 15:01

- L’application des MiniDrones Parrot est enfin disponible pour Windows Phone par Blog de Jérémy Jeanson le 10-27-2014, 09:49

- Mise à jour Samsung 840 EVO sur core server par Blog de Jérémy Jeanson le 10-27-2014, 05:59

- MVP Award 2014 ;) par Blog de Jérémy Jeanson le 10-27-2014, 05:42

- « Naviguer vers le haut » dans une librairie SharePoint par Blog de Jérémy Jeanson le 10-07-2014, 13:21

- PowerShell: Comment mixer NAGIOS et PowerShell pour le monitoring applicatif par Blog Technique de Romelard Fabrice le 10-07-2014, 11:43

- ReBUILD 2014 : les présentations par Le blog de Patrick [MVP Office 365] le 10-06-2014, 09:15

- II6 Management Compatibility présente dans Windows Server Technical Preview avec IIS8 par Blog de Jérémy Jeanson le 10-05-2014, 17:37

- Soft Restart sur Windows Server Technical Preview par Blog de Jérémy Jeanson le 10-03-2014, 19:43

- Non, le certificat public du CA n’est pas un certificat client !!! par Blog de Jérémy Jeanson le 10-03-2014, 00:08