Pubblici i sorgenti del .NET framework
La notizia di una futura disponibilità dei sorgenti di alcune librerie del framework .NET 3.5 era già stata data da Scott Guthrie lo scorso Ottobre ma è notizia di ieri della effettiva disponilità per il download.
Lo scopo della pubblicazione del codice sorgente è di supporto alle attività di debugging e troubleshooting delle applicazioni oltre ovviamente ad una maggiore comprensione degli internals del framework stesso. Tutto il codice è rilasciato sotto la Microsoft Reference License (MS-RL).
Come fare? Il processo è molto semplice...solo in 2 passi:
1) In Visual Studio 2008 aprire Strumenti->Opzioni e alla voce Debug-Generale deselezionate la voce Attiva Just my Code (solo gestito) e selezionate "Attiva il supporto del server di orgine (inglese : Enable source server support).
2) Infine in Debug->Simboli inserite il seguente indirizzo : https://source.msdn.microsoft.com/symbols (<= Attenzioni in alcuni post che ho letto in giro ho trovato indirizzi non corretti... questo è quello corretto!!!) e l'indirizzo di cache locale. Assicurarsi che la voce "Cerca nei percorsi indicati solo quando i simboli sono caricati manualmente" sia fleggata. ATTENZIONE ai problemi di performace (soprattutto le prime volte)...
A questo punto in fase di debug potrete navigare all'interno del codice sorgente del framework semplicemente con F11.
Quali librerie ? Ecco la lista degli assembly disponibili:
Mscorlib.DLL
.NET Base Class Libraries (System.*)
ADO.NET
ASP.NET
XML
System.Security
Windows Forms
WPF (Windows Presentation Foundation)
Microsoft.VisualBasic.DLL
IN futuro saranno disponibili anche WCF (Windows Communication Foundation) , WF (Workflow Foundation) e LINQ.
Per quanto riguarda la sicurezza sicuramente consiglio un giretto nei seguenti namespace:
System.Security dove troverete gli internals della famigerata :-) CAS (Code Access Security) e della Role-Based Security basata su Windows account e custom identity. Inoltre, all'interno del namespace System.Security.Principal namespace troverete la struttura del principal object che rappresenta il security context sotto cui gira il vostro codice.
Il namcespace System.Security.Cryptography.Pkcs (PKCS = Public Key Cryptography Standards) contiene principalmente i metodi per la firma digitale e relativa verifica (con encoding ASN.1), scambio di chiavi (envelop), richieste di certificati digitali le funzioni di cifratura a chiave asimmetriche più alcune funzioni di utilità.
Altro importante namespace è quello inerente alla gestione ed utilizzo dei certificati digitali X509 v3: System.Security.Cryptography.X509Certificates . Questo namespace contiene una serie di classi e metodi per un completo accesso a tutti gli aspetti degli store dei certificati e relative informazioni. Dalla versione 2.0 del framework non è più necessario usare le CryptoAPI, CAPICOM o WSE per avere un controllo completo :-)
Infine il namespace System.Security.Cryptography.Xml permette di controllare tutti gli aspetti della creazione di firme digitali conformi alla specifica XMLDSIG (Vedi mio post precedente della serie "specifiche in pillole") e di XML encryption conforme alla specifica XMLDSIG (Vedi mio post precedente della serie "specifiche in pillole").
Buon debugging e studio ;-)
--Mario