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).

image

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)...

image

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