|
Multithreading
Ciao a tutti
Voglio postare un esempio di multithreading in cui leggo e comprimo tutti i file di una directory (e sottodirectory). L'approccio è questo: 1) Leggiamo tutti i nomi dei file e li mettiamo in una coda2) Creiamo dei thread in cui cicliamo sulla coda fino all'esaurimento3) In ogni thread mettiamo un Handle con cui segnalare al thread principale la fine dell'esecuzione4) Alla fine serializziamo il bag che rappresenta il file di output
Vediamo come fare in una applicazione c# console d Leggi tutto il post...
sabato, 10 apr 2010 Ore. 18.47
ADO.NET, Stored Procedure e valori di ritorno
Ciao
è passato un po di tempo dall'ultimo mio post... ma il lavoro incalza e dai clienti non posso connettermi al blog... :(
Stored procedure e valori di ritorno in .NET:
Normalmente ADO.NET ci mette a disposizione tramite un SqlCommand 4 possibilità di esecuzione dello statement SQL:
1) ExecuteNonQuery viene usato per eseguire lo statement senza posizionarsi in lettura su eventuali resultset che l'SQL passato possa generare: in genere è usato per INSERT, UPDATE e DELETE... le select funzi Leggi tutto il post...
lunedì, 22 mar 2010 Ore. 11.01
Errori non gestiti, ASP.NET
Ciao
gli errori non gestititi in ASP.NET (cioè quelli accaduti fuori da un try-catch) possono essere intercettati in modo automatico in più punti:
il metodo più corretto per informare un utente di un eccezione è quello di non informarlo completamente, dirgli semplicemente che qualcosa non va, e che deve riprovare eventulamente. D'altronde bisogna loggare l'eccezione e per alcuni casi fare in modo di avvertire l'amministratore di sistema. Per farlo possiamo abilitare i customErrors nel web.con Leggi tutto il post...
martedì, 02 mar 2010 Ore. 10.49
Parallel.For, Parallel.ForEach
Ciao
Il .NET 4.0 ad oggi in RC1 offre molte novità, una delle più importanti per quanto riguarda le prestazioni è il Parallel Patterns Library. Usando in nuovi namespaces e le nuove classi è possibile a codice usare un costrutto sequenziale che viene poi convertito ed eseguito a runtime su più thread del threadpool. Questo sistema non ci facilita l'elaborazione asincrona su altri thread, ma diciamo che velocizza l'esecuzione di alcuni costrutti. E' ovvio che un For parallelo non è più veloce di Leggi tutto il post...
martedì, 02 mar 2010 Ore. 09.55
dynamic keyword & late-binding
Ciao a tutti
in c# 4 è stata aggiunta la keyword dynamic per poter finalmente utilizzare il late-binding tanto utile con i tipi anonimi spesso usati con LINQ.es:
static void Main(string[] args){ test(new {Value="pippo"}); //tipo anonimo}static void test(dynamic p){ Console.WriteLine(p.Value); //questo è il late-binding}
La keyword dynamic in pratica ci permette di accedere a dei metodi di classe a runtime. In VB questa keyword non esiste perchè è sempre possibile utilizzare il late Leggi tutto il post...
sabato, 13 feb 2010 Ore. 15.05
WebFarm vs WebGarden
Ciao a tutti
Come molti sanno una WebFarm è un insieme di webserver dedicati che espongono lo stesso sitoweb in genere tramite l'uso di bilanciatori di rete hardware o software. In un simile caso, si sfrutta la potenza di calcolo globale dei server per garantire una scalabilità orizzontale (aumento del numero di macchine) e migliorare così le prestazioni globali del sistema.
La scalabilità di un applicazione web è essenziale quando si ha a che fare con un grande numero di utenti contemporanei Leggi tutto il post...
martedì, 09 feb 2010 Ore. 19.49
PDF & CrystalReport
Ciao
Non tutti sanno che quando si crea un report in CrystalReport aggiungendolo al nostro progetto, è sufficiente un comando per avere un PDF senza dover installare stampanti PDF o assembly esterni:
MioReport r = MioReport(); r.SetDataSource(new DataTable());r.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,@"c:\export.pdf"); // PDFr.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows,@"c:\export.doc"); // WORDr.ExportToDisk(CrystalDecis Leggi tutto il post...
lunedì, 08 feb 2010 Ore. 22.05
Accedere ai metadata di un file audio/video
Ciao
In giro esistono varie librerie per accedere ai metadata di un file sul disco per poter leggere/scrivere dati tipo "Autore", "Genere musicale", "Anno di pubblicazione": eccone alcune
http://www.orthogonal.com.au/computers/ntag/index.htmhttp://mediainfo.sourceforge.net/enhttp://www.taglib-sharp.com/Main_Pagehttp://home.fuse.net/honnert/hundred/?UltraID3Lib
Leggi tutto il post...
martedì, 02 feb 2010 Ore. 09.58
TraceSource & MemoryLeak
Ciao a tutti
Quando si deve utilizzare un TraceSource è bene allocarlo in modo statico in qualche classe perchè l'uso, anche con il costrutto using, puo generare un memoryleak abbastanza spiacevole:
using (TraceSource t = new TraceSource("pippo")){ t.WriteEvent(............);}
questo metodo, anche se utilizza lo using (e viene garbagiata), genera un leak perchè il tracesource si registra in una IList internamente con una WeakReference che a sua volta non viene garbagiata.... Leggi tutto il post...
lunedì, 01 feb 2010 Ore. 17.42
WCF & Java
Ciao a tutti
La generazione del WSDL del WCF puo essere soggetta a degli xsd:import che generano problemi nella generazione del proxy fatto in Java
.........<xsd:schema targetNamespace="..."> <xsd:import schemaLocation="http://myservice/service.svc?xsd=xsd0" namespace="http://myservice/messages"/> <xsd:import schemaLocation="http://myservice/service.svc?xsd=xsd1" namespace="http://myservice/messages"/></xsd:schema>.....
Basta però rico Leggi tutto il post...
mercoledì, 27 gen 2010 Ore. 16.25
DataContractSerializer + [Serializable] = opt-out non voluto
Ciao a tuttiScrivo 2 parole per chiarire il comportamento del DataContractSerializer
Il DataContractSerializer è nuovo del .NET 3.0... introdotto con WCF è il suo serializzatore di default. Il comportamento è opt-in (serializzo solo ciò che è esplicitato con degli attributi) ma solo se marchio la mia classe con l'attributo [DataContract] e i membri con [DataMember], altrimenti per le classi public serializza in automatico tutti i membri (opt-out) a loro volta public a meno di usare sui member l Leggi tutto il post...
mercoledì, 20 gen 2010 Ore. 15.33
EntityClient, ObjectQuery (EntityFramework)
Ciao a tutti
EntityFramework è una tecnologia nuova che offre una modellazione concettuale dei dati, una buona varietà di tecniche di accesso di accesso alle entità e il supporto a tutti i provider ADO.NET.
Entity Framework
EF è un'astrazione del modello dati di un DB. A differenza di un modello ORM (Object-Relational Mapping) ad esempio linq o anche un DataSet tipizzato, che genera per noi il codice di mappatura 1-1 tra una tabella sul db e una classe, EF invece usa un modello concettua Leggi tutto il post...
lunedì, 18 gen 2010 Ore. 15.55
Property Autoimplementate
Novità del Visual basic 2010 saranno le property autoimplementate così come accaduto già per c# nella scorsa edizione (2008)
Una property normale in VB.NET si scrive così: private _name as Stringpublic property Name as string get return _name end get set(value as string) _name = value end setend property
In c# invece:public string Name {get; set; } //molto più conciso....
Finalmente in VB 2010
public property Name as string ' ;))))
Leggi tutto il post...
giovedì, 14 gen 2010 Ore. 17.23
Benchmark Serializzazioni #2
Ho ripetuto il test sui serializzatori (http://blogs.dotnethell.it/espositos/Benchmark-Serializzazioni__16224.aspx) aggiungendo altri due scenari:
istanza:[Serializable][DataContract]public class item { [DataMember] public int ID {get; set; } [DataMember] public string LongString {get; set; } //MANCA IL BYTE ARRAY [DataMember] public DataTable Table {get; set; }}
Questa istanza viene popolata all'inizio del benchmark così:ID= intero randomLongString = Conver Leggi tutto il post...
martedì, 12 gen 2010 Ore. 12.49
Benchmark Serializzazioni
Ieri sera ho passato un po di tempo a fare un banchmark della velocità di serializzazione / deserializzazione dei vari componenti standard del .NET poichè impatta nello scambio dati tra servizi e nella gestione della sessione su SQL Server. Ne posto i risultati. Il test l'ho fatto sulla mia macchinetta di sviluppo in ufficio...
istanza:[Serializable][DataContract]public class item { [DataMember] public int ID {get; set; } [DataMember] public string LongString { Leggi tutto il post...
martedì, 12 gen 2010 Ore. 12.13
POCO
I POCO (Plain Old Clr Object) sono oggetti semplicemente scritti in linguaggio standard, senza attributi o design pattern caratterizzanti. Il nome deriva dai POJO (Plain Old Java Object).
Es:
public class Person {public name {get; set;}public surname {get; set;}}
In LINQ ad esempio è possibile utilizzare classi da mappare ad una tabella utilizzando l'attributo [Table] e [Column]. Diversamente è possibile utilizzare la classe XmlMappingSource collegata ad un file di configurazione .xml Leggi tutto il post...
lunedì, 11 gen 2010 Ore. 17.13
DataSet.WriteXml
Ho notato che usando i metodi WriteXml e ReadXml del DataSet per serializzare in un DiffGram (XML) N DataTable, il risultato (la deserializzazione) è quello di avere per ogni DataTable le sole Column realmente popolate, e tutte tipizzate a string, perdendo il tipo originale......
es:
var dt = new DataTable();dt.Columns.Add("dt",typeof(DateTime));dt.Columns.Add("i",typeof(int32));dt.Rows.Add(dt.NewRow());dt.Rows[0]["dt"] = DateTime.Now;dt.Rows[0]["i"] = 150; //omettendo questa riga, nel datatab Leggi tutto il post...
venerdì, 08 gen 2010 Ore. 09.23
|
Statistiche |
- Views Home Page: 11.550
- Views Posts: 60.323
- Views Gallerie: 0
- n° Posts: 44
- n° Commenti: 16
|
|