Antonio Esposito's


Prodotti tipici .NETtiani

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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
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...
Categoria: Tips
venerdì, 08 gen 2010 Ore. 09.23

DataTable + DateTime = lentezza

Ieri ho assistito ad una strana cosa: indagando sulle prestazioni di una ns applicazione aziendale, ho notato che il tempo di serializzazione/deserializzazione di un DataTable che è ospitato in un WF a stati macchina è molto alto..... attaccandomi con WinDbg ho notato un sacco di eccezioni.... poi sono andato in visual studio e li ho attivato il debug delle eccezioni di tutto il codice (oltre il mio anche quello del DataTable interno) facendo Tools -> Options -> Debugging -> decheck di  
Leggi tutto il post...
Categoria: Tips
venerdì, 08 gen 2010 Ore. 09.06

Passaggio di parametri, valuetype vs referencetype

A volte confonde le idee.... provo a parlarne in modo semplice: Ipotizziamo di chiamare dei metodivalue type (structure)void test(int i){//se cambi i non cambia nel chiamante}void test(ref int i){//se cambi i cambia anche nel chiamante}reference type (class)void test(object o){//se cambi il valore di o non cambia nel chiamante//se cambi il valore di una proprietà di o questa è dell'oggetto puntato da o, e quindi del chiamante}void test(ref object o){//se cambi o questo cambia nel chiamante//se  
Leggi tutto il post...
Categoria: Tips
martedì, 05 gen 2010 Ore. 14.50

VSTSDB VSDBCMD.exe

VSDBCMD.exe - VisualStudio Team System Database Edition GDR R2 Questa utility server a fare importazioni e deploy di schema di DB SQL Server.... eventualmente usato in comnbinazione con TFS è possibile una volta fatto un progetto DB fare il versioning del DB che si vuole. Cosa portarsi dietro nei vari ambienti: La utility VSDBCMD.exe si trova in %\ProgramFiles%\Microsoft Visual Studio 9.0\VSTSDB\Deploy (predere tutta la cartella)Eventualmente lanciare: reg add HKEY_CURRENT_USER\Softw 
Leggi tutto il post...
Categoria: Tips
martedì, 05 gen 2010 Ore. 11.24
Statistiche
  • Views Home Page: 10.679
  • Views Posts: 58.867
  • Views Gallerie: 0
  • n° Posts: 44
  • n° Commenti: 16
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003