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

- Compte rendu : SharePoint / O365 : des pratiques pour une meilleure productivité par The Mit's Blog le 12-12-2014, 18:11

- [TFS] Suppression des feature SQL Entreprise en masse par Blog de Jérémy Jeanson le 12-06-2014, 09:18

- [Clean Code] règles de nommage par Fathi Bellahcene le 12-04-2014, 22:59

- Windows To Go 10 et Upgrades impossibles par Blog de Jérémy Jeanson le 12-04-2014, 21:38

- SharePoint OnPremise: Statistiques d’utilisation pour traquer les sites fantomes par Blog Technique de Romelard Fabrice le 12-03-2014, 10:28

- SharePoint 2007: Script PowerShell permettant le backup de toutes les collections de sites d’une application Web par Blog Technique de Romelard Fabrice le 12-02-2014, 10:00

- Xamarin : un choix précieux par .net is good... C# is better ;) le 12-01-2014, 15:10

- Office 365: Comparaison des composants pour préparer votre migration de SharePoint 2007 vers Office 365 par Blog Technique de Romelard Fabrice le 11-28-2014, 16:20

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40