È Kate Gregory la speaker per l'interoperability in C++/CLI con Visual C++ 2008.
Lo scenario di interoperabilità è indubbiamente quello più appetibile per C++. Scrivere una porzione in codice nativo e l'interfaccia utente con C# ed infine mettere le due cose assieme. Sappiamo bene che PInvoke e COM interop non sono semp;re una strada semplice o percorribile.
C++/CLI è certamente un ottima soluzione e anche molto performante. La novità che fa partire la sessione è la tanto attesa libreria STL/CLR che ha esattamente la stessa sintassi della STL (Standard Template Library). Solo cambiando include e namespace permette di cambiare il codice dalle classiche STL alla versione STL/CLR, il che rende veramente semplice migrare il codice verso quello managed.
Non potendo usare i template da C#, vengono presentate tutta una serie di facilities che permettono di ottenere delle liste di generics in luogo di quelle STL/CLR e viceversa.
Da sottolineare che le performance di STL/CLR sono migliori rispetto alle collection generiche del framework.
Si passa poi alla seconda parte della presentazione dove si parla di marshal_as che prevede di usare anche una classe di contesto per disallocare in modo più efficiente. Un esempio vale più di qualsiasi parola:
TO to = marshal_as<TO>(from)
In pratica il marshaling diventa realmente molto semplice, ma soprattutto estendibile perché è possibile aggiungere versioni di conversioni per i tipi che più vogliamo. Viene mostrato l'esempio di conversione da un RECT di Win32 con quello di System::Drawing.
Avevo già usato nelle scorse settimane la libreria di marshaling per preparare un esempio di WPC e devo dire che è realmente semplice da usare. Mi preme ricordare che, anche se non citate in sessione, le conversioni masrshal_as sono disponibili per tutti i tipi principali delle Win32 e quindi il punto di partenza è già buono. Ale Contenti, PM Lead Italiano delle librerie di VC++ e presente alla sessione, mi ha detto di richiedere sul http://blogs.msdn.com/vcblog/ le versioni di marshal_as che mancano. Le più richieste saranno pubblicate dal team.
Riprendo dalle parole di Michael Howard di ieri: Vista è stato compilato con una pre-release di VC++2008. Come testing direi che è decisamente esausitvo e da quello che si è visto i vantaggi non sono solo in materia di sicurezza.