Azure AppFabric cache come Session State Provider

Cercando di utilizzare la cache di AppFabric per condividere lo stato della sessione di una web role Azure tra più istanze, sono incappato in un fastidiosissimo bug.

In pratica utilizzando il normale classico provider

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <clear />
    <add name="AppFabricCacheSessionStoreProvider" 
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
useBlobMode="true"
dataCacheClientName="default" /> </providers> </sessionState>

eseguendo in locale con l’emulatore ed utilizzando 2 o più istanze, random, la sessione viene cancellata con ripercussioni terrificanti sul software.

Dopo qualche googlata sono incappato in questo post
http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/127ba211-51b2-4f3e-9e7b-1b41af269708 
che riporta lo stesso problema e fortunatamente un workaround.

Riassumendo, occorre cambiare il provider in questo modo

    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <clear />
        <add name="AppFabricCacheSessionStoreProvider" 
type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider, Microsoft.ApplicationServer.Caching.Client"
cacheName="default"
sharedId="myAppName" /> </providers> </sessionState>

Da notare che una volta pubblicato “fisicamente” su Azure il problema spariva.

Ora però non so se con questo nuovo provider rischio di trovarmi qualche brutta sorpresa quando andrò online: se non posterò update catastrofici vorrà dire che il nuovo provider funziona anche su Azure Occhiolino

Npgsql con Entity Framework

Dall'ultima versione, Npgsql2 , il .NET Data Provider per PostgreSQL , offre il supporto per Entity Framework.

Purtroppo non è ancora integrato con Visual Studio, quindi per utilizzarlo occorre eseguire direttamente edmgen.exe da linea di comando.

Ma partiamo dal principio, perchè prima di poter ottenere il nostro bel file .edmx, è necessario effettuare alcune operazioni.

  • scaricare l'ultima versione di Npgsql2, la 2.0.1 (non la 2.0.0 che aveva un piccolo problema nel reverse engineering degli schemi) per il framework 3.5 SP1, da qui;
  • estrarre i due assembly Mono.Security.dll e Npgsql.dll dove desiderate;
  • aprire il Visual Studio Command Prompt (run as Administrator se usate Vista!), posizionarsi nella cartella dove avete estratto i files, e registrarli nella GAC ( gacutil /i Mono.Security.dll | gacutil /i Npgsql.dll );
  • sempre dal Visual Studio Command Prompt (non più necessariamente come Administrator se usate Vista!) eseguire edmgen.exe per creare i files .csdl|.ssdl|.msl
    ( edmgen /provider:Npgsql /mode:fullgeneration /c:"Port=5432;Encoding=UNICODE;Server=pgsrv;
    Database=mydb;UserId=dbuser;Password=dbuser!8" /project:MyProject );
  • a questo punto vi troverete i 3 files nella cartella, per concludere l'opera, o meglio per semplificare il tutto, perchè così già si potrebbe procedere, utilizziamo l'utility edmgen2.exe (la trovate qui) per "condensare" i nostri 3 files in un unico .edmx ( edmgen2 /ToEdmx MyProject.csdl MyProject.msl MyProject.ssdl );
  • non ci resta che aggiungere il risultato dei nostri sforzi (il file .edmx) al nostro progetto Visual Studio ( che provvederà ad aggiungere i riferimenti necessari), aggiungere un file di configurazione con la connection string (o specificarla direttamente nel costruttore del context) ed il gioco è fatto;

Attenzione a specificare correttamente il path dei metadati nella stringa di connessione, altrimenti a runtime non li troverà e vi richiederà il path dei file .csdl|.ssdl|.msl; nel mio esempio dovrebbe essere circa così:

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <configuration>
   3:   <connectionStrings>
   4:     <add name="ASTRIMSWContext"
   5:          connectionString="metadata=res://*/MyProject.csdl|res://*/MyProject.ssdl|res://*/MyProject.msl;
   6:          provider=Npgsql;provider connection string='Server=localhost;
   7:          Database=mydb;Integrated Security=False;User ID=mydbuser;Password=mydbuser!8;'" 
   8:          providerName="System.Data.EntityClient" />
   9:   </connectionStrings>
  10: </configuration>

 

MIX, bello...però...

Mi unisco a Omar nel fare i complimenti a tutti gli artefici dell'evento di ieri.

Molto interessante la sessione plenaria con Steve Ballmer, ottimi gli interventi tecnici della sessione Developer del pomeriggio.

In effetti il pubblico in sala era un po' freddino, forse fiaccato dai 3 case history, che per dei developer erano davvero poco interessanti.

Complimenti davvero a tutti!

Prima di chiudere però vorrei segnalare anche un paio di cose che non mi sono molto piaciute, anzi...

1) anche io, come Omar, sono arrivato con largo anticipo la mattina, ed il fatto di dover aspettare quasi 1 ora in piedi nell'area espositiva che via via si riempiva sempre di più, senza poter accedere alla sala, mi è sembrata una follia! La sala è stata aperta alle 10 e 5 minuti e l'inizio dei lavori era schedulato alle 10 e 15...perchè?

Secondo me era meglio lasciarla aperta, uno entrava, posava la sua roba, usciva e si beveva il caffè più tranquillo; l'area espositiva sarebbe stata più vivibile anche per gli sponsor che vi lavoravano, invece di avere gente in piedi che aspettava di entrare, gente che girava cercando un angolo per bersi il caffè, gente che cercava di visitare gli stand, ecc...

2) entrando tra i primi sono rimasto molto negativamente impressionato dall'abnorme quantità di posti riservati : le prime dieci (dico 10!!!) file, per 25 colonne, totale 250 posti, più un blocco di 10x10 posti sulla destra, ed altri 10x10 sulla sinistra: totale 450 posti riservati in una sala che approssimativamente poteva accogliere un migliaio di persone sedute! Decisamente troppi!!!

In più come se non bastasse, subito dietro alla zona off-limits, hanno piazzato il cameraman ed i fotografi che continuavano ad andare avanti ed indietro!

Di solito i posti riservati sono per eventuali autorità, VIP o parenti/familiari/amici, anche in eventi mondani o concerti importanti si riservano 2,3 massimo 5 file. Ieri, posti riservati anche per giornalisti e addirittura per i blogger, che avevano anche buffet separati...

Perchè ?!

Questa cosa mi ha molto più che infastidito, è come se andassi a S.Siro al concerto di Ligabue ed una volta arrivato scopro che il prato ed il primo anello sono completamente riservati, ed io che mi sono alzato alle 7 per essere lì in anticipo devo accontentarmi di ciò che resta.

In conclusione : contenuti e relatori voto 10, organizzazione voto 2.

Technorati Tag: ,,

Entity Framework non solo per SQL Server

Finalmente cominciano ad apparire i primi ADO.NET provider, con il supporto per Entity Framework, anche per altri DBMS oltre a Microsoft SQL Server.

Qui l'annuncio:
http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx


Si nota, IMHO, la rumorosa assenza di Oracle, che non sviluppa ancora il proprio .NET Data provider nativo per aggiunger il supporto ad EF.
Fortunatamente ci sono altre società che lo stanno facendo, però...

 

Thank you

Qualche manciata di minuti fa, ho ricevuto sulla mia scrivania il 'CRYSTAL CUBE' di ringraziamento per il betatest di Visual Studio 2008.

Beh che dire, grazie ;-)

Alcune curiosità:

- l'importer è Corrado Cavalli ;-)
- l'invio è costato 36.80 USD: considerando quanti ne avranno inviati...ma quanto gli sono costati i ringraziamenti ?

Technorati Tag: ,,

.NET Data provider

Io mi chiedo perchè un'azienda come IBM, non decida di rilasciare gratuitamente il proprio IBM DB2 UDB Data provider, o almeno una versione redist.

Allo stato attuale l'unica possibilità è quella di avere una licenza di iSeries Access ed eseguire il setup custom su ogni client che deve utilizzare l'eventuale applicativo .NET.

Purtroppo non basta aggiungere la .dll del provider nelle reference, perchè a runtime cerca delle altre .dll che vengono installate (e registrate) solo dal setup.

Esiste una Windows(r) Installer Technology Preview della V5.4, disponibile qui , però comunque in produzione richiede una licenza.

Non sarebbe meglio rilasciare una versione redistributable ?
Almeno un client setup del solo data provider, in stile Oracle, anche se
l'optimum sarebbe una o più .dll, della serie xcopy deployment, così basterebbe una reference e via.

Misteri del marketing, scarsa organizzazione interna o semplice 'miopia' commerciale ?

,

A caval donato...

...non si dovrebbe guardare in bocca dice il proverbio, ed invece come sempre, va beh dai diciamo quasi sempre, per una buona azione ricevi solo schiaffi!

Dopo circa 2 anni dal rilascio di un piccolo software di analisi dei log di squid (squid-cache, un proxy server open source), che avevo realizzato per una mia esigenza lavorativa,e` giunto il momento di fare un piccolo bilancio della mia avventura, e purtroppo non posso considerarla un'esperienza entusiasmante.

Ricapitolando brevemente, circa 2 anni fa ho realizzato questo semplice ma abbastanza completo programmino di analisi dei log di squid, perche` mi servivano delle informazioni che altri software simili non erano in grado di fornirmi.
Dato che il risultato era buono, ho deciso di pubblicarlo sul mio sito personale, che utilizzo come storage di tutto cio` che puo` servirmi quando sono in giro, rilasciandolo sotto licenza Creative Commons.

Nel frattempo ho provveduto, sfruttando il mio pochissimo tempo libero, a tenerlo aggiornato e ad aggiungere nuove funzionalita': e' cosi' che sono passato dal framework 1.1 al 2.0, da un singolo database come archivio al supporto di piu' database, supporto multilingua, e via discorrendo

Ecco alcuni numeri:

Downloads (sommando le varie versioni ed i download da siti come download.com)
- oltre 5000
Messaggi sul forum (tra quello attuale e quello precedente che ho purtroppo perso)
- circa 200
Ringraziamenti ricevuti
- 0
Donazioni ricevute
- 0

E fino a qui nessun problema, non era un'attivita' a scopo di lucro, e men che meno un tentativo per raccogliere complimenti; poi qualche mese fa ricevo un messaggio di un tizio tedesco che tutto incazzato mi faceva notare che la versione localizzata nella sua lingua conteneva parecchi errori di traduzione !!?
Gentilmente gli ho fatto presente che non conoscendo la sua lingua, mi ero basato su uno strumento di traduzione automatico (google): ho anche aggiunto che in effetti le parti localizzate non erano poi molte, e gli ho chiesto se era disponibile a correggere le traduzioni errate che gli avrei inviato in un file di testo.
Beh ad oggi, non mi ha neanche risposto, neanche un “no grazie”, ed in piu' ha ripostato sul forum lo stesso messaggio con un tono ancora piu' incazzoso!

Oggi poi, la classica goccia : altro messaggio, ancora da un tedesco (spero sia un caso!) sempre con toni ostili, alche' sapete cosa vi dico : ma vaff...... @###@%&*@#

Questo non fa altro che avvalorare la mia tesi riguardo open source e software free in generale: il 70% (e sono molto ottimista) degli utilizzatori di software free, sono degli approfittatori che utilizzano dei prodotti a costo 0, fregandosene del sudore buttato da chi l'ha realizzato ed avendo pure l'arroganza di lamentarsene se hanno qualche bug!!!

E sapete perche' ne sono cosi' convinto ? Perche' io appartengo a quel 70%, e me ne sono reso conto solo scrivendo questo post; giornalmente utilizzo prodotti free o open source, e credo di non aver mai ringraziato nessuno dei loro autori (non e' vero, qualcuno si' ;-) )

Io credo che da oggi il mio comportamento cambiera' radicalmente, ho capito che a volte un, “Grazie”, sincero, vale piu' di quello che sembra...

Migrazione dominio da Windows 2000 a Windows 2003 R2

Se si tenta di aggiungere un domain controller Windows 2003 R2 (Enterprise nel mio caso) come controller aggiuntivo ad un dominio Windows 2000, al fine di aggiornarlo, si ottiene un errore in fase di promozione del server 2003 R2, il seguente :

"The version of the Active Directory schema of the source forest is not compatible with the version of Active Directory on this computer."

Questo perchè per la versione R2, il comando adprep (/forestprep e /domainprep) non è quello nella cartella i386 del CD1 (come per Windows 2003 diciamo prima versione) bensì quello che si trova nel CD2 in CMPNENTS\R2\ADPREP, come indicato nella seguente KB

http://support.microsoft.com/default.aspx/kb/91738...

Vista Ultimate prime impressioni

Oggi ho finalmente trovato il tempo per installare Windows Vista (nella versione Ultimate) sul mio vecchissimo portatile (che presto verrà finalmente pensionato) un Compaq Presario 2800 di 5 anni fa...

Devo dire che le prime impressioni sono davvero ottime, nonostante il pc sia davvero obsoleto (unico punto a favore il giga di RAM!) le prestazioni non si discostano affatto da XP Pro SP2, anzi in certe operazioni mi sembra davvero più veloce.

Avevo già provato diverse versioni preliminari, e mi era sembrato molto più avido di RAM, tesi sostenuta anche da alcuni nomi di spicco del panorama IT internazionale, invece devo dire che 1 Gb basta,ma non ne avanza! (tenendo sempre presente che sto parlando della versione Ultimate, il top, su un portatile davvero vecchio)

Probabilmente le prestazioni godono anche del fatto che non sto utilizzando Aero (la mia scheda video, una ATI Radeon Mobility 7500, purtroppo non la supporta)

Il mio Avast antivirus funziona egregiamente e non mi ha dato alcun problema in fase di installazione.

Last but not least, UAC : fantastico!
Finalmente, quando qualche utente chiamerà lamentando il fatto che il tal applicativo non funziona più, spergiurando di non aver installato niente, gli crederò : perchè da Vista in poi NON POTRA' PIU' FARLO!!!
Ovviamente a patto che i signori amministratori di rete installino tutti standard users (ma per quanto riguarda i nostri utenti sono certo che sarà così!!!)

Tags:

TCP/IP netmask in soldoni

Bell'articolo, non saprei spiegarlo meglio,me lo appunto caso mai dovessi spiegare a qualcuno a cosa serve e come funziona la sub-netmask ;-)

http://www.ebruni.it/docs/la_netmask_spiegata_a_mi...

«settembre»
domlunmarmergiovensab
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910