CodePlex e il BinaryStorage

Nonostante il periodo davvero pieno sono riuscito in queste sere a buttar su CodePlex un mio progettino (pubblicato con licenza "Microsoft Shared Source Community License (MS-CL)"). Devo ringraziare janky a cui ho chiesto parere/consulenza e con cui mi è piaciuto condividere l'idea del progetto...

Il progetto che ho chiamato "BinaryStorage" si tratta di una libreria per gestire le risorse con un path virtuale. La semplice normalizzazione del path permette di avere provider pluggati che raggiungono la risorsa identificabile con lo stesso nome ma in modalità diversa definita in una stringa di connessione (- sarò chiaro?!- ). Un certo parallelo della filosofia della libreria ci potrebbe essere con la coppiata ANSI SQL e potenzializtà OleDb: mantenendo costante il commandText è possibile da stringa di connessione cambiare server e tecnologia del database.; allo stesso modo mantenendo costante il nome del "file" possiamo cambiare lo storage usando la stringa di connessione. (- per me è chiaro non nemmeno ora, ma sono giustificato perchè un pò stanco -).

Quello che segue è un esempio di codice con cui si usa gli oggetti del "BinaryStorage" per scrivere un blob usando come input il contenuto di uno stream.

string connectionString = /* ... */
BinaryStorageConnection connection = new BinaryStorageConnection(connectionString);
string vPath = "/Sample/Test.bin";
MemoryStream source = new MemoryStream(/* ... */);
connection.WriteFromStream(source, vPath);

La stringa di connessione definisce il tipo di provider da usare e la configurazione del provider scelto (proprio come le classiche stringhe di connessione di OledB). La libreria mette a dispozione provider precostruiti (FILE e FTP) o provider custom che si implementano estendendo il tipo base "BinaryStorageProvider".

connectionString = 
   "provider=FILE;rootPath=C:\Temp\";

connectionString = 
   "provider=FTP;rootPath=/MyFTP;user=???;password=???;host=localhost;port=21";

connectionString = 
   "provider=MarcoBarzaghi.Sample.MyBlobsSqlProvider,MarcoBarzaghi.Sample;...";

Un esempio pratico di utilizzo? Un sito e i cui utenti caricano le loro foto. In prima istanza si decide di depositare le foto nel file system... i sito si ingrandisce si vuole scalare, il file system diventa limitato e occorre usare un database. Dopo una prima fase di import delle esistenti immagini nel database, il nostro sito dovrà solo cambiare la stringa di connnesione del BinaryStorage senza toccare il codice... beh ovviamente dovrà essere implementato il custom provider ;-p

Spero ora di riuscire a seguire in un qualche modo il progetto... o almeno a dare un aspetto più guardabile alla sua pagina di presentazione...

posted @ giovedì 9 novembre 2006 00:45

Print
Comments have been closed on this topic.
«ottobre»
domlunmarmergiovensab
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456