Ho apportato alcune divertenti modifiche al mio plug-in per Windows Live Writer per inserire i technorati tags da associare a ciascun post. Vi riporto un vecchio screenshot del plug-in, graficamente è rimasto lo stesso, per cui rende l’idea:
Il mio plug-in utilizza una cache locale dei tags salvata in C:Documents and Settings<username>Dati applicazioniVivendoByte Technorati Tags. La cache in questione è un normalissimo file XML, che viene deserializzato/serializzato ogni volta, e che serve per popolare la ListBox che vedete nella parte sinistra della form che vedete qui sopra. Questo ha principalmente lo scopo di evitare di inserire a mano tutte le volte gli stessi tags, dal momento che è possibile sceglierli dall’elenco. Ma c’è un piccolo problema.
Se utilizzo x computer diversi per bloggare (ad esempio: il mio notebook e due PC fissi) ho n cache diverse, proprio perchè ogni cache è salvata localmente su ciascun PC. E’ davvero scomodo, perchè il PC usato più di frequente ha la cache più popolosa, mentre sugli altri un po’ meno.
La soluzione: salvare tutto in una locazione centralizzata, pur mantenendo la cache locale
La piccola soluzione a cui ho pensato è la seguente: se la connessione ad Internet è disponibile, il caricamento ed il salvataggio dell’elenco dei tags viene effettuato tramite un servizio WCF. Questo servizio lavora con un’interfaccia ITechnoratiTags, definita come segue:
[ServiceContract()]
public interface ITechnoratiTags
{
[OperationContract]
IList<string> Load(string username);
[OperationContract]
bool Save(string username, IList<string> tags);
}
Il servizio espone un metodo Load che si occupa di ritornare la lista di tags appartenenti ad un certo utente. Il metodo Save fa l’esatto opposto: salva la lista di tags di un certo utente, indicando se l’operazione è riuscita oppure no.
Quando il plug-in viene aperto, viene controllata l’esistenza e la disponibilità della connessione ad Internet: se la connessione c’è, allora viene utilizzato il servizio WCF si occupa di recuperare l’elenco dei tags. Se la connessione non c’è, l’elenco dei tags viene recuperato dalla cache locale, che è un meccanismo che comunque permane, e serve solamente nel caso in cui la rete non è raggiungibile.
Quando il plug-in viene chiuso, il salvataggio degli eventuali nuovi tags può avvenire in entrambi i modi: sulla cache locale e, se la connessione al Web è disponibile, anche attraverso il servizio WCF.
Questo permette di avere la cache locale sempre aggiornata, proprio perchè quando è possibile viene continuamente sincronizzata con il database centralizzato tramite WCF. Con la nuova versione del plug-in, che non ho ancora reso pubblica, posso tranquillamente utilizzare più di un PC ed avere su tutti la stessa medesima cache e, soprattutto, posso taggare in tutta libertà anche se sono in auto, treno, aereo, monopattino oppure, più semplicemente, non ho il cavo RJ45 connesso alla scheda di rete.
Perchè non l’ho ancora resa pubblica?
Se rendessi pubblico il plug-in così com’è, tutti (compreso me) utilizzeremmo gli stessi tags, perchè il servizio WCF adesso non è predisposto per memorizzare i technorati tags di tutti voi, e non vuole essere di certo un repository globale di tutti gli utenti. Se dovessi, o volessi, farlo, dovrei quanto meno ripensare ad un po’ di roba che va sotto il nome di sicurezza: dati protetti da privacy, più sicuri, trasmissione con un protocollo sicuro, autenticazione, etc. etc.
Technorati Tags: .NET Framework WCF Windows Live Writer