do more with less
news, esperienze, esempi da condividere e qualcosa su di me

domenica 28 gennaio 2007

ASP.NET AJAX - Videos & Samples

Rivedendo il materiale per un articolo, ho notato che nel sito dedicato ad ASP.NET AJAX c'è una sezione di Video utile per chi vuole avvicinarsi allo sviluppo di applicazioni web basate su questa tecnologia. I video sono scaricabili unitamente al codice di supporto.
Se siete interessati qui trovate l'elenco dei video disponibili: ASP.NET Videos

sabato 27 gennaio 2007

SIG - Special Interest Group, un esperienza da ripetere

Ieri ho avuto il piacere di partecipare ad un SIG su Office System. Questi gruppi sono normalmente aperti al solo personale Microsoft ma questa volta l'invito è stato esteso anche a noi MVP. Devo dire che ho trovato l'incontro molto utile soprattutto perché mi ha fatto incontrare persone Microsoft che lavorano sul campo e che, come normalmente capita a noi, si confrontano con le esigenze del mercato. Le informazioni acquisite sono di sicuro valore; come di valore è aver potuto prendere contatto con risorse Microsoft che potrebbero essere degli ottimi referenti per futuri progetti.
Spero di poter contribuire attivamente in guesto gruppo in modo da instaurare un canale bi-direzionale di conoscenza e formazione.

mercoledì 24 gennaio 2007

FileSystemWatcher: The process cannot access the file .... because it is being used by another process.

La classe FileSystemWatcher può risultare molto utile quando si vogliono monitorare file e folder. Nell'usarla bisogna però stare attenti a non scontrarsi con le funzionalità del sistema operativo ed in particolare con l'accesso esclusivo ai file. Cosa che ho imparato a mie spese ricevendo l'errore The process cannot access the file .... .
Questo errore accade perchè il file a cui si tenta di accedere, dopo la segnalazione del FileSystemWatcher, è ancora bloccato da un'altro processo (per esempio il processo di scrittura nella cartella monitorata). Per ovviare a questo problema ho inserito nella mia implementazione una metodo che verifica se il file è apribile oppure no. Ecco come si presenta il metodo:
private bool IsFileOpen(string fileName)
{
try
{
if (File.Exists(fileName))
{
FileStream stream = File.Open(fileName, FileMode.Open);
stream.Dispose();
}
return false;
}
catch (IOException ex)
{
ex = null; return true;
}
}
Quest'ultimo viene chiamato dai metodi delegati alla gestione degli eventi Changed, Created, Deleted e Renamed per porre un periodo di attesa qualora il file non risulti disponibile:
while (IsFileOpen(e.FullPath) == true) {
System.Threading.Thread.Sleep(250);
}
Per evitare loop infiniti, il codice andrebbe arricchito con un counter che limiti in qualche modo i cicli all'interno del while; per esempio in questo modo:
int counter = 0;
while (IsFileOpen(e.FullPath) == true && counter < 10)
{
System.Threading.Thread.Sleep(250); counter++;
}
Sicuramente si possono trovare delle soluzioni più eleganti ma, per il momento, questa mi ha permesso di rimettere in produzione il servizio basato sul FileSystemWatcher che funzionava a singhiozzo. Sperando in un pò di tempo libero magari riuscirò a realizzare qualcosa più utile per risolvere questo problema.

martedì 23 gennaio 2007

Convertire applicazioni da ASP.NET AJAX RC a ASP.NET AJAX RTM

Qualcuno poteva pensare che non ci sarebbero state differenze tra la RC e la RTM ma in realtà non è così. Le differenze ci sono, anche se piccolissime, e quindi è necessario mettere mano alle nostre applicazioni per renderle compatibili con la RTM.
Gli step da seguire sono:
  • Installare la RTM dopo aver rimosso la RC
  • aggiornare le pagine ASP.NET esistenti nelle quali sia stato usato l'AutoCompleteExtender (che ora fa parte del ASP.NET AJAX Control Toolkit)
  • Modificare il file di configurazione (web.config) dell'applicazione.
Il dettaglio di questi step si può leggere qui.

ASP.NET AJAX is here !

E' stata rilasciata la versione finale di ASP.NET AJAX e non mancano le novità. Ora non vi resta che visitare il sito ajax.asp.net e procedere con il download ;-)

AJAX, in attesa della RTM

Si dice sia questione di giorni o forse di ore. Al momento resta il fatto che, se volete provare questa tecnologia, dovete accontertarvi della Release Candidate.
Grazie all'opportunità offertami da Microsoft Italia, ho provato a riassumere in un articolo di overview le particolarità base dell'implementazione ASP.NET 2.0 AJAX 1.0 (RC).
Se vi va di leggere l'articolo e il tips qui trovate i link.
ASP.NET AJAX - Overview
ASP.NET AJAX – Aggiornare un UpdatePanel con un controllo esterno (Tip)
Sfrutto questo post anche per pubblicizzare il mio precedente articolo in cui ho illustrato una delle novità della versione 2.0 di ASP.NET: il VirtualPathProvider. Ecco il link:
ASP.NET: Utilizzare un Virtual File System
Buona lettura ;-)

sabato 20 gennaio 2007

Il tuo computer è pronto per Windows Vista?

Con l'imminente rilascio del nuovo sistema operativo di Microsoft, più di qualcuno si sarà posto questa domanda: ma il mio computer è pronto per Windows Vista? Beh se volete saperlo, qui c'è un tool della Crucial Technology che vi può dare la risposta:
Is Your Computer Ready for Windows® Vista™?

Windows Communication Foundation e gli add-in per Visual Studio 2005

In questi giorni mi sto cimentando con la realizzazione di un add-in per Visual Studio 2005 che consumi i dati provenienti da un servizio realizzato con Windows Comminication Foundation (WCF). La creazione dell'add-in è di per se abbastanza agevole soprattutto se si parte dagli esempi che si hanno a disposizione dopo aver installato il Microsoft Visual Studio 2005 Automation Samples. I problemi arrivano quando si chiede qualcosa di più come, ad esempio, consumare un servizio WCF. La documentazione a riguardo è, al momento, poca e spesso imprecisa e quindi non è facile risolvere i vari problemi che si possono incontrare durante lo sviluppo. Per fortuna ci sono gli amici della community a cui chiedere aiuto ;-)
Nei giorni scorsi sono riuscito a risolvere un problema proprio grazie all'aiuto di Andrea Boschin, Davide Bedin e il mitico Raffaele Rialdi. Il mio add-in, infatti, continuava ad andare in eccezione nel momento in cui tentavo di connettermi al servizio. Il servizio funzionava se chiamato da altre applicazioni, la configurazione era correttamente inserita nel file app.config ma l'eccezione continuava a verificarsi e le sue indicazioni ci spingevano a credere che la configurazione non fosse corretta. Anche dopo aver verificato che la configurazione fosse assolutamente corretta e che il file fosse accessibile dall'add-in il problema non si risolveva. Quindi, dopo che io e Andrea ne avevamo provate di tutti i colori, grazie al suggerimento di Davide che ci consigliava di usare FileMon rafforzato dallo stesso Raffaele, abbiamo iniziato ad indagare se effettivamente il file di configurazione venisse utilizzato dal client del servizio. Ed ecco individuato il problema ! Il client cercava la configurazione nel file di configurazione di Visual Studio (devenv.exe.config) invece che in quello dell'add-in. E' quindi bastato inserire la parte di configurazione in quel file per risolvere il problema.
Certamente questa soluzione non è ottimale ma per il momento ci va bene così (l'add-in è a solo uso del nostro team di sviluppo). In futuro cercheremo di configurare il client in modo diverso al fine di evitare di dover toccare il file di configurazione di Visual Studio.
L'esperienza fin qui raccolta mi permette di suggerirvi alcuni tips per risparmiare tempo quando deciderete di lavorare con gli add-in per Visual Studio 2005:
  1. Usate EnvDTE80.DTE2 se l'add-in che volete creare è destinato eslusivamente a Visual Studio 2005. Espone meglio le proprietà che potrebbero servirvi durante lo sviluppo.
  2. Per configurare l'add-in usate il file app.config. Attenzione però che questo non viene utilizzato da WCF.
  3. Se consumate un servizio WCF ricordatevi di inserire i parametri di configurazione nel file devenv.exe.config o trovate un sistema alternativo per istruire il vostro client su come consumare il servizio.
  4. Se il vostro add-in deve interagire con la soluzione fate attenzione perchè, in debug, l'add-in leggerà la soluzione in cui state sviluppando e da cui avete avviato il debug; quindi non quella che avrete aperto per testare il componente. La soluzione è di non usare il debug, in questi casi, chiudere il progetto di sviluppo ed aiutarsi con message box o altre vecchie tecniche di debugging che si usavano quando si lavorava con linguaggi non dotati di debug.

mercoledì 17 gennaio 2007

Outlook Web Access e Internet Explorer 7

Se avete Windows Vista e volete utilizzare OWA per leggere da remoto la vostra posta elettronica, potreste trovarvi di fronte ad alcuni problemi tipo: impossibilità di rispondere ad una email, aggiungere un nuovo contatto, eseguire un forward e così via. Questo dipende dalla presenza di alcuni ActiveX, attualmente usati da OWA 2003, che vengono mal digeriti da IE7. Per ovviare a questo problema è possibile installare una Hotfix al vostro Microsoft Exchange 2003, come indicato in questo articolo della Knowledge Base: 911829, che in sostanza sostituisce l'uso degli ActiveX con un editor che usa un iFrame di Internet Explorer.
Purtroppo l'articolo non fornisce indicazioni su come convincere gli IT Manager ad applicare questa Hotfix e quindi, fino a quando la vostra azienda non sarà migrata verso IE7 o Windows Vista, potrebbe essere impossibile per voi usare OWA con IE7 obbligandovi all'uso di altri browser (nel mio caso Firefox).

martedì 16 gennaio 2007

Visual Studio 2005 Team Edition for Database Professionals - Technical Workshop

Il 21 febbraio a Milano, nella sede di Microsoft, si terrà un evento tecnico dedicato a Visual Studio 2005 Team Edition for Database Professionals.
Per maggiori informazioni e per iscrizioni visitate la pagina ufficiale dell'evento cliccando qui.
Non fatevi scappare questa occasione, fissate le agende ;-)

Internet Explorer 7 - Runtime Error in Windows Vista

Approfittando delle vacanze di natale, ad inizio anno, ho installato Windows Vista sul mio portatile insieme a tutti gli altri software che normalmente uso.
Con mio rammarico mi sono accorto che, in alcune situazioni, Internet Explorer 7 non funzionava correttamente e segnalava il seguente errore:
Microsoft Visual C++ Runtime Library
Runtime error
Program: c:\program files\Internet Explorer\iexplore.exe
La cosa non mi andava giù ed oggi ho deciso di provare a risolvere il problema. La normale ricerca in rete non mi ha fornito quello che cercavo però un post, in cui si parlava della modalità di esecuzione di Internet Explorer 7 denominata Internet Explorer (No Add-ons),  mi ha messo sulla buona strada ed ho capito cosa poteva essere. In pratica, alcuni add-on per Internet Explorer 7 non sono compatibili con la modalità Protected Mode: On e questo in Windows Vista genera l'errore di runtime segnalato sopra. Quindi non mi restava che determinare quale fosse o quali fossero gli add-on "incompatibili". Una volta identificato l'ho semplicemente disabilitato e il mio browser a ripreso a funzionare in ogni situazione.
Ah, giusto per la cronaca, nel mio caso l'add-on che mi ha creato problemi era quello installato con Omea Reader (COmeaHelper Object - IexploreOmeaW.dll).

lunedì 15 gennaio 2007

Windows Vista Performance Enhancements

Con tutte le novità di questo periodo, mi sono dimenticato di una novità di Windows Vista che mi aveva colpito durante le varie presentazioni di questo prodotto. Mi riferisco alla funzionalità Windows ReadyBoost che permette di incrementare la RAM di un computer semplicemente inserendo una chiavetta di memoria USB ed impostarla utilizzando l'opzione dell'autoplay denominata Speed up my system. Per una dettagliata descrizione vi raccomando di leggere questo breve articolo: Windows Vista Performance Enhancements.