Archive for Maggio, 2008

Guida all’RSS per principianti

Icona classica dell'RSS

Che cos’è l’RSS? Questa è una domanda molto frequente e perciò ho pensato che fosse il caso di scrivere un articolo per illustrare l’argomento e chiarire le idee a chi non ha la minima idea di cosa stiamo parlando.

Definizione di RSS:
RSS è una tecnologia usata da milioni di persone nel mondo per tener traccia dei propri siti preferiti.

Nel passato per potersi accorgere degli aggiornamenti fatti ad un sito era necessario metterlo nei segnalibri (detti anche bookmarks; questa operazione è detta bookmarking) e andare a visitarlo manualmente.
I problemi del bookmarking

  • La persona deve fare tutto il “lavoro”;
  • Può essere pesante o complesso se si cerca di star dietro a tanti siti web;
  • Possiamo facilmente perdere delle informazioni se dimentichiamo di controllare i nostri segnalibri;
  • Molte volte si finisce con il vedere sempre le stesse cose sui siti aggiornati di rado.

RSS è differente
Sostanzialmente possiamo affermare che RSS permette di far sì che siano i siti stessi a notificarti l’esistenza di nuovi contenuti. Ci dà modo di ottenere informazioni fresche in modo semplice, veloce ed efficiente, anche solo dopo pochi istanti dalla pubblicazione dei contenuti.

Read the rest of this entry »

Come si può ottenere l’oggetto Assembly .NET corrente?

In ambiente .NET è possibile ricavare ed operare sui tipi, i metodi e le proprietà di qualunque assembly valido, grazie alla reflection. Probabilmente saprete già che è sufficiente importare il namespace System.Reflection per accedere a molte classi e funzionalità create a tale scopo.

Potrebbe sorgere, tuttavia, la domanda: come si può ottenere l’oggetto Assembly della propria applicazione? O meglio, dove posso trovare un riferimento all’assembly corrente, ossia quello che, a runtime, conterrà il codice che sto scrivendo? In sostanza, il codice deve recuperare informazioni su se stesso! Si può fare? La reflection consente anche questo?

La risposta è sì. Ecco il codice VB.NET di esempio:

Dim aAssembly As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly
Dim sPath as String = System.Reflection.Assembly.GetExecutingAssembly.Location

La seconda riga mostra come recuperare il percorso fisico del file. Facile no? ;-)

I giorni passano…

Flickr - Purple Angel

Foto di Kjunstorm.

Desidero fare le mie più sentite scuse per il fatto che non ho pubblicato articoli per ben 10 giorni! In questo periodo non ci sono riuscito per varie ragioni. Sono desolato!

Comunque sia, ho tenuto da parte un bel po’ di materiale dal quale sviluppare dei contenuti interessanti, specialmente in relazione alla programmazione in .NET. Abbiate solo un pochino di pazienza e potrete leggerli. ;-)

Sun ha rilasciato OpenSolaris 2008.5, ma è ancora un work in progress

La settimana scorsa Sun ha rilasciato OpenSolaris 2008.05. Questa versione porta con sé molte delle features principali di OpenSolaris, come ZFS e DTrace, in un pacchetto in stile Linux. Questo dovrebbe indurre più persone a provarlo. Ma qual è il parere di chi l’ha provato?

Ars Technica ha scritto un articolo contenente le sue prime impressioni: il suo staff ha apprezzato particolarmente la procedura di installazione, intuitiva e semplice. Dato che Solaris non ha mai brillato in questo ambito, direi che è notevole!

Viene messo subito a disposizione un tema GNOME pulito e dai colori gradevoli. Una caratteristica spiacevole del processo d’installazione, tuttavia, è che non include componenti Mono: gli utenti sviluppatori, come il sottoscritto, potrebbero averne bisogno.

Sotto il profilo hardware, poi, ci sono dei grattacapi: pare che sia molto difficile configurare la macchina affinché possa connettersi a qualsiasi network. Questo sistema operativo è decisamente allo stato di “work in progress”!

Il team di sviluppo di OpenSolaris ha ancora molto lavoro da fare, è vero, ma certamente questo progetto merita ulteriore attenzione. Pensate che Ian Murdock, in un’intervista condotta da ComputerWorld, ha affermato che Debian e OpenSolaris sono entrambi buoni sistemi operativi, il primo per la ricchezza di pacchetti ed il secondo per l’unicità di certe sue features (come il fantomatico ZFS, citato all’inizio).

In conclusione, valutiamo la possibilità di testare a casa nostra OpenSolaris: sarà un’esperienza unica!

Come richiamare più web service con la medesima classe proxy

Alcuni servers

Foto di ©G. D®oid ».

In ambiente .NET, quando vogliamo adoperare i web service solitamente aggiungiamo i web references. Una volta fatto ciò, scriviamo il codice per istanziarli e per chiamare i vari web methods. L’IDE di sviluppo genera automaticamente una classe proxy per ogni web reference aggiunto: noi usiamo sue le funzioni, che a loro volta invocheranno in modo appropriato il web service.

Tuttavia, potremmo avere n web service che implementano la stessa interfaccia e che forniscono dati differenti. Potremmo perfino non sapere a priori quanti web service avremo e dove saranno collocati! Ovviamente, in una situazione del genere non possiamo impostare dei web references a design time. Come si possono dunque invocare le funzioni di più web service (cioé quelle dell’interfaccia comune) usando una classe proxy “generica”?

Sembra qualcosa di molto complesso, ma in realtà, non è così: bastano pochi semplici passi. Sono i seguenti:

  • Aggiungi un web reference ad uno qualsiasi dei web services che implementano l’interfaccia cui abbiamo accennato all’inizio. Visual Studio creerà una classe che eredita da SoapHttpClientProtocol e la salverà in un file di nome Reference.vb;
  • Vai sul solution explorer e premi il pulsante per visualizzare tutti i files del progetto. Apri la cartella “Web References”, espandi l’elemento corrispondente al riferimento appena aggiunto (il nome di default è “localhost”);
  • A questo punto vedrai un file con estensione disco, uno con estensione wsdl ed un Reference.map. Espandi questo nodo e vedrai il file Reference.vb;
  • Crea una nuova classe, dandole il nome che desideri. Copia dentro tutto il contenuto della classe presente nel Reference.vb;
  • Sostituisci tutti i namespace in tutti gli attributi del proxy e delle sue funzioni: inserisci la stringa “http://tempuri.org/”, che è una sorta di valore di default. Ecco le parti da modificare (cercale nel testo e inserisci i valori in grassetto):

    [...]WebServiceBindingAttribute(Name:=”NomeDelNostroBinding”, [Namespace]:=“http://tempuri.org”)

    [...]

    SoapRpcMethodAttribute(“http://tempuri.org/NostroMetodo”, RequestNamespace:=“http://tempuri.org”, ResponseNamespace:=“http://tempuri.org”)

  • Testa il proxy.

Come sempre, per ulteriori spiegazioni, chiarimenti, domande e/o suggerimenti inerenti a questo breve articolo, scrivete un commento: sarà certamente letto e apprezzato! :-D