martedì, agosto 21, 2007
Abstract Vs. Interface
Quando usare le prime o le seconde?
Forse questo ci aiuterà:
lunedì, giugno 18, 2007
Learning VB.Net
Raccolgo in questo post alcune risorse online utili per chi desidera iniziare il processo di apprendimento di Visual Basic .Net
Beginner Developer Learning Center, una guida introduttiva a .Net su MSDN
Introduction to VB.NET Object-Oriented Features
Learn VB.Net, interessante raccolta di lezioni su Vb.Net
VB.Net School
Per ora queste possono bastare.
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:
- WMI da MSDN
- Un esempio di utilizzo: "My Explorer" e un articolo dello stesso autore
- Un WMI provider in C#
- Tutto su WMI: parte I e parte II
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
SQL: @@IDENTITY, forse abusata
Ebbene si: esistono SCOPE_IDENTITY() e IDENT_CURRENT('table_name').
Valutate bene quando usarle...
Alcuni link in proposito:
- http://www.dotnettechnologies.com/dotnettechnologies/PermaLink,guid,eea0c32f-1b4f-45d6-acb4-4dde56f38ffc.aspx
- http://www.dotnetjunkies.com/Article/86F0988E-FED4-414F-BA2E-D01D953C11BE.dcik
- http://www.samspublishing.com/articles/article.asp?p=31283&seqNum=5&rl=1
Grazie Maxmost
mercoledì, febbraio 14, 2007
SQL: Table variables vs. Temporary table
T-SQL: Cursori in output
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
In generale sulle Regular Expressions:
L'architetto del software
Simpatico.
NHibernate: Hibernate per .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.