Il presente articolo è stato tradotto automaticamente.

Il programmatore al lavoro

Sistema di notifiche Growl: a tutta semplicità

Ted Neward

Ted NewardA tutti l'istrionismo che ottiene aizzati intorno UI e UX, spesso perdere di vista il fatto che a volte la migliore UI non è il display più sofisticato, più abbagliante di animazioni in HTML/CSS/JavaScript o sconvolgenti, ma un semplice messaggio nascosto in un angolo. Molto di ciò che accade, specialmente con i sistemi aziendali, sono "senza testa" tipi di operazioni con alcuna interfaccia utente.

Hai ancora bisogno di modi per raggiungere l'utente, però e chiedergli di eseguire azioni. Si potrebbe costruire una semplice piccola utility UI per darvi che, o si potrebbe sfruttare utilità qualcun altro che è già costruito e debug e probabilmente ha caratteristiche molto di più che vuoi includere.

Ringhio Basics

Ringhio (disponibile per il download per Windows a growlforwindows.com) è il porto di Windows dell'utility Mac dello stesso nome ed è annunciata come il "Ultimate sistema di notifica". Fondamentalmente, non è difficile da capire. Esso risiede sulla vostra macchina, nascondersi nella barra di notifica nell'angolo inferiore destro del tuo Vista desktop di Windows e in attesa di notifiche.

Quando un messaggio passa attraverso, si apre una finestra di messaggio piccolo per avvisare l'utente. Quindi è possibile inviare questi messaggi attraverso la rete come crittografati o protetti da password, per evitare di avere sniffer di rete guardare il traffico. Fondamentalmente, però, si tratta di fornire all'utente i messaggi di notifica, alla i messaggi "tostapane" è usato per vedere quando immediata messaggistica era calda e MSN Messenger era una cosa. Ecco, per la maggior parte.

Tieni presente che non tutte le utilità developer e soluzioni devono essere queste meraviglie architettoniche di grandi dimensioni, su grande scala. Infatti, a volte la soluzione più elegante per un problema spesso è un piccolo componente singolarmente concentrato che segue il Keep è semplice, il principio stupido (bacio). Ringhio fa una cosa e fa bene: Consente di notificare un utente (o più utenti, se si inizia a pensare a ciò che si estende in tutta la rete) di accadendo qualcosa che sarebbe altrimenti ottenere passato lui.

Quando introdotto Growl, per esempio, era come parte del sistema di compilazione di rovere. Ciò era essenzialmente un sistema di "compilazione continua". Ogni volta che un file di origine è stato modificato, si scatenerebbe una ricompilazione del progetto. Il problema, naturalmente, è se la ricostruzione non è qualcosa di essere preso a calci da sviluppatore front-e-centro fissando Visual Studio, come lo sviluppatore sapere circa i problemi di compilazione? Il sistema di compilazione invia una notifica al Growl, e surrettiziamente Visualizza i risultati della compilazione all'utente, nascosto in un angolo dove non richiedono attenzione o intralciare qualsiasi cosa sta facendo.

Ringhiando non ci vuole molto a pensare ad altre situazioni dove questa funzionalità può essere utile, sia dentro che fuori un sviluppatore -­contesto di mentalità. Per gli sviluppatori, questo può essere utile quando annosa attività (ad esempio costruisce, carichi di dati, processi ETL e così via) sono in esecuzione in background, dandovi un heads-up, quando hanno finito. Agli amministratori di sistemi, questo può essere incredibilmente utile per le condizioni di errore critico che richiedono l'intervento umano nei pressi immediati ma non garantiscono che chiude le operazioni completamente.

Per l'utente, questo può essere un utile strumento per tutta una serie di cose, tra cui una sorta di sistema "push notification" per applicazioni all'interno della rete aziendale, ad esempio quando i dati particolare registra l'utente si preoccupa (quelli che sta attualmente lavorando, ad esempio) vengono aggiornati o quando si verificano eventi all'interno del sistema (startup, shutdown, messaggi di sistema a livello utente, qualunque sia) devono essere spinti davanti agli occhi dell'utente. Giochi anche in rete potrebbero essere utilizzato, per raccontare un giocatore quando è il suo turno.

Ringhio consente inoltre di "trasmettere" messaggi ad altri computer. Se un messaggio destinato a raggiungere gli occhi non si trova perché sei il pranzo, è possibile configurare Growl per inviare il messaggio al cellulare, tablet o gruppo di altri computer. Si potrebbe anche avere inviare un messaggio e-mail o tweet (pubblicamente o diretto messaggio) di un account. Un utente può configurare il Growl per riprodurre suoni (o non) su base per-registrato-applicazione, impostare la priorità di tali notifiche su base per-registrato-applicazione e così via.

Ringhio può non essere molto, ma è un abbastanza utile "non molto" tipo di strumento. Programmazione ad esso è ridicolmente semplice. Una volta installato Growl, è possibile inviare le notifiche Growl (da file batch o script di Windows PowerShell , per esempio) utilizzando lo strumento della riga di comando "growlnotify" installato nella cartella Growl per Windows. Calci uno fuori utilizzando la seguente riga di comando (supponendo C:\Program Files\Growl per Windows, la directory di installazione predefinita Growl, è sul vostro percorso):

growlnotify "This is a test message"

Supponendo che il Growl è stato installato con successo, risponderà la riga di comando con "Notifica inviata con successo." Una piccola finestra blu messaggio pop-up in un angolo del vostro desktop. Aprire l'icona di Growl nel vassoio di sistema notifica per esaminare le opzioni di configurazione, inclusa la possibilità di inoltrare i messaggi ad altre macchine e utilizzare il parametro della riga di comando "/?" per scoprire come inviare le notifiche Growl in tutta la rete. Esperimento con alcune di queste opzioni prima di leggere oltre, perché le opzioni visto qui riflettono più o meno direttamente le API disponibili quando si scrive codice per utilizzare le notifiche Growl.

Il ringhio SDK

il SDK di Growl è un sottile strato sopra Growl rete Transport Protocol (GNTP), un filo protocolloTCP/ricorda molto HTTP. Dato che il Growl è stato intorno per un po', non è sorprendente che ci sono parecchie librerie sviluppate per astrarre i dettagli di tale protocollo. Questi sono collettivamente indicati come "Collegare Growl" biblioteche.

Lo stesso sito Web (growlforwindows.com) da cui si ottengono i bit Growl per Windows anche ha collegamenti alle librerie Microsoft .NET Framework per ringhio, come pure i collegamenti per C++, COM e anche SQL Server-a-librerie di ringhiare. (Pensare che uno ultimo per un attimo. È un pacchetto per consentire l'utilizzo di script SQL Server per raggiungere e inviare una notifica alle parti interessate, quali gli amministratori di database).

Una volta che le librerie .NET Growl sono tirate giù, aprire il file. zip. Esso contiene un'applicazione di esempio c# e un'applicazione di esempio .NET Visual Basic , ma ciò che si vuole in particolare sono i due assembly .NET nella cartella "biblioteche": Growl.CoreLibrary.dll e Growl.Connector.dll. (Questi vengono installati come parte di Growl nella directory home Growl, se il download SDK si perde da qualche parte.) In qualsiasi progetto .NET, semplicemente riferimento questi due come assembly di libreria e le cose sono buone per andare.

Collegamento e registrazione A Growl client deve registrare con Growl prima può inviare notifiche — Growl ignorerà tutte le notifiche ricevute da applicazioni non registrate. Fortunatamente, non è questo un passo di una volta-solo solo il SDK rende abbastanza banale. Basta creare un oggetto di GrowlConnector (compresa porta e nome host destinazione protesa verso un computer remoto, se desiderato) e quindi includere alcune semplici informazioni sull'applicazione da registrare:

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

L'icona può essere un nome di file, URL o matrice di byte. (Entrambe le classi, tra l'altro, provengono dallo spazio dei nomi GrowlConnector).

Ringhio pensa di notifiche come raggruppati per tipo. Un browser Web potrebbe inviare notifiche "iniziato il download del file", "completato il download del file" notifiche e così via. Un gioco potrebbe inviare "nuovo gioco proposto," "giocatore dimesso," "tuo turno," "altro giocatore girare completata" e altri simili tipi di notifiche. Ringhio vuole applicazioni per registrare questi tipi di notifica, quindi l'utente può configurare come verrà gestito ogni tipo di notifica. Un nuovo client Growl deve definire i tipi di notifica e quindi passarli al metodo GrowlConnector.Register per completare la registrazione:

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

Il primo parametro è la stringa di codice verrà utilizzato per indicare il tipo di notifica. La seconda è la stringa che verrà visualizzata in app di Growl dell'utente quando viene visualizzato. Come l'oggetto di applicazione, NotificationType ha anche una proprietà Icon. Questo permette ad icone diverse essere visualizzate insieme al testo del messaggio in base al-notifica-tipo. Esso non è necessario, ma certamente aiuta il prodotto finale di sguardo più lucido.

Si noti che se viene eseguito il codice precedente, ringhio si aprirà un messaggio che dice, "GrowlCL ha registrato" se questa è la prima volta questa app ha comunicato con l'app di Growl su questa macchina.

Notificare una volta l'app e i relativi tipi di notifica sono registrati con Growl, è una questione abbastanza semplice per inviare una notifica. Basta creare un oggetto di notifica, passando il nome dell'app, la stringa di tipo di notifica, un identificatore opzionale per identificare in modo univoco questa notifica (perché si potrebbe desiderare che otterrò in un solo momento) e il titolo e il corpo del messaggio da inviare e quindi inviare l'oggetto notifica a Growl utilizzando il metodo 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);

Quando l'app ringhio riceve il messaggio, esso verrà pop-up nell'angolo inferiore dello schermo (impostazione predefinita).

Sì, è davvero facile.

**Leggermi ora?**A volte vi piacerebbe sapere che cosa ha fatto l'utente con la notifica. Ha fatto lei basta chiuderla senza guardare, o lei effettivamente leggere il messaggio? Questo in realtà può essere molto importante nei call center, dove supervisori bisogno di sapere se dipendenti infatti leggendo il quotidiane offerte speciali di up-selling, come richiesto.

Ringhio permette questo registrando i callback, che possono essere metodi del gestore eventi .NET o WebHooks — gli URL a cui Growl invierà una richiesta HTTP che contiene dati quali il suddetto parametro ID della notifica inviata. Nel caso in cui la libreria Growl connettore non può raggiungere l'istanza Growl mirato, potrai emettere un errore, ma solo se il codice client ha registrato un gestore di eventi (errore) nell'oggetto GrowlConnector.

Il metodo del gestore eventi riceverà un codice di errore e una descrizione dell'errore che sembra quasi identico a codici di errore HTTP e descrizioni, che li rende abbastanza auto-esplicativo. Il docs Growl connettore (il "Growl per Windows applicazione Inte­gration guida" nei. zip scaricato SDK) ha una tabella che elenca tutti questi errori, ma sono tutti piuttosto semplice ("200 - TIMED OUT," "201 - errore di rete" e così via).

Solo così facile

Ringhio non è andando a vincere alcun premio per "architettura più complessa". Se può essere descritta quasi completamente in un singolo articolo di giornale, allora è sicuramente una superficie piuttosto semplice, semplice, basso -­genere di zona dello strumento. Che, in poche parole, è probabilmente la più grande forza. Francamente, è il miglior complimento qualsiasi tecnologo può conced su una libreria o strumento — è proprio così facile da usare. Codificazione felice!

Ted Neward è CTO di iTrellis, una società di consulenza servizi. Ha scritto più di 100 articoli e autore e coautore di una dozzina di libri, tra cui "Professional F # 2.0" (Wrox, 2010). Egli è un MVP di c# e parla a conferenze in tutto il mondo. Egli consulta e mentors regolarmente — contattarlo al ted@tedneward.com o ted@itrellis.com se siete interessati ad avere lui venire a lavorare con il vostro team, e leggere il suo blog a blogs.tedneward.com.

Grazie all'esperto tecnica seguente per la revisione di questo articolo: Brian Dunnington (consulente indipendente)