Cet article a fait l'objet d'une traduction automatique.
Le programmeur au travail
Système de notification Growl : plus c'est simple, mieux c'est
Dans tous le cabotinage qu'obtenir suscité autour de l'interface utilisateur et UX, vous perdez souvent de vue le fait que parfois la meilleure interface utilisateur n'est pas le plus chic, plus éblouissante affichage d'animations HTML/CSS/JavaScript ou époustouflantes, mais un simple message caché dans le coin. Beaucoup de ce qui se passe, en particulier avec les systèmes d'entreprise, sont « sans tête » sortes d'opérations avec pas d'interface utilisateur.
Vous avez encore besoin de moyens de tendre la main à l'utilisateur, cependant et de lui demander d'exécuter des actions. Vous pourriez construire un simple petit utilitaire de l'interface utilisateur pour vous donner que, ou vous pourriez tirer parti de quelqu'un d'autre utilitaire qui est déjà construit et débogué et a probablement beaucoup plus de fonctionnalités que vous incluez.
Growl Basics
Growl (disponible en téléchargement pour Windows à growlforwindows.com) est le portage de Windows de l'utilitaire Mac du même nom et est présenté comme le "système de Notification ultime. » Fondamentalement, il n'est pas difficile à comprendre. Il réside sur votre machine, se cachent dans la barre de notification dans le coin inférieur droit de votre bureau Windows et l'écoute des notifications.
Lorsqu'un message arrive à travers, il apparaît un petit message pour alerter l'utilisateur. Alors, vous pouvez envoyer ces messages sur le réseau crypté ou protégée par mot de passe, afin d'éviter que les "renifleurs" réseau à surveiller le trafic. Fondamentalement, cependant, il s'agit de fournir à l'utilisateur avec des messages de notification, à la les messages de "toaster" vous permettant de voir à l'époque où instantanée messagerie était chaude et MSN Messenger est une chose. C'est ça, la plupart du temps.
N'oubliez pas pas tous les utilitaires de développeur et les solutions doivent être ces merveilles architecturales de grandes, grande échelle. En effet, parfois la plus élégante solution à un problème est souvent un petit composant singulièrement ciblé qui suit le donjon c'est simple, principe stupide (KISS). Grondement fait une chose et le fait bien : Il vous permet d'informer un utilisateur (ou plusieurs utilisateurs, si vous commencez à penser à ce qui s'étend sur le réseau) de quelque chose se passe qui serait autrement obtenir devant lui.
Quand j'ai été introduit Growl, c'était par exemple, dans le cadre du système de génération de chêne. C'était essentiellement un réseau de « build continu ». N'importe quel moment qu'un fichier source a été modifié, Cela déclencherait une reconstruction du projet. Le problème, est bien sûr, si la reconstruction n'est pas quelque chose être lancé par le développeur avant-et-Centre Visual Studioà regarder, comment le développeur sait sur les problèmes de compilation ? Le système de génération envoie une notification à Growl, et il affiche subrepticement les résultats de génération pour l'utilisateur, niché dans le coin où il ne la demande attention ou vous empêcher de tout ce qu'il fait.
Grognant il ne prend pas beaucoup de penser à d'autres situations où cette fonctionnalité peut être utile, tant à l'intérieur qu'à l'extérieur un développeur -soucieux de leur contexte. Pour les développeurs, cela peut être utile lorsque les longues tâches (tel que construit, chargements de données, processus ETL et ainsi de suite) sont exécutent en arrière-plan, vous donnant un heads-up quand ils sont finis. Aux administrateurs de systèmes, cela peut être extrêmement utile pour des conditions d'erreur grave qui nécessitent l'intervention humaine quasi immédiat mais ne justifient en clôturant des opérations complètement.
Pour l'utilisateur, cela peut être un outil utile pour un tas de choses, y compris une sorte de système « push notification » pour des applications à l'intérieur du réseau d'entreprise, par exemple lorsque les données particulier enregistre l'utilisateur se soucie de (ceux qu'il travaille actuellement sur, par exemple) est mises à jour ou lorsque des événements se produisent au sein du système (démarrage, arrêt, messages de l'utilisateur l'échelle du système, peu importe) ont besoin d'être poussé devant les yeux de l'utilisateur. Jeux même en réseau pourrait utiliser, pour dire un joueur quand il est à son tour.
Grondement vous permet également de « transférer » les messages vers d'autres ordinateurs. Si un message destiné à atteindre vos yeux ne vous trouve pas parce que vous êtes sur le déjeuner, vous pouvez configurer Growl pour envoyer ce message à votre téléphone, la tablette ou le groupe d'autres ordinateurs. Vous pouvez aussi l'avoir envoyer un message électronique ou un tweet (publiquement ou direct message) à un compte. Un utilisateur peut configurer Growl pour jouer des sons (ou non) sur une base per-enregistré-application, définir la priorité de ces notifications sur une base per-enregistré-application et ainsi de suite.
Growl peut être pas beaucoup, mais c'est un très utile « pas beaucoup » genre d'outil. Programmation à c'est ridiculement simple. Une fois que vous avez installé Growl, vous pouvez envoyer des notifications Growl (à partir de fichiers de commandes ou scripts Windows PowerShell , par exemple) à l'aide de l'outil de ligne de commande "growlnotify" installé dans le dossier de Growl pour Windows. Le coup d'un envoi à l'aide de ce qui suit sur la ligne de commande (en supposant que C:\Program Files\Growl pour Windows, le répertoire d'installation par défaut Growl, se trouve sur votre chemin) :
growlnotify "This is a test message"
En supposant que Growl a été installé avec succès, il répondra à la ligne de commande avec « Notification envoyée avec succès. » Une petite fenêtre bleu message apparaîtra dans le coin de votre bureau. Ouvrez l'icône de grondement dans la barre de notification système pour examiner les options de configuration, y compris la possibilité de transmettre des messages sur les autres machines et utiliser le paramètre de ligne de commande "/?" pour découvrir comment faire pour envoyer des notifications Growl sur le réseau. Expérience avec certaines de ces options avant de lire plus loin, parce que les options vu ici reflètent assez bien directement les API disponibles lorsque vous écrivez du code pour utiliser les notifications Growl.
Le grondement SDK
Le SDK de Growl est une fine couche sur le protocole de Transport Growl réseau (GNTP), un protocole TCP/IP de fil rappelé fortement HTTP. Étant donné que le grondement a été autour pendant un certain temps, il n'est pas surprenant, il y a plusieurs bibliothèques construites pour abstraire les détails de ce protocole. Ceux-ci sont collectivement dénommés « Growl Connect » bibliothèques.
Le même site Web (growlforwindows.com) qui vous obtenir les bits de Growl-pour-Windows aussi propose des liens vers les bibliothèques de Microsoft .NET Framework pour Growl, ainsi que des liens pour C++, COM et même SQL Server-à-bibliothèques de grogner. (Penser à celui-là dernier pendant un moment. C'est un paquet pour vous permettre d'utiliser des scripts de SQL Server à tendre la main et envoyer une notification aux parties intéressées, telles que des bases de données.)
Une fois que les bibliothèques .NET Growl sont démolis, ouvrez le fichier .zip. Il contient un exemple d'application c# et un exemple d'application .NET Visual Basic , mais ce que vous voulez spécifiquement sont les deux assemblys .NET dans le dossier "bibliothèques" : Growl.CoreLibrary.dll et Growl.Connector.dll. (Ceux-ci sont également installés dans le cadre du grondement dans le répertoire home de Growl, si le téléchargement SDK se perd quelque part.) Dans n'importe quel projet .NET, simplement référence ces deux assemblys de bibliothèque, et les choses sont bon d'aller.
Connexion et inscription client A Growl doit s'enregistrer avec Growl, avant il peut envoyer des notifications — Growl ignorera toute notification qu'il reçoit de demandes non enregistrés. Heureusement, non seulement s'agit-il d'un pas de temps seule, mais le SDK, il est assez trivial. Il suffit de créer un objet GrowlConnector (y compris port et le nom d'hôte cible si tendre la main à une machine distante, si vous le souhaitez) et ensuite inclure des informations simples sur l'application étant enregistrée :
var connector = new GrowlConnector();
var thisApp = new Application("GrowlCL");
thisApp.Icon = @".
\app.png";
L'icône peut être un nom de fichier, URL ou de tableau d'octets. (Les deux de ces classes, par ailleurs, viennent de l'espace de noms GrowlConnector.)
Growl pense des notifications comme groupées par type. Un navigateur Web peut envoyer des notifications de « fichier Télécharger a commencé », « fichier téléchargement terminé » notifications et ainsi de suite. Un jeu pourrait envoyer "nouveau jeu offert," "joueur a démissionné", « votre tour, » « autre joueur turn terminées » et autres types similaires de notifications. Growl veut que les demandes d'enregistrement de ces types de notification pour permettre à l'utilisateur de configurer comment chaque type de notification est traitée. Un nouveau client de Growl doit définir ses types de notification et puis les passer à la méthode GrowlConnector.Register pour compléter l'inscription :
// Two kinds of messages: insults and compliments
var insultType = new NotificationType("INSULT", "SICK BURN!");
var compType = new NotificationType("COMPLIMENT", "Nice message");
connector.Register(thisApp, new NotificationType[] { insultType, compType });
Le premier paramètre est la chaîne de votre code utilisera pour indiquer le type de notification. La seconde est la chaîne qui s'affiche dans l'app du grondement de l'utilisateur quand vu. Comme l'objet Application, NotificationType possède aussi une propriété Icon. Cela permet différentes icônes à afficher ainsi que le texte du message sur une base per-notification-type. Il n'est pas nécessaire, mais il aide certainement le produit final regarder plus poli.
Notez que si le code précédent est exécuté, Growl s'affichera un message disant: « GrowlCL a enregistré » si c'est la première fois ce $ $ etAPP a communiqué avec l'app Growl sur cette machine.
Notifier une fois l'application et ses types de notification sont enregistrés avec Growl, c'est une question assez simple d'envoyer une notification. Il suffit de créer un objet de la Notification, en passant le nom de l'application, la chaîne de type de notification, un identificateur en option pour identifier de manière unique cette notification (pourquoi vous pouvez que je vais arriver à dans un instant) et le titre et le corps du message à envoyer et ensuite envoyer l'objet de la Notification de Growl à l'aide de la méthode Notify :
var notification = new Notification("GrowlCL", "INSULT", null,
"YO MAMA!", "Your mama is so fat, she dropped an apple " +
"and it entered orbit around her.");
connector.Notify(notification);
Lorsque l'app Growl reçoit le message, il va apparaître dans le coin inférieur (par défaut) de l'écran.
Oui, c'est vraiment aussi simple que ça.
**Vous pouvez Me lire maintenant ?**Parfois, vous voulez savoir ce que l'utilisateur fait avec la notification. Elle suffit de le fermer sans regarder, ou n'a elle réellement lu le message ? Cela peut effectivement être très important dans les centres d'appels, où les surveillants doivent savoir si employés en fait Lisez les quotidiens offres spéciales de vente incitative, comme l'exige.
Growl permet cela en vous inscrivant de rappels, ce qui peuvent être soit les méthodes de gestionnaire d'événements .NET ou WebHooks — URL à laquelle Growl publiera une demande HTTP contenant des données telles que le paramètre ID susmentionné de la notification adressée. Dans le cas où la bibliothèque Growl connecteur ne peut pas atteindre l'instance cible de Growl, il va émettre une erreur, mais seulement si le code client a inscrit un gestionnaire d'événements (ErrorResponse) sur l'objet GrowlConnector.
La méthode de gestionnaire d'événements recevra un code d'erreur et une description de l'erreur qui est presque identique aux codes d'erreur HTTP et descriptions des fonctions, ce qui les rend assez explicite. Les docs de Growl connecteur (le "Growl pour Windows Application Integration Guide" dans le .zip téléchargé du SDK) a un tableau qui répertorie toutes ces erreurs, mais ils sont tous assez simples (« 200 - TIMED OUT, » « 201 - panne de réseau » et ainsi de suite).
Tout aussi simple que ça
Grondement ne va pas gagné aucun prix pour « l'architecture plus complexe ». Si on peut la décrire presque entièrement dans un seul article de magazine, c'est certainement une surface assez simple, simple, bas -type de zone outil. Que, en un mot, est sans doute sa plus grande force. Très franchement, c'est le meilleur compliment tout technologue peut accorder sur une bibliothèque ou un outil — c'est juste que facile à utiliser. bon codage !
Ted Neward est le CTO chez iTrellis, une firme de services. Auteur de plus de 100 articles, il a rédigé et corédigé plus d'une dizaine d'ouvrages, y compris « Professional F# 2.0 » (Wrox, 2010). Il est MVP C# et participe à des conférences dans le monde entier. Il consulte et mentors régulièrement — le joindre à ted@tedneward.com ou ted@itrellis.com si vous êtes intéressé à lui avoir viennent travailler avec votre équipe et consulter son blog à blogs.tedneward.com.
Merci aux experts techniques suivants d'avoir relu cet article : Brian Dunnington (consultant indépendant)