posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Windows Web Services API in codice nativo

È il preparatissimo Nikola Dudar a presentare questa sessione. Nikola prima era parte del team di Visual C++ e tempo fa era venuto a Milano per il Visual C++ tour, poi abbiamo fatto un intervento insieme presso un ISV e successivamente al MVP Summit.

IMG_0754  IMG_0757IMG_0758

Questa nuova libreria è un nuovo set di Win32 API con nessuna dipendenza dal Framework.NET che nascono con Windows 7. La bella notizia è che sarà disponibile come package per tutti i sistemi operativi Windows a partire da XP.

Gli standard implementati sono quelli WS-* (SOAP) che permettono l'interoperabilità con WCF, ASMX e non-Microsoft stacks.

IMG_0760 

Si parte dalla demo che vede la realizzazione di un client nativo che consuma un servizio WCF. Una utility produce un wrapper in linguaggio C che permette di dimenticare totalmente tutta l'infrastruttura e il messaggio soap. In sostanza ci sono wrapper per ciascuno dei tre pilastri di un web service: ABC (Address, Binding, Contract).

Viene poi mostrato come prendere totale controllo delle opzioni del messaggio, le modalità di trasporto, gli header in caso di trasporto http, e le opzioni per usufruire di WS-Security.

Non tutte le opzioni/protocolli di WCF sono supportati in questo momento ma considerato che WCF è in grado di esporre più endpoint contemporaneamente, non lo vedo come grosso problema.

Per quello che riguarda il messaggio XML, c'è pieno controllo al contenuto del messaggio, quindi encoding Text, Binary e MTOM. Il messaggio è fruibile con tre opzioni: XmlBuffer, XmlReader, XmlWriter.

Nella serializzazione vengono mappato lo schema Xml a dei tipi "C".

La ciliegina sulla torta è uno speciale heap che viene utilizzato per evitare le noiose allocazioni in stile C (chiedere all'API la dimensione da allocare, richiamarla con l'allocazione). Questo heap invece semplifica enormemente il task.

Ritengo questa soluzione perfetta per moltissimi scenari in modo da evitare la dipendenza da COM o Assembly. Il livello di disaccoppiamento offerto da un servizio calza alla perfezione in uno scenario di interoperabilità con il codice nativo in quanto permette una evoluzione indipendente delle versioni e soprattutto nessuna dipendenza dalla versione del compilatore C++.

IMG_0762

Print | posted on giovedì 30 ottobre 2008 19:39 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET