Dieser Artikel wurde maschinell übersetzt.

Programmiererpraxis

Das Benachrichtigungssystem Growl: Einfacher ist besser

Ted Neward

Ted NewardIn die Theatralik, die rund um UI und UX aufgestachelt, verlieren Sie oft die Tatsache, dass manchmal die besten UI die raffinierteste, schillerndsten Anzeige von HTML/CSS/JavaScript oder mind-blowing Animationen, aber eine einfache Botschaft versteckt in der Ecke ist nicht aus den Augen. Eine Menge passiert, vor allem mit Enterprise-Systemen, sind "headless" Arten von Vorgängen ohne Benutzeroberfläche.

Sie brauchen noch Möglichkeiten erreichen, um den Benutzer, und bitte ihn um Aktionen auszuführen. Man könnte ein einfaches bauen wenig UI-Dienstprogramm, um Ihnen das zu geben, oder Sie nutzen könnte, jemand anderes Dienstprogramm, das ist bereits integriert und gedebuggt und hat wahrscheinlich viel mehr Features als Sie aufnehmen würde.

Growl Basics

Knurren (zum Download verfügbar für Windows bei growlforwindows.com) ist der Windows-Port des Mac-Dienstprogramm mit dem gleichen Namen und wird als das "ultimative Notification System." Grundsätzlich ist es nicht schwer zu verstehen. Es befindet sich auf Ihrem Rechner, versteckt sich im Notification Tray in der rechten unteren Ecke der Windows desktop Ansicht, und überwacht Benachrichtigungen.

Wenn eine Nachricht durch kommt, erscheint es ein kleine Nachricht-Feld, um den Benutzer zu warnen. Dann können Sie diese Nachrichten über das Netzwerk als verschlüsselte oder passwortgeschützt, zu verhindern, dass Netzwerk-Sniffer, die den Verkehr beobachten senden. Grundsätzlich ist es aber über die dem Benutzer Benachrichtigungen, a la "Toaster"-Nachrichten, die Sie verwendet haben, zurück, wenn instant messaging war heiß und MSN Messenger war eine Sache. Das ist es, zum größten Teil.

Denken Sie daran nicht alle Entwickler-Werkzeuge und Lösungen haben, diese großen, großen Stil architektonische Wunder zu sein. In der Tat, manchmal die eleganteste Lösung für ein Problem ist oft eine kleine, einzeln fokussierte Komponente, die der Bergfried folgt es einfach, Stupid (KISS) Prinzip. Knurren ist eine Sache und macht sie gut: Es läßt Sie benachrichtigen einen (oder mehrere Benutzer, wenn Sie anfangen, über dehnen diese über das Netzwerk) der etwas geschieht, das würde sonst an ihm vorbei.

Als ich zuerst Knurren vorstellte, war es beispielsweise als Teil der Eiche Buildsystem. Dies war im Wesentlichen eine "kontinuierliche Build"-System. Jedes Mal, wenn eine Quelldatei geändert wurde, würde es eine Neuerstellung des Projekts auslösen. Ist das Problem natürlich, wenn der Umbau etwas wird durch die Front-und-Entwicklercenter starrte Visual Studiobegann nicht, wie der Entwickler Build Probleme würde wissen? Das Buildsystem sendet eine Benachrichtigung an Knurren, und es heimlich die Build-Ergebnisse werden dem Benutzer angezeigt, versteckt in der Ecke, wo es nicht fordern Aufmerksamkeit oder was auch immer er tut, in die Quere.

Knurren es nicht allzu schwer, anderen Situationen zu denken, wo diese Funktionalität nützlich, sowohl innerhalb als auch außerhalb einer Entwickler sein kann -­gesinnten Kontext. Für Entwickler kann dies nützlich sein, wenn lang andauernde, dass Aufgaben (z. B. baut, Datenladevorgängen, ETL-Prozesse usw.) ausgeführt werden, im Hintergrund, geben Ihnen ein Heads-up, wenn sie fertig sind. Systemadministratoren kann dies unglaublich nützlich für kritische Fehler sein, die in der Nähe von unmittelbaren menschlichen Eingriff aber nicht rechtfertigen, Operationen vollständig beendet.

Für den Benutzer ein nützliches Werkzeug für eine ganze Reihe von Faktoren wie eine Art "push-Benachrichtigungen" System für Anwendungen innerhalb des Unternehmensnetzwerks sind möglich, z. B. wenn bestimmte den Benutzer Datensätze kümmert sich um (diejenigen er derzeit an, zum Beispiel arbeitet) aktualisiert werden oder wenn Ereignisse eintreten, innerhalb des Systems (starten, Herunterfahren, systemweite Benutzernachrichten) vor Augen des Benutzers verschoben werden müssen. Auch vernetzte Spiele können, verwenden, um einem Spieler zu sagen, wann er dran ist.

Knurren können Sie "Weiterleitung von Nachrichten an andere Computer". Findet eine Nachricht hin die Augen Sie nicht weil Sie auf Mittagessen, können Sie Growl um diese Nachricht Ihre Telefon, Tablet oder Gruppe von anderen Computern konfigurieren. Auch hätten Sie es senden Sie eine E-mail-Nachricht oder Tweet (öffentlich oder direkt Nachricht) auf ein Konto. Ein Benutzer kann konfigurieren, Knurren, um Töne zu spielen (oder nicht) auf einer Basis pro registriert-Anwendung legen Sie die Priorität dieser Benachrichtigungen auf Basis pro registriert-Anwendung und so weiter.

Knurren kann nicht viel sein, aber es ist ein ziemlich nützliches "nicht sehr viel" Art des Werkzeugs. Programmierung, es ist lächerlich einfach. Nach der Installation Growl senden Sie Growl Benachrichtigungen (von Batch-Dateien oder Windows PowerShell -Skripts, z. B.) mit dem Befehlszeilenprogramm "Growlnotify"-Tool im Ordner Growl für Windows installiert. Startschuss für eine Verwendung Folgendes in der Befehlszeile ein (vorausgesetzt, C:\Program Files\Growl für Windows, das Standardinstallationsverzeichnis Growl auf eurem Weg ist):

growlnotify "This is a test message"

Vorausgesetzt, Growl erfolgreich installiert wurde, wird es in der Befehlszeile mit "Benachrichtigung erfolgreich." reagieren Ein wenig Blau e-Mail-Fenster öffnet sich in der Ecke Ihres Desktops.Öffnen Sie das Growl-Symbol in der Taskleiste-Benachrichtigung, die Konfigurations-Optionen, einschließlich der Möglichkeit zur Weiterleitung von Nachrichten an andere Rechner zu prüfen, und verwenden Sie den Befehlszeilenparameter "/?" um zu untersuchen, wie Growl Benachrichtigungen über das Netzwerk zu senden.Experiment mit einige dieser Optionen bevor Sie weiterlesen, denn die Optionen gesehen hier ziemlich direkt reflektieren die APIs zur Verfügung, beim Schreiben von Code zum Growl-Benachrichtigungen verwenden.

Growl SDK

Das Knurren-SDK ist eine dünne Schicht über Growl Netzwerk Transport Protokoll (GNTP), ein TCP/IP-Draht-Netzwerkprotokoll erinnert stark an HTTP.Da Knurren schon seit einer Weile, ist es nicht verwunderlich, gibt es mehrere Bibliotheken gebaut, um die Details des Protokolls zu abstrahieren.Diese werden gemeinsam als "Growl-Connect" Bibliotheken bezeichnet.

Dieselbe Website (growlforwindows.com) von denen erhalten Sie auch die Growl für Windows-Bits enthält Links zu den Microsoft .NET Framework Bibliotheken für Growl sowie Links für C++, COM und sogar SQL Server-zu-Knurren Bibliotheken.(Letzteres für einen Moment darüber nachdenken.Es ist ein Paket zu ermöglichen die Verwendung SQL Server -Skripts zu erreichen und eine Benachrichtigung an Interessenten wie DBAs senden.)

Sobald die Growl-.NET-Bibliotheken nach unten gezogen werden, öffnen Sie die ZIP-Datei.Es enthält eine Beispielanwendung c# und eine Probe- Visual Basic .NET-app, aber speziell, was Sie wollen, sind die beiden .NET Assemblys im Ordner "Bibliotheken": Growl.CoreLibrary.dll und Growl.Connector.dll.(Diese sind auch als Teil der Growl in die Growl-home-Verzeichnis installiert wenn der SDK-Download irgendwo verloren geht.) In jedem .NET-Projekt einfach Verweis dieser beiden als Bibliothekassemblys, und die Dinge gut sind zu gehen.

Anschließen und registrieren A Growl-Client muss mit Growl zu registrieren, bevor sie Benachrichtigungen senden kann — Growl Benachrichtigungen von Joe Anwendungen erhält ignorieren wird.Glücklicherweise nicht nur das ist ein one-time-nur Schritt, sondern das SDK macht es ziemlich trivial.Erstellen Sie einfach ein GrowlConnector-Objekt (einschließlich Ziel Hostname und Port Falls zu einer entfernten Maschine zu erreichen, falls gewünscht), und fügen Sie dann einige einfache Informationen über die Anwendung registriert werden:

var connector = new GrowlConnector();
var thisApp = new Application("GrowlCL");
thisApp.Icon = @".
\app.png";

Das Symbol kann ein Dateiname, URL oder Byte-Array sein. (Beide Klassen, kommen übrigens aus dem Namespace GrowlConnector.)

Knurren denkt an Benachrichtigungen wie nach Typ gruppiert. Ein Web-Browser kann und so weiter "Datei Download gestartet" Benachrichtigungen "Datei Download abgeschlossen" Benachrichtigungen gesendet werden. Ein Spiel kann "neues Spiel angeboten," "Spieler zurückgetreten," senden "dran," "andere Spieler wiederum abgeschlossene" und andere ähnlichen Arten von Benachrichtigungen. Knurren will Anwendungen auf diese Benachrichtigungstypen zu registrieren, damit der Benutzer konfigurieren kann, wie jede Art von Mitteilung behandelt werden. Ein neuer Growl-Client muss seine Benachrichtigungstypen zu definieren und sie anschließend an die GrowlConnector.Register-Methode, um die Registrierung abzuschließen übergeben:

// 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 });

Der erste Parameter ist die Zeichenfolge, die Ihr Code verwendet wird, um den Typ der Benachrichtigung anzugeben. Die zweite ist die Zeichenfolge, die in des Benutzers Growl app angezeigt angezeigt werden. Wie das Application-Objekt stellt NotificationType auch eine Icon-Eigenschaft. Dies ermöglicht verschiedene Symbole zusammen mit dem Text der Nachricht auf einer Basis pro Meldungstyp angezeigt werden. Es ist nicht notwendig, aber sicherlich hilft das Endprodukt mehr poliert aussehen.

Beachten Sie, dass wenn der vorhergehende Code ausgeführt wird, Growl auftauchen wird eine Meldung, "GrowlCL hat sich registriert" ist dies das erste Mal, was diese app mit Growl-app auf diesem Computer kommuniziert hat.

Benachrichtigen sobald die app und seine Benachrichtigungstypen mit Growl registriert sind, es ist eine ziemlich einfache Angelegenheit um eine Benachrichtigung zu senden. Erstellen Sie einfach eine Notification-Objekt übergeben in den app-Namen, die Benachrichtigung Type String, optional Bezeichner zur eindeutigen Identifizierung dieser Benachrichtigung (Warum empfiehlt, dass ich gleich zu erhalten), und den Titel und den Text der Nachricht zu senden und senden das Notification-Objekt ab, zu Knurren, die mit der Notify-Methode:

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);

Wenn die Growl-app die Nachricht empfängt, wird es in der unteren Ecke (standardmäßig) des Bildschirms pop-up.

Ja, es ist wirklich so einfach.

Hörst du mich jetzt? Manchmal gerne Sie wissen, was der Benutzer bei der Anmeldung getan haben. Zumachen sie einfach ohne zu schauen, oder haben sie tatsächlich die Nachricht gelesen? Dies kann tatsächlich ganz wichtig in Call-Centern, wo Vorgesetzte müssen wissen, wenn Mitarbeiter die täglich Up-Selling-Angebote, Bedarf in der Tat lesen.

Knurren ermöglicht dies durch die Registrierung Rückrufe, die entweder .NET Ereignishandlermethoden oder WebHooks sein kann — URLs, die auf das Knurren eine HTTP-Anforderung enthält Daten wie die oben genannten ID-Parameter der Benachrichtigung gesendet gebucht werden. Im Falle die Growl-Connector-Bibliothek die gezielte Growl-Instanz nicht erreichen kann, werde er abgeben, einen Fehler, aber hat nur wenn der Client-Code einen Ereignishandler (ErrorResponse) für das GrowlConnector-Objekt registriert.

Die Ereignishandlermethode erhalten einen Fehlercode und eine Beschreibung des Fehlers, der sieht fast identisch mit dem HTTP-Fehlercodes und Beschreibungen, so dass sie ziemlich selbsterklärend. Die Growl-Connector-Docs (der "Growl für Windows Application Inte­Integration Guide" in der heruntergeladenen .zip SDK) gibt es eine Tabelle, die alle diese Fehler, aber sie sind alle ziemlich einfach ("200 - TIMED OUT" "201 - NETZWERKFEHLER" und so weiter).

Nur so einfach

Knurren wird nicht gewinnen keine Auszeichnungen für "komplexe Architektur." Wenn es fast vollständig in einem einzigen Magazin Artikel beschrieben werden kann, dann es auf jeden Fall eine ziemlich einfach, unkompliziert, niedrige Oberfläche ist -­Bereich Art des Werkzeugs. Das ist kurz gesagt, wahrscheinlich seine größte Stärke. Ganz ehrlich, es ist das schönste Kompliment, das jede Technologe zu, die in einer Bibliothek oder einem Tool verleihen — es ist nur so einfach zu bedienen. Viel Spaß beim Programmieren!

Ted Neward ist CTO von iTrellis, ein Beratungsunternehmen Service. hat mehr als 100 Artikel geschrieben und als Autor und Mitautor ein Dutzend Bücher verfasst, darunter „Professional F# 2.0“ (Wrox 2010). Er ist ein C#-MVP und spricht auf Konferenzen in der ganzen Welt. Er berät und Mentoren regelmäßig — erreichen ihn bei ted@tedneward.com oder ted@itrellis.com Wenn Sie daran interessiert, ihn zusammen mit Ihrem Team, und lesen Sie seinen Blog unter blogs.tedneward.com.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Brian Dunnington (unabhängiger Berater)