mercoledì, giugno 06, 2007

Port Sharing su WCF

In WCF è possibile condividere l'uso di una determinata porta TCP tra più servizi diversi, grazie al Port Sharing.

Questo servizio, denominato Net.Tcp Port Sharing Service è installato con il framework 3.0 ma di default l'avvio è manuale e l'account utente predefinito è LocalSystem. Dopo averlo avviato ed impostato l'avvio in automatico, si può procedere a configurare il resto.

Visto che il servizio Windows (o application pool di IIS) che ospita il nostro/vostro servizio WCF utilizza un account utente che non ha privilegi amministrativi, è necessario abilitare questo account all'accesso tramite Port Sharing.
Per questo è necessario ottenere il SID dell'account utente (ho usato il tool user2sid.exe) ed aggiungerlo alla configurazione del servizio Net.Tcp Port Sharing Service, il file SmSvcHost.exe.config che si trova nella cartella di sistema di WCF, qualcosa come  C:\windows\Microsoft.Net\v3.0\Windows Communication Foundation.
Attenzione!!! Se, come nel mio caso, il sistema operativo è a 64 bit e, di conseguenza, anche .Net 3.0 è a 64 bit, esiste un'altra cartella, del tipo C:\WINDOWS\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation, dove si trova il servizio ed il file di configurazione che entrano in gioco.
Qui trovate le istruzioni per configurare il servizio Net.Tcp Port Sharing Service. Da tenere a mente che le configurazioni relative al canale Tcp presenti in questo file di configurazione hanno il sopravvento su quanto specificato nel file di configurazione del nostro servizio.

Una volta attivato il Net.Tcp Port Sharing Service e consentito l'accesso al nostro account, si può configurare il nostro servizio WCF perchè utilizzi la condivisione della porta. Per fare questo è sufficiente abilitare l'attributo portSharingEnabled della binding configuration:

<netTcpBinding>
<binding name="aTcpBindingName" portSharingEnabled="true">
</binding>
</netTcpBinding>

A questo punto tutto è a posto.

martedì, maggio 15, 2007

Pat Helland is back

Pat Helland è una delle personalità più influenti nel campo della gestione delle transazioni e dei database in Microsoft. Credo di avere letto per la prima volta qualcosa di suo ai tempi di MTS 1.0, molti anni fa.

Dopo avere lasciato Microsoft per due anni passando ad Amazon.com è tornato in Microsoft. Sicuramente una bella notizia in un periodo in cui sono frequenti le notizie della dipartita di personalità di rilievo da Microsoft.

martedì, aprile 10, 2007

WCF Post Action Report

Lo scorso venerdì 6 aprile ho avuto l'occasione di presentare Windows Communication Foundation all'interno del ciclo di meeting di XeDotNet.org sul framework .Net 3.0.

Una esperienza interessante anche se sono molto più felice ora che è passata. Grazie a tutti per l'incoraggiamento e sono soddisfatto di avere riscontrato l'apprezzamento dei presenti (almeno fino a quando non vedrò i risultati dei feedback).

Forse ripeterò l'esperienza in futuro, per ora sono contento di avere dato il mio piccolo contributo al gruppo XeDotNet.org che continua a crescere. Il ciclo di meeting su .Net 3.0 è molto interessante e vi consiglio di partecipare alle prossime riunioni.

venerdì, aprile 06, 2007

Una visita guidata a WPF

Windows Presentation Foundation con XAML (eXtensible Application Markup Language)  per la gestione delle nuove esperienze UI in WIndows:

WMI: Who am I?

Se non lo conoscete eccovi un paio di dritte per introdurvelo:

Reflection: esempi per capire

Ecco un paio di esempi di come usare le reflection nell'analizzare oggetti .NET:

Come usare i Property Grid

Articoletto veloce veloce per capire come utilizzare ed estendere i PropertyGrid (da CodeProject ).

martedì, marzo 20, 2007

Windows Communication Foundation a XeDotNet

Durante il prossimo meeting di XeDotNet.org del 6 aprile terrò una sessione su Windows Communication Foundation.

Se siete interessati ad una introduzione e qualche approfondimento su WCF, iscrivetevi.

L'evento si tiene a Mestre, nella sede ACLI di via Girolamo Ulloa. Se arrivate in treno, la sede si trova all'uscita del sottopassaggio della stazione che porta anche ai binari. 
Per la mappa per giungere al luogo dell'incontro cliccare qui.

L'iscrizione all'evento è gestita direttamente da Microsoft. Questo è il collegamento alla pagina di registrazione.

venerdì, febbraio 16, 2007

Global knoledge resources

Un link con un sacco di info a proposito di un sacco di cose (sempre IT, ovviamente)

SQL: @@IDENTITY, forse abusata

Sapevate che @@IDENTITY ha delle sorelle meno conosciute, ma a volte più utili della stessa?
Ebbene si: esistono SCOPE_IDENTITY() e IDENT_CURRENT('table_name').

Valutate bene quando usarle...

Alcuni link in proposito:

Grazie Maxmost

mercoledì, febbraio 14, 2007

SQL: Table variables vs. Temporary table

Table Variables.... io non le avevo mai usate, ma adesso, nei giusti casi... le userò di certo:

T-SQL: Cursori in output

Mi sono trovato a dover scrivere sta robba e ne è venuta fuori un utile procedura per l'esecuzione di comandi SQL dinamici (supporta anche parametrizzazione).
Può essere un punto di partenza per cosine più complesse.

CREATE PROCEDURE dbo.GenericCursor
@genericCursor CURSOR VARYING OUTPUT
, @CMD Nvarchar(1024)
AS
BEGIN
DECLARE @CMDx Nvarchar(1024);
SET @CMDx = 'SET @genericCursor = CURSOR FORWARD_ONLY STATIC FOR ' + @CMD + '; OPEN @genericCursor;'
exec sp_executesql @CMDx,
N'@genericCursor cursor output',
@genericCursor out
END



CREATE PROCEDURE testGenericCursor
AS
BEGIN
DECLARE @MyCursor CURSOR;
DECLARE @name as varchar(100);
DECLARE @CMDx Nvarchar(1024);
SET @CMDx = 'SELECT TOP 50 name FROM dbo.sysobjects;'
EXEC dbo.GenericCursor @MyCursor OUTPUT, @CMDx;
FETCH NEXT FROM @MyCursor INTO @name;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
FETCH NEXT FROM @MyCursor INTO @name;
SELECT @name
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
END


EXEC dbo.testGenericCursor

martedì, febbraio 13, 2007

Expresso: Regular Expression

Un buon tool per l'uso e abuso delle RegExp è secondo me Expresso:

In generale sulle Regular Expressions:

Percorsi formativi in .NET

Una serie di utili links a guide sul percorso formativo in ambito .NET

L'architetto del software

Una nostra vecchia conoscenza del corso MCSD spiga in questo racconto chi è l'architetto nel mondo del software.
Simpatico.

NHibernate: Hibernate per .NET

NHibernate è un porting del nucleo di Hibernate per Java sul framework di .NET.
Gestisce la persistenza degli oggetti in .NET su una base di dati relazionale.
Data una descrizione XML delle entità e relazioni, NHibernate genera automaticamente il codice SQL per caricamento e memorizzazione degli oggetti.
Facoltativamente, si può descrivere i meta dati di tracciato con gli attributi nel codice sorgente.

lunedì, febbraio 12, 2007

C# ereditarietà multipla

Per aggirare la single inheritance (ereditarietà da una sola classe base, ma da n interfacce) sono possibili alcune vie in C# 2.0, più o meno semplici... vediamo come:

giovedì, gennaio 25, 2007

Lezioni di .Net 3.0

Ripropongo da questo blog Microsoft il link ad una serie di lezioni pratiche su .Net 3.0, in pratica diversi post che affrontano con dei tutorial le diverse tecnologie WPF, WCF (la mia preferita) e WWF (o WF). 

lunedì, gennaio 08, 2007

Il deployment di un servizio WCF senza usare IIS

Spesso si ospitano dei servizi Windows Communication Foundation (WCF) in IIS ma non è l'unico modo per esporli ai client. Un qualsiasi applicativo di tipo console o anche una semplice applicazione Windows Forms possono ospitare dei servizi e ci sono alcuni casi in cui questa opzione non è poi così assurda come potrebbe sembrare.

Una alternativa host per WCF propriamente confrontabile con IIS è un servizio di Windows, capace di partire in modo automatico/unattended all'avvio del sistema e pensato per operare 24x7.

In questo post racconto la mia esperienza di deployment di un servizio Windows. Questi sono i passi che ho seguito:

  • Registrare il certificato se, come me, avete scelto di implementare un servizio che usa:
    • sicurezza a livello di messagio
    • credenziali di sicurezza UserName
    • un validatore custom per le credenziali
  • Registrazione namespace
  • MSMQ, privilegi di accesso e registrazione certificati

Certificato
Il certificato, pubblicamente verificabile ed emesso da una Certification Authority (CA), può essere registrato nel server usando l'add-in Certificate in una console MMC. Lanciare mmc.exe, menu File, voce Add/Remove Snap-in, aggiungere Certificate, selezionare quale certificate store gestire.
Nel mio caso ho scelto di registrare il certificato a livello di computer account, tra i Trusted Publishers. Questa impostazione deve coincidere con quanto riportato nella configurazione del servizio WCF.

Il certificato viene utilizzato dal servizio WCF per gestire la crittografia delle comunicazioni client-server e quindi l'account con cui viene eseguito il servizio Windows deve avere accesso alla chiave privata.
Il servizio Windows può utilizzare un qualsiasi account predefinito, come LocalSystem, o del dominio. Nel mio caso ho deciso di creare un account di dominio specifico per il servizio WCF, al fine di controllare facilmente i privilegi di accesso alle diverse risorse del dominio.
WinHttpCertCfg.exe (MSDN e Support) è uno strumento da linea di comando per verificare e concedere l'accesso al certificato.

Nel mio scenario ho eseguito questo comando per verificare gli account che hanno già accesso alla chiave:

winhttpcertcfg -l -c LOCAL_MACHINE\TrustedPublisher -s <nome certificato>

Questo comando invece per assegnarlo all'utente desiderato :

winhttpcertcfg -g -c LOCAL_MACHINE\TrustedPublisher -s <nome certificato> -a <dominio>\<utente>

Namespace
Probabilmente il servizio WCF da esporre ha degli endpoint con binding http e se il sistema server è Windows 2003 Server SP1, Windows Vista o Windows XP SP2 è necessario avere a che fare con HTTP.SYS. Rimando a questo articolo per i dettagli su HTTP.SYS.
Per quanto ci interessa ai fini di WCF, solo gli amministratori hanno il diritto di registrare un namespace arbitrario, senza previa autorizzazione, mentre l'account che si usa per il servizio Windows non ha privilegi così elevati.

Per registrare il namespace si utilizza lo strumento da linea di comando HttpCfg.exe (MSDN), già presente in XP SP2, installabile con i support tools in Windows Server 2003.

Il problema di HttpCfg.exe, per chi è allergico agli strumenti da riga di comando, è la complessità dei parametri. Dominick Baier ha realizzato HttpSysCfg.exe, un utilissimo strumento che semplifica le operazioni.

Nel mio caso ho selezionato l'account per il servizio Windows ed ho aggiunto l'URI del servizio, nella forma:

http://+:<porta>/<TuaApplicazione>

L'URI è diverso da un caso all'altro. Lo strumento ha bisogno di HttpCfg.exe per funzionare. Per i dettagli si vedano questo post e anche questo.

Su Vista non è presente il tool HttpCfg.exe e si utilizza il comando netsh.exe per configurare HTTP. Si può anche installare HttpCfg.exe ma per la registrazione del namespace netsh.exe è altrettanto "semplice". Con netsh.exe il comando avrà una sintassi di questo tipo:

netsh http add urlacl http://+:<porta>/<TuaApplicazione> user=<utente>

MSMQ
Nel mio scenario ci sono anche degli enpoint con binding msmq (molto interessante). Si deve verificare che all'account del servizio Windows siano concessi i privilegi necessari per accedere propriamente alla coda.

Uilizzando MSMQ ho anche incontrato un errore inatteso. Quando il servizio WCF tentava l'accesso alla coda per inserire un messaggio, riceveva una eccezione del tipo: "No internal Message Queuing certificate exists for the user".

Per risolvere il problema e non perdere troppo tempo ho preferito usare le maniere forti. Ho lanciato MMC utilizzando (RunAs) l'account per il servizio Windows, ho apero lo strumento di amministrazione di MSMQ (Computer Management) ed ho registrato lo user certificate (Technet). Immagino ci siano altri modi per affrontare il problema.

Conclusione
Avendo iniziato ad usare WCF nel 2003, mi lascia abbastanza perplesso la mancanza di strumenti amministrativi visuali in grado di coprire queste semplici esigenze. I tool di integrazione di WCF in Visual Studio 2005 non sono ancora giunti alla versione definitiva e potrebbe spuntare qualcosa di nuovo nelle prossime settimane (o mesi).
Immagino che tutto quanto ho descritto si possa realizzare con delle custom actions nel setup del servizio Windows ma nel mio scenario sarebbe stato un overkill.

Ovviamente ho raccontato la mia personale esperienza, ho tralasciato molti dettagli e sottinteso alcuni concetti di WCF. Per maggiori informazioni su WCF questo è un ottimo punto di partenza.

giovedì, dicembre 21, 2006

ClickOnce

Dopo aver provato le laboriose proposte delle varie Enterprise Library, ecco finalmente la vera panacea (o quasi...): ClickOnce - da incrociarsi con la nuova gestione dei Settings di .NET 2.0!

  • FAQ: Tutte le domande che vi vengono in mente (con le risposte :-))
  • MSDN1 e MSDN2: come si fa a deployare con ClickOnce
  • CodeProject: e come si fa senza VS2005
  • CodeProject e MSDN: come usare i Settings
  • MSDN: usare Mage.exe per generare i deploy a manina
  • MSDN: deploy a manina di applicazioni clickoncenabled
  • MSDN: Tutto su ClickOnce
  • MSDN: Riassunto
  • MSDN: Trusted Publisher

    !!! Se avete problemi col deploy Clickonce via Internet ecco la soluzione: da Codeproject !!!

Namespaces in C# 2.0

Può esservi capitato di andare in confusione con lo scope di qualche Type Name a causa di come erano gestiti i Namespaces in .NET 1.1, ma adesso C# 2.0 ha apportato qualche utile novità: leggete questo semplice articolo tratto da CodeProject.

mercoledì, dicembre 13, 2006

PDC 2007!!!

Da un post di Brad Adams leggo l'annuncio della data e location della prossima Professional Developer Conference, prevista per l'Ottobre 2007 a Los Angeles.
Manca ancora un po' di tempo ma è bene pensarci su, avendo partecipato alla edizione 2000, 2003 e 2005 posso confermare per esperienza personale che sono eventi che valgono ogni singolo centesimo.

lunedì, dicembre 11, 2006

Smart Pos.Net featured on showcase.netfx3.com

Il nostro prodotto "Smart Pos.Net", realizzato da BEDIN Shop Systems utilizzando Windows Communication Foundation di .Net 3.0 è da oggi segnalato su http://showcase.netfx3.com.
Abbiamo anche realizzato un video che presenta il prodotto e mostra la modalità d'uso e gli scenari di implementazione, probabilmente verrà messo online sul sito http://showcase.netfx3.com prossimamente.

"Smart Pos.Net" è parte di una suite di smart client e servizi web per il commercio al dettaglio. Per ora non è disponibile una versione demo, appena sarà offerto in modalità di prova segnalerò il link.

Smart Pos.Net
BEDIN Shop Systems

Spedire Mail con .NET 2.0

Ecco una FAQ completa sul namespace System.Net.Mail; ecco inoltre alcuni esempi anche con System.Web.Mail da Codeproject.

martedì, dicembre 05, 2006

Validazione Controlli in Windows Forms

Ecco degli articoli che spiegano come automatizzare i controlli di validazione nelle Form del Framework:

Transazioni e Error Handling in SQL Server

Ecco alcuni articoli su come gestire transazioni in SQL Server e come gestire gli errori.

Inoltre ecco due interessanti e dettagliati articoli di Erland Sommarskog:

lunedì, novembre 27, 2006

Transazioni Distribuite

Ecco un interessante articolo per capire in maniera più approfondita come gestire transazioni distribuite: DataPoints da MSDN


E per rimanere in ambito SSIS:

sabato, novembre 18, 2006

Connection Pooling

Simpaticamente il nuovo ADO.NET oltre ad altre cose molto carine che ci permettono di astrarre dal .NET provider in uso, ci offre nuove vie per gestire i pool di connessioni (ClearAllPools e ClearPool ad esempio per pulire il connection pools per un dato provider, oppure il connection pool associato ad una specifica connection)
http://msdn2.microsoft.com/en-us/library/8xx3tyca.aspx

Interessante articolo di Codeproject.

How to quick Start: GotDotNet How To...

giovedì, settembre 14, 2006

Web Service Enhancements

Ecco una serie di link interessanti sui webservices e sulle alternative disponibili sul .NET Framework 1.1

P.S: se mai servisse un tool per lavorare con ste cose: MS WebDeveloper Express

C#: lavorare con le immagini

Ecco una serie di links che messi assieme possono aiutare a costruire un tool per gestire immagini e per elaborarle accedendo anche ai Tag EXIF.

giovedì, settembre 07, 2006

Una volta c'era NDoc, ma ora...

c'è SandCastle per costruire documentazione in ambiente .NET 2005:

venerdì, luglio 21, 2006

Guidance Explorer

Proprio stasera mi sono concesso un pò di tempo per dare un'occhiata al Guidance Explorer: dovrebbe essere una panacea contenente le linee guida (secondo standards Microsoft Patterns & Practices) per lo sviluppo architetturale delle proprie applicazioni.
Beh, francamente sono un pò deluso... in un progetto reale non lo vedo di facile uso... è vero che è innovativo rispetto a FxCop i cui suggerimenti sono a posteriori, ma non ne riesco a vedere la comodità.
Appena aperto, però, mi sono messo a leggere alcune guidance molto interessanti ed ho cominciato poi a perdermi nei meandri della documentazione rinfrescandomi le nozioni e imparando un paio di concetti nuovi. Ecco perchè secondo me è un ottimo learning tool ma l'obbiettivo di guidare la progettazione o lo sviluppo mi sembra ancora lontano. Il fatto di poter invece scrivere le proprie guidance direi che è molto importante e potrebbe eleggere questo tool ad essere usato all'interno di un ristretto Team per le proprie linee guida da seguire.
Voi che dite?

martedì, luglio 18, 2006

Disponibile la July CTP di WCF

Da poco è disponibile la CTP di luglio di .Net 3.0, che comprende WCF. In questo post Tom Archer spiega cosa è contenuto in questa CTP: se volete/dovete svilupparci sopra gli strumenti di integrazione per Visual Studio "Orcas" mancano da questa CTP. Quindi continuo a lavorare sulla June CTP, che per me era già abbastanza nuova e libera da bug bloccanti.

Stiamo lavorando a pieno regime su WCF (vorrei continuare a chiamarlo "Indigo" ma ci si deve abituare) ed i giorni di laboratorio con Clemens Vasters si stanno dimostrando sempre più utili. Rimane solo da sperare che Vista non ritardi troppo, tirandosi dietro .Net 3.0 a cui è legato.

giovedì, luglio 06, 2006

Mutex vs. GetProcessesByName

Vi siete mai accorti che se volete fare un'applicazione single-instance e decidete di usare GetProcessesByName potete imbattervi in qualche problemuccio (leggi: l'applicativo nun parte chiù)?!?
No?!? Bhè ve lo assicuro! Dato che se vi trovate qualche chiave "DisablePerformanceCounter" settata a 1 in giro per il vostro registry, oppure avete dei limiti sui diritti dell'utente e ACL varie...

Io preferisco i mutex e qui c'è un esempio che vi può essere utile:

Caricare Assembly a RunTime

Ho avuto modo di smazzularmi un pò con Assembly.Load e Assembly.LoadFrom...
...bhè ho avuto qualche problemino, ma alcuni interessanti links mi hanno aiutato a venirne fuori...
Ve li propongo, non si sa mai!

e ricordatevi di quell'area sconosciuta della CAG che si chiama Assembly Downlad Cache, molto utile in questo genere di RunTime Loading, che potete miracolosamente esplorare con "gacutil.exe /ldl" e ripulire con "gacutil.exe /cdl".

lunedì, giugno 26, 2006

WCF a Manchester con Clemens Vasters

Sto passando questi due giorni a Manchester, UK, per l'evento chiamato "WCF Deep Dive", in pratica si tratta di due giorni chiuso in un ufficio a discutere su come implementare Indigo (WCF) all'interno della tua applicazione con un membro del team di Indigo .
Questa mattina quando Craig McMurtry mi ha comunicato il nome della persona che mi avrebbe seguito ero sicuro di avere capito male. Quando il team member di Indigo è entrato in ufficio e si è presentato mi sono detto che probabilmente ci sono altre persone di origine tedesca con nome simile che lavorano nel team. Alla fine mi sono arreso e gli ho chiesto se era proprio il Clemens Vasters noto a tutti.
Ottenere dei consigli da una persona che fa parte del team di Indigo di così alto livello è qualcosa di unico che solo Microsoft sa fornire.
E poi oggi Clemens ha scritto in VB.Net visto che io lo preferisco...

martedì, aprile 04, 2006

Perchè si tende a procrastinare

Interessante spiegazione del comune comportamento per cui si tende a posticipare o rimandare un task...ad esempio: "Longhorn sarà basato su WinFS" poi "Longhorn, privo di WinFS, sarà rilasciato entro il primo quarto del 2006" ed infine "Windows Vista ha subito un lieve ritardo e sarà rilasciato i primi del 2007"...chissà quale sarà la prossima.

read more digg story


Powered by Qumana

giovedì, marzo 09, 2006

Origami unveiled

Oggi si inizia a parlare seriamente di Origami, il nuovo PC ultra mobile di Microsoft, annunciato ufficialmente oggi al CeBit di Hanover. Basato su Windows XP Tablet (quante volte avrei voluto comprarlo) ha moltissime funzionalità interessanti.
Ha connettività bluetooth e lettore di CF, combinandoli ti permette di fare delle foto (non con Origami, ovviamente), salvarle subito su pc on the road e geotaggarle con il gps...magnifico, lo comprerò solo per questo.
Con il wifi può diventare un telefono con Skype. Connesso alla rete casalinga puoi vedere le foto immagazzinate sul server di casa o su Flickr, puoi accedere al web dal divano (per chi non ha Media center) senza girare con un pesante e scomodo portatile.
Questi sono solo alcuni degli argomenti per cui Origami sarà il mio prossimo acquisto importante.

Il sito di presentazione di Origami
Il sito ufficiale di Origami, foto e descrizioni dettagliate.

Riporto queste notizie, ovviamente tramite Scooble.
Origami Revealed - First Take Analysis
Origami su Channel9

Non ho ancora capito quando sarà disponibile per il pubblico.

martedì, febbraio 28, 2006

Serializzazione e deserializzazione

Utile poter serializzare un oggetto e poterlo deserializzare in modo pseudo gratuito grazie al Framework.

Link sull'argomento:

lunedì, febbraio 13, 2006

How-To-Select an Object-Relational Mapping Tool for .NET

Tramite un post di Lorenzo Barbieri, voglio segnalare questa guida agli strumenti Object Relational Mapping per .Net.

Questi strumenti mi hanno sempre interessato e ciclicamente ne ho provati alcuni e mi sono interrogato sull'opportunità di utilizzarli nei miei prodotti.
Alcune volte mi ha bloccato il fatto che lo strumento "ideale" non supportava .Net 2.0 (ora supportato da molti di questi strumenti) o mancava di un editor visuale per comporre le query, come permette il designer dei dataset e typed tableadapters in ADO.Net.
La produttività è altrettanto importante, per me anche più importante, dell'astrarsi dall'uso diretto di una tecnologia di accesso ai dati.
Uno degli ultimi fattori che mi ha bloccato dal passare dalla valutazione all'uso reale è stato il supporto (o meglio l'assenza di supporto) alle transazioni distribuite, oggi facilmente utilizzabili con System.Transactions. Non so quali strumenti mancano di questa capacità.

venerdì, gennaio 20, 2006

Analisi comparativa di LINQ

A PDC si è parlato molto di LINQ, una tecnologia di accesso ai dati rivoluzionaria se riuscirà a vedere la luce, sorte che non è toccata ad altre tecnologie come ObjectSpaces da cui ha tratto, in parte, ispirazione.

In questo articolo su MSDN viene analizzata l'architettura di LINQ, confrontandola con le alternative presenti oggi, da ADO.Net a strumenti di generazione codice, ORM etc..

Bisognerebbe aggiungere che le alternative a LINQ sono già presenti da tempo, testate e maturate. Il mio parere, forse un po' superficiale, è che LINQ è superiore a qualsiasi alternativa esistente, anche se per favorire la produttività talvota scende a compromessi.

Fonte TheServerSide.Net

PS: Vorrei fare notare che questo è il 100mo post di questo blog!

giovedì, gennaio 19, 2006

Transazioni su Windows

Questa pagina raccoglie tutte le informazioni disponibili sui sistemi di gestione delle transazioni disponibili su piattaforma Windows, da COM+ a System.Transactions.
A più di un anno fa risale questo mio vecchio post su System.Transactions, una delle parti di .Net 2.0 che apprezzo di più.

fonte Mike Taulty

Disponibile la Beta 2 di WCF e WWF

Su MSDN è disponibile la CTP di Gennatio di WinFX che include WCF (noto come "Indigo") e WWF.
Di questi due componenti è disponibile la licenza GoLive, che quindi fa ben sperare nell'approssimarsi della versione definitiva (ovviamente tra diversi mesi).
Forse gli darò un'occhiata per vedere se posso iniziare ad usarli nei nostri Retail Web Services.

lunedì, gennaio 16, 2006

User group Veneto

Andrea Boschin ha ufficialmente annunciato la creazione di uno User group sul framework .Net per il Veneto.

Si tratta di una iniziativa molto importante ed utile per tutti coloro che operano sul territorio veneto e sono interessati alla diffusione del framework .Net. Sarà possibile adattare le attività del gruppo alle necessità e difficoltà della realtà veneta, sotto molti aspetti diversa da quella che gravita attorno a centri più importanti come Milano o Roma.

Io sono un attivo sostenitore di questa iniziativa e vi invito a partecipare alle attività dello User group.

giovedì, gennaio 12, 2006

ISO 8601, standard per le date

Per chi ha mai avuto o avrà l'esigenza di gestire le settimane dell'anno (da 1 a 52 o 53) e determinare l'appartenenza di una data X alla N settimana dell'anno, ecco alcune informazioni utili.

Lo standard ISO 8601 definisce le regole di rappresentazione delle date. Riguardo alle settimane, lo standard stabilisce che la prima settimana dell'anno (W01) è la settimana che contiene il primo giovedì dell'anno (4 giorni su 7, la maggioranza della settimana).

Questa istruzione in .Net restituisce il numero di settimana seguendo lo standard ISO 8601
System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x, Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)

Come sempre Wikipedia è la fonte.

lunedì, dicembre 19, 2005

SOA e Indigo

Questo è un interessante articolo da FTPOnline introduttivo su Windows Communication Foundation's service orientation (SO) e Indigo, interessante.

venerdì, dicembre 16, 2005

Refactoring

Per tutti i non ReSharper addicted, vi giro un post di G. Cannalire:
"Come è noto, con Visual Studio 2005, i soli programmatori C# disporranno di funzionalità di refactoring integrate nell'IDE.Qualcuno deve aver pensato bene che anche ai programmatori VB potesse far comodo uno strumento del genere ed ecco che, da qualche giorno, Microsoft annuncia la disponibilità di un tool esterno e gratuito, denominato Refactor! for Visual Basic 2005 (...is a free plug-in from Developer Express Inc., in partnership with Microsoft...).
Ma perchè aspettare VB 2005?Essendo in possesso della "
.NET Subscription" di DevExpress, ho subito scaricato Refactor! PRO for Visual Studio .NET 2003 (disponibile da pochi giorni)Risultato:...quanto è bello il refactoring con strumenti di questo genere!!!Pensando a quanto codice VB6 dovrò ancora manutenere, mi chiedo se esista qualcosa del genere anche per Visual Studio 6.0.Quasi quasi, faccio una ricerca sulla Rete :)"

mercoledì, novembre 30, 2005

Going solo

Questo interessante post descrive come può essere la vita di un consulente indipendente. Per chi pensa di iniziare un percorso lavorativo in solitario...

venerdì, novembre 18, 2005

Sempre su Windows Forms

Non avevo mai notato, fino al precedente post di Davide, questi utili link su Windows Forms e sul DataGrid Control.
Sono sicuramente un ottimo punto di partenza, un must read!

Articoli correlati:

Per informazioni di background:

giovedì, novembre 17, 2005

FAQ Windows Forms 2.0

Sono state pubblicate delle interessanti FAQ sui controlli di base di Windows Forms in .net 2.0.
Quella sul controllo DataGridView è particolarmente dettagliata.

Le trovate qui, sul sito WindowsForms.Net.

La DataGridView è molto potente, forse ha più potenzialità delle griglie di terze parti come ComponentOne (che uso) e Infragistics (che non conosco). Ho seguito una sessione su questo controllo a PDC 2005 e mi ha colpito.
Per ora non siamo riusciti ad usarla perchè, nonostante sia possibile creare controlli personalizzati da inserire nelle celle con semplicità e grande controllo, questi controlli non sono visibili se non quando si entra in modalità edit nella cella (quando ci si entra). Di conseguenza, se con il controllo personalizzato si voleva gestire in forma + elaborata la visualizzazione delle informazioni, oltre a gestirne la modifica, si manca l'obiettivo.
Guarderò meglio la FAQ ma temo di non trovare novità in questo senso.

mercoledì, novembre 09, 2005

AJAX: è un mondo asincrono

AJAX.NET Professional
Vi ricordate Remote scripting? Quella era porcheria...
AJAX mi sembra molto più ben studiato e strutturato.
Devo ancora iniziare ad usarlo ma penso che inizierò a studiarlo a breve.
Che ne pensate?

Ancora sui Delegates

Interessanti articoli in proposito:

martedì, novembre 08, 2005

DataGrid & Combos Master and Detail

In questo blog si spiega come ottenere semplicemente una serie di controlli legati in maodo master-detail. Semplice, ma efficace.
Inoltre in questo articolo da MSDN trovate utili informazioni su come utilizzare e personalizzare i DataGrid

CommandBuilder si o no?

In questo interessante articolo si aiuta a capire meglio come funzionano i CommandBuilder e quando sia il caso di usarli o meno. Buona lettura!

Tools per Visual Studio

In questo sito SharpToolbox trovate tutti gli strumenti free e non che possono aiutarvi ad aumentare la vostra produttività con l'IDE di Visual Studio. Take a look!

Logging in .NET

Se avete bisogno di una library di logging concettualmente simile a log4net, progettata con semplicità e flessibilità, ecco da sourceforge.net NLog. Provatela e andate sul sicuro!

giovedì, ottobre 27, 2005

CodeXchange per VS2003

In breve , CodeXchange è un add-in per Visual Studio.NET e un'applicazione standalone che fornisce accesso integrato e istantaneo ad un repository online di codice .NET proto da usare.
Gratuito e utile... codeXchange

VS2003 Start Page

Ecco come personalizzare la StartPage di VS2003 da MSDN

lunedì, agosto 08, 2005

MONO

Il progetto mono sviluppato da Novel è un framework open source alternativo a quello .net di microsoft, esso è ancora in via di sviluppo ma già ad un buon livello.

venerdì, giugno 17, 2005

Value type vs reference type

Buon articolo sull'argomento da Developer Fusion

martedì, giugno 14, 2005

Le stringhe in .Net 2.0

In questo interessante articolo su MSDN sono descritte le best practices per l'uso delle stringhe in .Net 2.0 che, sotto certi aspetti, sono cambiate rispetto a .Net 1.x
Viene affrontato il "problema Turco": non si tratta degli sforzi diplomatici degli Alleati per coinvolgere la Turchia nella seconda guerra mondiale o di quelli dell'Asse per mantenerla neutrale.
Si tratta di una mancanza presente nella 1.x che viene esemplificato con l'uso della Culture "tr-TR".

venerdì, giugno 10, 2005

Davide goes to PDC 2005

Parteciperò con gioia alla prossima Professional Developer Conference 2005, che si terrà a Los Angeles dal 13 al 16 Settembre 2005.

Nel mio blog ho creato una categoria apposita in cui vi terrà aggiornati sull'evento.

giovedì, maggio 26, 2005

Indigo workshop

In questi giorni ho partecipato ad un workshop sulla tecnologia Indigo presso la sede Microsoft di Monaco, riservato alle aziende che fanno parte di un programma di adozione anticipata di questa tecnologia.

Difficile dire in poche parole cosa Indigo è (come direbbe Yoda): è un programming model che riunisce ed amplia le tecnologie di comunicazione tra processi esistenti in ambiente Windows. Coordina e sfrutta al meglio quanto oggi è esistente con grande attenzione alla interoperabilità con ambienti diversi.

Detto così non sembrerebbe una grande cosa, invece si tratta dell'iniziativa più innovativa e di maggiore valore assoluto portata avanti da Microsoft negli ultimi anni.

Oggi esistono DCOM, COM+, MSMQ, .Net Remoting, ASMX, WSE, etc.... In base allo scenario che si affronta le scelte tecnologiche e di conseguenza l'object model da usare cambia. Ci siamo abituati ma è pur sempre una limitazione.
Indigo propone un object model unificato, molto ricco ma estremamente semplice, che distingue tra i compiti dello sviluppatore e le possibilità dell'amministratore, che permette di affrontare ogni scenario e ne abilita di nuovi.

Indigo può comunicare tramite code, può inviare comunicazioni fire and forget, può stabilire comunicazioni bidirezionali tra client e server anche tramite http: apre due canali distinti e riceve le comunicazioni server to client in modo trasparente...semplice ed efficace. Può usare diversi protocolli di comunicazione. Può fare molto altro...

Questo post su MSDN spiega sicuramente meglio cosa è Indigo. Indigo è uno dei pilastri di Longhorn ed il suo futuro è legato a quello di Indigo. Indigo, come Avalon, sarà disponibile anche per XP e 2003.

Nel prossimo futuro immagino ci saranno molte più applicazioni "rich-client" di quante ce ne siano in giro oggi.

Il framework .Net, dalla prima versione alla prossima 2.0, facilita enormemente la produzione di "rich-client", rendendone agevole anche la distribuzione (con ClickOnce per esempio). Molte applicazioni che oggi vengono realizzate in ASP.Net facendo salti mortali per aumentarne l'usabilità (senza grandi speranze) potrebbero essere realizzate in Windows forms. Ma questo non basta per invertire la tendenza, per spostare l'attenzione dal browser al desktop.

Longhorn non esisterebbe se la volontà non fosse quella di realizzare, almeno per Windows, un mondo di applicazioni ricche non basate su browser o sistemi che interoperano tra di loro, anche attraverso Internet, in modo sicuro ed affidabile, grazie ad Indigo.

Questo scenario mi piace e trovo uno spirito genuinamente innovativo in tecnologie come Indigo, ciò che spero è che (Microsoft) non si faccia troppo male per raggiungere questo obiettivo.

Solo il tempo dirà inoltre se con Indigo Microsoft manterrà la volontà di garantire l'interoperabilità verso gli standard (come WS-*) e le altre piattaforme o cercherà di fuggire in avanti offrendo nuove ed attraenti funzionalità a cui lo sviluppatore non saprà dire di no.

lunedì, maggio 16, 2005

Licenze Open Source

Avete poco chiara l'idea di licenza Open Source?
Questo link potrebbe aiutarvi a capire qualcosa:
http://www.dotnethell.it/articles/LicenzeOpenSource.aspx

martedì, maggio 10, 2005

Microsoft Coding4fun

Microsoft ha rilasciato un interessante sito per chi programma per divertimento e per hobby: ma ci sono robine davvero interessamti: Coding4fun !

mercoledì, marzo 02, 2005

.NET Conditio sine qua non

Direi che da ora in poi non si dovrebbe sviluppare nulla in ambiente .NET se non partendo dall'Enterprise Library, un insieme di cosiddetti Application Blocks che faciliteranno la comprensione e la realizzazione di Applicativi a livello Enterprise segiuendo le famigerate "best practices for .NET applications".

venerdì, febbraio 18, 2005

C# Boxing/Unboxing: non è uno sport!

Conversioni implicite di tipi valore in tipi object e viceversa: ecco come capire il meccanismo di boxing-unboxing:

C# Classi e Strutture: conosciamo davvero le differenze?

La situazione è cambiata da C++ a C#, basti pensare che in C# le structs sono value types, mentre le classi sono reference types... vediamo come capire e gestire questi tipi in questo interessante articolo.

.NET String.Format()

Se vi capiterà di dover formattare delle stringhe in .NET, qui trovate un simpatico ripostiglio di informazioni ed esempi pratici e non: String Formatting in C#

venerdì, gennaio 21, 2005

Embedding e utilizzo di Risorse in C#

Qui trovate due utili link che spiegano come "embeddare" risorse in un assembly e come utilizzarle da C#. Il tutto è semplicissimo grazie alle Reflection:

venerdì, gennaio 14, 2005

L'invidia del Mac

Questa sarà l'offerta dell'AppleStore fra qualche anno?
Mi sono sempre divertito a deridere i Mac ma in fondo (molto in fondo) mi piacerebbe avere un bel iMac in salotto che fa 4 cose e non sbaglia mai.....o forse ciò che mi attrae è la visione semplicistica del mondo visto con lenti Apple?
Se il mondo ti sembra troppo complesso, troppo veloce, con tecnologie che cambiano in continuazione, con una feroce competizione su una piattaforma più o meno aperta, è bello pensare che esiste un'alternativa: un ambiente costituito da meno di 10 prodotti hw (tiro a indovinare) e un s.o., prodotti che durano anni e non fanno niente di eccezionale...ma che però sono bellissimi!
Poi smetto di sognare e continuo a vivere nel mondo reale. Credo che Matrix farebbe usare Mac agli umani schiavizzati, altri ambienti forse dimostrano che Matrix non esiste. Oppure che è sadica.
Ho preso il link da questo post.

lunedì, gennaio 10, 2005

Personalizzare il file App.exe.config

Se avete bisogno di attaccarvi ad un file di configurazione diverso dal solito app.exe.config per esempio quando si crea un plugins per un applicazione host di terze parti o quando si fa il deploying dell'applicativo su com+ si potrebbe preferire l'utilizzo di un config file diverso da quello di default, ossia da: appname.exe.config. (dllhost.exe.config)
E' semplice fare un redirect dell'AppSettingsReader a un config file diverso scrivendo:
AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”,”c:\\pippo.config”);
Tutte le chiamate al System.ConfigurationSettings.AppSettings ora useranno il nuovo binding…
Nota: Si può fare il bind aun file di configurazione una sola volta nell'istanza dell'app domain, ossia il cambio di binding DEVE essere fatto una sola volta PRIMA di usare l'app.config per la prima volta.

DA LEGGERE:
  1. Unraveling the Mysteries of .NET 2.0 Configuration
  2. Decoding the Mysteries of .NET 2.0 Configuration
  3. Cracking the Mysteries of .NET 2.0 Configuration

AGGIORNAMENTO:

.NET in Samples: free e-Book

.NET in Samples presenta molte tecnologie sulla piattaforma .NET come: security, cryptography, WMI, networking, IO e altro. Ancora in versione 'draft', ma molto completo: a tra poco la versione definitiva che verterà anche sulle features di Whidbey (pdf o doc).

martedì, dicembre 21, 2004

PInvoke Add-on per VS2003

In questo link trovate un bell'add-on per semplificare le chiamate del codice "unmanaged" dal codice "managed" di .Net (altri riferimenti li trovate sul sito PInvoke.net)

giovedì, dicembre 02, 2004

Starbucks

Questo articolo su TheServerSide.Net analizza i processi di vendita dei coffe shop Starbucks, un esempio di quali vantaggi porta il disaccoppiamento e la comunicazione basata su messaggi.

http://www.theserverside.net/blogs/showblog.tss?id=TwoPhaseCommit

martedì, novembre 30, 2004

Intervista a Kevin Mitnick

Su Week.It un interessante intervista sul social engineering a Kevin Mitnick, l'hacker più famoso .. dopo David Lightman aka Matthew Broderick in War Games.

http://www.weekit.it/weekit/unico/art006004040286.jsp


mercoledì, novembre 10, 2004

Shiftare bit in VB

Ecco degli esempi di come shiftare bit in VB, dato che in questo linguaggio non ci sono operatori nativi che permettano di farlo...
  1. http://www.xbeat.net/vbspeed/c_ShiftRight.htm
  2. http://www.xbeat.net/vbspeed/

martedì, ottobre 26, 2004

Guida Pratica ad ADO.NET

Questo articolo è, IMHO, la miglior guida pratica da me finora trovata sull'utilizzo di alcuni oggetti di ADO.NET, quali i DataTables, DataSets e la DataGrid. Dateci un'occhiatina, ne vale la pena.
Su quest'altro articolo, trovate invece una rapida e semplice introduzione all'utilizzo di ADO.NET in modalità connessa al DBMS.

Vedi anche questa bella intro ad ADO: http://www.aspitalia.com/articoli/aspplus/adodotnet.aspx

Sappiamo tutti cos'è la GAC?

Siamo sicuri di avere le idee chiare su cosa sia, a cosa serva e come funzioni la Global Assembly Cache? Bhè questi links potrebbero rivelarsi un valido aiuto:

giovedì, ottobre 21, 2004

Code Injecting

Microsoft Research ha rilasciato gratuitamente le librerie per il C.I. nella versione 1.5 di Microsoft Detours: usabile su architetture X86, permette di reindirizzare chiamate a funzioni di eseguibili Win32, verso funzioni target costruite a runtime dall'utilizzatore.
Basate in parte sull'utilizzo delle DebugAPI, sono utili nelle operazioni di Code injecting e di API Hooking.
In pratica la chiamata a funzione di un processo qualsiasi viene dirottata verso le funzioni create dal programmatore per far eseguire al processo stesso del codice esterno.
MS Detour sostituisce le prime istruzioni della funzione target con un jump incondizionato alla funzione deviazione creata dall'utente.
Le istruzioni della funzione target vengono conservate in una terza funzione detta funzione trampolino.
La funzione trampolino conterrà le istruzioni rimosse dal processo originario e un richiamo al resto della funzione target.
In questo modo si "inietta" un codice arbitrario in un processo; il codice viene preparato direttamente in memoria usando un set di funzioni, le quali realizzano una sorta di micro-assembler e gestiscono la rilocazione.
Chiamando la giusta sequenza di funzioni si riesce dunque a creare runtime un programma in memoria, praticamente come scrivendolo direttamente in assembler.
Questo rende estremamente preciso il filtraggio.
Ad esempio le procedure in una DLL possono essere deviate durante l'esecuzione di una specifica applicazione, mentre le procedure originali non verranno deviate nell'esecuzione contemporanea di un processo parallelo.
Al contrario del re-linking delle DLL e delle redirezioni statiche, l'efficienza del funzionamento delle tecniche di filtraggio usate in questi strumenti è garantita a prescindere del metodo utilizzato da un'applicazione o da un system code per localizzare la funzione bersaglio.
Oltre alle funzionalità base di filtraggio Microsoft Detour include funzioni per modificare la tabella di importazione DLL di qualsiasi eseguibile, per attaccare segmenti dati arbitrari a eseguibili esistenti, per iniettare una DLL sia in processi nuovi che pre-esistenti.
Una volta iniettate all'interno di un processo, le DLL possono deviare ogni funzione Win32, sia presente nell'applicazione che nelle librerie di sistema.
Microsoft Detour è liberamente scaricabile anche se è richiesta una licenza per un utilizzo commerciale.
(tratto da Programmazione.it)

lunedì, ottobre 04, 2004

Comega, forse un giorno coderemo con lui...

Comega AKA Xen AKA X#, è un nuovo linguaggio di programmazione generato da Microsoft Research e sviluppato in collaborazionecon l'Università di Cambridge.
C'è dentro tutto il C# 2.0 (quello di Whidbey, che deve ancora arrivare) + una bel pò di features per manipolare gerarchie XML e record (cosiddetti "tuple") di database, in Comega troviamo integrato anche Poliphonic C# (asynchronous concurrency abstractions).
Programmeremo indifferentemente, come affermano i suoi creatori ,con "circles, triangles, and rectangles."
Il cerchio reppresenta l'OOP (object-oriented programming).
Il triangolo reppresenta i dati strutturati gerarchicamente, ossia, XML.
Il rettangolo reppresenta i dati relazionali, o i dati di una tabella di Database.
Il tutto, dicono, si integri perfino con Visual Studio 2003.

I buchi più pericolosi?

Sicuramente quelli che non dipendono da noi. Un ottimo esempio sono quelli introdotti dal .NET framework 1.1 SP1.
Uno di questi, cioè quello che interessa il metodo Select dell'oggetto DataTable, l'ho segnalato tra i primi a mamma MS, nell'attesa di un pò di stucco da parte loro (un pò di auto-celebrazione).

domenica, ottobre 03, 2004

23 Esempi C# da Microsoft

Ecco una serie di esempi (ben 23) di codice C# utilissimi per capire alcuni dei paradigmi di programmazione del Framework .NET di Microsoft. Non ne ho provato ancora nessuno, ma solo perchè non ne ho avuto tempo, aspetto commenti in proposito.

venerdì, settembre 24, 2004

Dispose, questo sconosciuto...

Ecco un interessante post sul come, quando e soprattutto perchè usare il metodo Dispose deglio oggetti .Net.

giovedì, settembre 23, 2004

SharpWebMail: la mail gestita da ASP.NET

SharpWebMail E' un ASP.NET webmail application scritta in C#. Usa un server POP3 o IMAP come mailstore e spedisce mails via SMTP. Si possono comporre messaggi HTML, ricercare nella propria inbox, leggere messaggi MIME complessi e altro ancora.
Compatibile con .NET e Mono.
P.S.: una chicca è che viene utilizzato l'HTML editor FCKeditor per comporre le mails.

Un'introduzione alla Reflection

Un articolo carino sull'introduzione a System.Reflection.
Namespace forse non proprio utilizzato proprio ogni giorno, ma molto utile, davvero...

Qui trovate del codice di esempio che utilizza Reflection molto carino: estrazione di WebMethod per WS da una dll normalissima via Reflection: http://www.codeproject.com/dotnet/ExtractMethodInfo.asp

SQLDoc: documentare DB SQL Server/MSDE

Una piccola utility a riga di comando utile per documentare il vostro DB (MS!).
Disponibile anche il codice sorgente.
Serve anche per capire XSLT a chi, come me non lo ha mai utilizzato...

martedì, settembre 21, 2004

Chi è senza peccato scagli la prima pietra...

Sono abbastanza restio a criticare o deridere gli errori di altri sviluppatori (a meno che non li conosca e li consideri dei "pari") visto che tutti commettiamo degli errori e, come diceva il mio Maestro, "un giorno, fra qualche anno, guarderai del codice scritto oggi e sicuramente ti chiederai come hai potuto scrivere qualcosa di talmente assurdo e stupido".

Però quando si tratta di consulenti strapagati di una azienda che incontra sempre le mie simpatie...

The Daily WTF è un blog che raccoglie le perle di saggezza che il nostro gruppo di esseri umani genera ogni giorno.

mercoledì, settembre 15, 2004

SOAP over UDP

ciao Amici,
guardate qua: finalmente le specifiche SOAP per comunicare via UDP. Si apre un mondo interessante!
SOAP over UDP
Baci

martedì, settembre 14, 2004

La perla nascosta di ADO.Net 2.0

Questo è il mio primo post nel blog del mio amico Marco...che onore!

In ADO.Net 2.0 ci sono numerosi miglioramenti, ma l'innovazione meno pubblicizzata è secondo me la più importante.

C'è un nuovo namespace chiamato System.Transactions che, per semplificare alla grande, porta all'interno del Framework la gestione delle transazioni distribuite via DTC.
Ad oggi da .Net si usa DTC direttamente (non oso pensarci) oppure attraverso COM+, fondamenta delle applicazioni distribuite, che nel framework occupa il namespace System.EnterpriseServices.

Chi ha usato COM+ via System.EnterpriseServices sa che non è una bella esperienza: tutte le assemblies devono avere strong name (e non è un problema) e si è costretti a inserirle nella GAC; se non ci sono altri buoni motivi che spingono a usare la GAC si perdono per nulla i vantaggi del deployment semplificato di .Net. Non è finita, c'è anche il tool regsvcs che registra l'assembly come package in COM+.

Tutte queste configurazioni ed operazioni aumentano i tempi di sviluppo e le probabilità di errore... Inoltre è un peccato rinunciare alle potenzialità di .Net per usare alcune delle capacità di COM+.

Nel framework 2.0 la gestione delle transazioni (distribuite via DTC o leggere "Lighweight") è totalmente managed, non esiste nessuna classe da ereditare, nessuna configurazione particolare, nessun tool da utilizzare.....un enorme passo avanti.

Questi link aiutano a capire meglio le potenzialità di System.Transactions...vedrete quanto poco serve per gestire le transazioni.
http://weblogs.asp.net/angelsb/archive/2004/07/06/174215.aspx
http://weblogs.asp.net/angelsb/archive/2004/07/07/175586.aspx
http://msmvps.com/williamryan/archive/2004/07/08/9759.aspx
http://weblogs.asp.net/angelsb/archive/2004/07/15/184297.aspx

I 10 Tools che tutti dovrebbero avere

Su MSDN Magazine è uscito un interessante articolo sui "Ten Must-Have Tools Every Developer Should Download Now". Visto che alcuni di questi tools li avevano segnalati su questo blog alcuni dei contributors, vuol dire che non siamo tanto scarsi nel consigliarli...
Mi piacerebbe che nei commenti di questo post segnalaste anche voi la vostra Top 10 personale (ovviamente so già che nella mia comparirà SourceEdit e in quella di Maxmost Ultraedit, ma c'est la vie...)

venerdì, settembre 10, 2004

ADO.NET e il metodo DeriveParameters

Esiste un metodo particolare che ci permette di scoprire a Runtime tutti i parametri di una determinata Stored Procedures. Il metodo è DeriveParameters.
Interessante anche l'utility SP/Invoke che trovate disponibile anche con i sorgenti presso ObjectNation, utile per wrappare e semplificare le chiamate alle Stored Procedures da C#, VB.Net e JScript.Net.


mercoledì, settembre 08, 2004

XP EnableVisualStyles

Basta aggiungere:
Application.EnableVisualStyles()
Application.DoEvents()
come consigliato qui.

Vedi anche:

lunedì, settembre 06, 2004

OpenFTP.NET

OpenFTP.net è una client library FTP open scritta in C# per .Net. Offre upload in modalità sia attiva che passiva e un infrastruttura base per tutto il resto...

OpenSMTP, OpenIMAP & OpenPOP for .NET

OpenSmtp.net è un componente open source SMTP scritto in C#. Non si basa sulle classi System.Web.Mail del .Net Framework e permette di usare SMTP servers diversi dal MS SMTP. ha anche un web service che permette di spedire email via HTTP.

OpenImap.net è una Class library/component scritta in C# per comunicare con IMAP Servers. Compila sia su Mono che sul .NET framework.

OpenPop3.net è una .NET Class library in C# per comunicare POP3 Servers (recuperare/cancellare messaggi e attachments). Suppora il decoding di files in Base64/QP encoding, inclusi attachemnts, formato MS-TNEF, e file MS mht. Compilea su Mono, DotGNU e sul .NET framework

giovedì, settembre 02, 2004

Segnalazione URL: Everest HE

Da vecchio utilizzatore del validissimo AIDA32, ora mi sono allineato allo stato dell'arte e uso il completissimo Everest HE: vi fornisce una completissima analisi del vostro PC sia HD che SW, non penso che in giro si trovi di meglio... provare per credere.

mercoledì, settembre 01, 2004

.NET Web.Mail

Penso che questo sia il più esauriente sito sulle tematiche riguardanti il namespace Web.Mail. Inizia con un introduzione e con degli esempi di programmazione. Termina con risoluzioni di difficili problemi e altre risorse.

SQLOps: Helper class per i DataSet

In questo blog trovate infos e brandelli di codice su SQLOps: una classe helper sull'utilizzo dei DataSet in maniera "smart" estendendo le features che offrono nativamente, tipo GROUP BY, DISTINCT , JOIN perfezionate, ecc...
Utile per trarre qualche idea...

lunedì, agosto 30, 2004

Sysinternals - Process Explorer

Ecco un'ottima alternativa al Task Manager :Sysinternals Freeware - Process Explorer. La cosa bella? Oltre a tante altre:
a) per gli sviluppatori .NET c'è un tab che mostra tutti i contatori di performance!
b) per chi sviluppa in multithread c'è la possibilità di terminare il singolo thread!