Win Services: Oggetto da usare per caricare un lista di files

giovedì 02 aprile 2009 - 17.23

bluland Profilo | Guru

Salve,

ho creato un applicazione che effettua il parsing di file che trova in una determinata cartella,
essendo una win application facevo in questo modo:

puntavo alla cartella e caricavo in un listbox tutti i path dei files che trovavo, finito tutto ripuntavo alla cartella e ricaricavo la lista.
Ora mi trovo a trasformare tale applicazione in un services, mi chiedevo in questo caso dove potrei caricare la lista di files che trovo?
la prima cosa che mi viene in mente sono gli array ma sono poco performanti..
oppure usare un datatable ma correrei il rischio che se viene pulita la cache di non trovare i files caricati..

Suggerimenti?

Saluti
--------------------
Vincenzo PESANTE
Software Engineer

freeteo Profilo | Guru

Ciao,
io lavorerei sempre con collection tipizzate, ossia "List<T>" (quindi di fatto System.Collection.Generics) dove "T" sta per il tipo, e poi la listbox è sicuramente un visualizzatore degli elementi che stai trattando.
Devi cercare di intendere l'aspetto (quindi Win32, o Asp.net , o Palm etc..) come una pura presentazione di qualche cosa che stai gestendo, quindi di fatto eviti di legarti ad una particolare applicazione.
Con qeusta logica, il tuo Service non avrà parte grafica, ma di fatto tratterà le cose allo stesso modo.

Tradotto in codice io farei qualcosa di questo tipo:
List<string> files = new List<string>(); files.AddRange( Directory.GetFiles(...) ); ...

tral'altro, se vuoi usare le classi "DirectoryInfo" e "FileInfo" oltre al singolo path del file hai anche una serie di informazioni in più come data di creazione,garndezza etc...il codice è praticamente equivalente:
List<FileInfo> files =new List<FileInfo>(); DirectoryInfo dirInfo = new DirectoryInfo(...); files.AddRange(dirInfo.GetFiles()); ...

Quando hai questa collection in memoria, ti basta darla in pasto alla tua ListBox, o ad un datagrid, piuttosto che ad una DataList di asp.net...non fa differenza, la tua collection è sempre la stessa, cambia la sola visualizzazione (win32, asp.net, wpf, silverlight etc...)

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

bluland Profilo | Guru

Grazie,

sono tipo le ArrayList di java credo, quindi sono + performanti di array, allora devo studiare come si usano.

Grazie per il suggerimento.


saluti
--------------------
Vincenzo PESANTE
Software Engineer

bluland Profilo | Guru

Ma le List non esistono con frwk 1.1 ?
--------------------
Vincenzo PESANTE
Software Engineer

freeteo Profilo | Guru

>Ma le List non esistono con frwk 1.1 ?
ma stai usando il fmw 1.1? ma vedi di migrare almeno alla 2.0 che si parla di 8 anni fa, e di 3 versioni fa.
Ma fallo a brave perchè non ha veramente senso avere applicativi con quella versione, fai la migrazione tanto è un upgrade indolore.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

bluland Profilo | Guru

dovrei comprare la licenza di VS 2005 pero'!

--------------------
Vincenzo PESANTE
Software Engineer

freeteo Profilo | Guru

>dovrei comprare la licenza di VS 2005 pero'!
puoi usare le versioni Express che sono gratuite e abbastanza complete, mancano di alcune features di Visual Studio e di Crystal Report, ma per fare progetti/soluzioni di qualsiasi tipo sono uguali a visual studio.
Se installi quelle, a questo punto io userei direttamente la versione 2008 Express:
http://www.microsoft.com/Express/

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

bluland Profilo | Guru

In effetti gia ho installato ed usato vs2008 express, solo che tra i progetti non c'e la creazione dei windows service.
--------------------
Vincenzo PESANTE
Software Engineer

freeteo Profilo | Guru

>In effetti gia ho installato ed usato vs2008 express, solo che
>tra i progetti non c'e la creazione dei windows service.
si è vero per alcuni progetti non è stato inserito il template, però tecnicamente avendo a disposizione il Framework lo puoi fare tranquillamente, solo che non hai il template già incluso, lo devi includere tu, come mostrato qui:
http://www.eggheadcafe.com/community/aspnet/7/10027576/windows-service-template.aspx

scaricati lo zip, e mettilo nella dir dei template di visual studio express, ossia ad esempio:
C:\Documents and Settings\###TUO UTENTE###\My Documents\Visual Studio 2008\Templates\ProjectTemplates\Visual C#


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5