Eric Mittelette – Microsoft France Eric Vernié – Microsoft France

Slides:



Advertisements
Présentations similaires
« Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int.
Advertisements

PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Développement dapplications sur mobiles.NET et J2ME, C++ et Symbian WIPLIER Thomas – M2IRT2009 – 15/02/2007.
Erratum C Surcharge For(int x=0; … 2.
Langage C# et Plate-forme .NET
Cours n° 6 Standard Template Library I.
« Les Mercredis du développement » Les Starter Kits Level 100 Présenté par Pierre Lagarde Relation technique développeur
De Windows Forms à Windows Presentation Foundation
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
1 HPC et Windows 2003 CCS pour les développeurs Visual Studio 2005.
ASP.NET v2 + Ajax = Atlas Pierre Lagarde DevDays 2006 Equipé aujourdhui, prêt pour demain !
HPC et Windows 2003 CCS pour les développeurs
« Les Mercredis du développement » Nouveau format de fichier Template Solution Présenté par Pierre Lagarde Relation Développeurs.
C# 2.0, un an après Mitsuru FURUTA
Tout commence par un modeste éditeur de texte issue dune PME à Redmond, WA-USA.
Automatisation de Tâches Scenarios
Rencontres Windows Forms
Windows Sharepoint Services v3 (5/6) Les nouveautés Stéphane Crozatier Relation Technique Editeurs de Logiciels DPE - Microsoft France
Introduction au langage C++
C++ 5ème cours Patrick Reuter maître de conférences
Appels de fonctions natives sous C#
L’architecture .net et ASP.net
Diatelic - An Intelligent TeleSurveillance System for Peritoneal Dialysis Laurent Romary Minit Gupta Loria Labs, Nancy.
Programmer en JAVA par Tama
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Leçon 3 : Héritage IUP 2 Génie Informatique
.N ET - P RÉSENTATION Corentin RIOU 1. I NTERVENANTS Corentin RIOU – MMA Promo 2006 – Chef de projet technique – Digitas France 2.
Mitsuru FURUTA Relations techniques développeurs Microsoft France
TM.
Structures de données et algorithmes – TP2
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Defence Research and Development Canada Recherche et développement pour la défense Canada Canada 11-1.
Les pointeurs 1. Notion de pointeurs cest Travailler avec les pointeurs cest Se rapprocher du matériel Nécessite de bien connaitre le fonctionnement de.
Gregory Renard CTO – R&I Manager Wygwam. Live Mesh Context, Définition, installation, concept et usages ? Live Mesh Beta Les Usages Live Mesh Beta Synchronisation,
The EMPREINTE Project Juillet - octobre 2004
TortoiseSVN N°. Subversion : pour quoi faire ? Avoir un espace de stockage commun – Tous les étudiants du SIGLIS ont un espace svn commun Partager vos.
Programmation par Objets et Java
C#. Sommaire I. Descriptions du langage 1. Son origine 2. Plate-forme d'exécution II. Capacités du langage 1. Différences avec le C / C++ 2. Java Vs C#
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Microsoft .NET.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
.NET Framework, C# et.NET Remoting Sébastien Boulay Master GI – option SRR 25 novembre 2004.
Marketing électronique Cours 5 La personnalisation.
Le Baromètre Zone Cours : un environnement pour la micro-évaluation de ressources pédagogiques* Jacques Raynauld Olivier Gerbé HEC Montréal, MATI Montréal.
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
Types de données abstrait et mécanismes d'encapsulation
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
« Les Mercredis du développement » Les WebParts Présenté par Pierre Lagarde Relation Développeurs Microsoft France Level 300.
NON, LE C++ N’EST PAS MORT !!!!! Visual Studio 2005 et le C++ Introduction : Pourquoi le C++/CLI ? C++/CLI : Eléments Syntaxiques C++/CLI : Garbage collection.
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
Première CTP le 4 décembre Nouvelle CTP depuis le 1 er février RTM milieu de cette année.
AOP dans .Net avec PostSharp
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
22 Nouveautés de Visual Basic 2010 et les trucs et astuces de son IDE Sébastien Warin R&I Technical Lead Wygwam Microsoft MSP & MCPD
.NET Plateforme, framework, produits Bernard Fedotoff (Pdg) Stéphane Vancauwenberghe (Consultant)
Introduction à la plateforme .NET
Dyalog.Net Peter Donnelly Managing Director Dyadic Systems Toronto 30/10/2002.
ASP.NET AJAX Control Toolkit
Introduction à la programmation objet avec java
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
 Répondre aux problèmes principaux de VS 2005  Augmenter toujours la productivité côté désign  Un vrai outil de développement pour le développement.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
Transcription de la présentation:

Eric Mittelette – Microsoft France Eric Vernié – Microsoft France

Introduction : Pourquoi le C++/CLI ? C++/CLI : Eléments Syntaxiques C++/CLI : Garbage collection et destruction déterministe ? C++/CLI : Code hybride ou comment mixer les codes natifs et managés Conclusion : C++/CLI « first class langage for.NET » Bonus : restez jusquà la fin

Une brève histoire du C++ On arrive du B en passant par le C On arrive a du C avec classe (79) C++ avec Héritage et virtuel (88) Template « Generic Programming » (91) ANSI-C++ et ISO-C++ (96-98) « Dynamic Component Programming » C++/CLI (2005)

1998 Visual C ATL3/MFC42 (6.0) 2002 Visual Studio.NET Visual C Unified Visual Studio IDE & Debugger MFC7/ATL7, attributed programming, ATL Server Whole Program Optimization C++ Managed Extensions Fixed STL concurrency and DLL issues /GS Runtime Security Check 2003 Visual Studio 2003 Visual C ISO Standard C++ Conformance /Arch:SSE/SSE2 – floating point code generation Windows Forms Designer for Managed Extensions 2005 Visual Studio 2005 Visual C C++/CLI Language Integrated 64-bit Compiler and Tools Profile Guided Optimization Safe Extension for CRT Project Property Manager, Source Navigation/Browsing MFC/Windows Forms Integration

Ré utiliser les compétences « fines/pointues » des développeurs C++ On ne va pas ré écrire des millions de lignes de code pour une nouvelle plateforme :.NET « We love your C++ Code » Syntaxe déposée à lECMA et ISO Travail initié en 2002 avec les MC++ (Managed Extension for C++) Intégration de C++/CLI avec ISO-C++ « LE » language de linteropérabilité Utiliser le Framework.NET de façon naturelle en C++

Une option de compilation « primordiale » /CLR : émettre du code MSIL Support de la syntaxe CLI « activée » Option pour le projet ou pour un fichier individuellement Différentes sous option à /CLR /CLR : Pure /CLR : Safe

Notion d adjective class Types C++ et CLR cohérents Attention : pas d héritage multiple de « ref class » Attention : implémentation multiple d « interface class » ref class A abstract { };// abstract ref class B sealed : A { };// no further derivation ref class C : B { };// error, B is sealed class N { /*…*/ };// native ref class R { /*…*/ };// CLR reference type value class V { /*…*/ };// CLR value type interface class I { /*…*/ };// CLR interface type enum class E { /*…*/ };// CLR enumeration type

Pointers et Handles Sur le tas natif Comme dhab pointeurs (*) stables indépendant du GC Comme dhab, attention aux fuites mémoire si pas de delete Comme dhab, attention aux fuites mémoire si pas de delete Sur le tas managé Handles (^) sont des références d objets Pas dopérations arithmétiques dessus (cf. interior_ptr) delete devient optionnel Sur la pile (vraiment ?) Permet des destructions déterministes TNatif* t1 = new TNatif; TNet^ t2 = gcnew TNet; T t3;

* est à ^ ce que & est à %

Propriété ref class R { int mySize; public: property int Size { int get() { return mySize; } void set(int val) { mySize = val; } } }; R r; r.Size = 42; // use like a field ref class R { int mySize; public: property int Size { int get() { return mySize; } void set(int val) { mySize = val; } } }; R r; r.Size = 42; // use like a field ref class R { public: property int Size; // compiler-generated }; // get, set, and backing store Notation simplifiée

Delegate et Event delegate void D(int); ref class R { public: event D^ e; // trivial event; // compiler-generated members void f() { e(42); }// invoke it }; R^ r = gcnew R(); r->e += gcnew D(this, &SomeMethod); r->e += gcnew D(SomeFreeFunction); r->f(); delegate void D(int); ref class R { public: event D^ e; // trivial event; // compiler-generated members void f() { e(42); }// invoke it }; R^ r = gcnew R(); r->e += gcnew D(this, &SomeMethod); r->e += gcnew D(SomeFreeFunction); r->f(); Vous pouvez écrire, ajouter, enlever et déclencher vous même les events.

Generic Syntaxe des Generics ~comme celle des templates Admettent des contraintes et lhéritage Instancié à lexécution Template Disponible pour le C++/CLI Généré au moment de la compilation Les generics et les templates peuvent se combiner… Attention casse tête chinois et rigueur demandée ! Attention casse tête chinois et rigueur demandée ! generic where T : IFoo ref class GR { /* … */ };

CLR arrays CLR arrays Notation [] non supportée en C++/CLI Notation [] non supportée en C++/CLI array ^ a1 = gcnew array (10); array ^ a2 = gcnew array { 1, 2, 3 }; array ^ a3 = { 1, 2, 3 }; array ^ a4 = gcnew array (10) { 1, 2 }; F(gcnew array { button1, button2 }); array a5 = gcnew array (10, 20); array a6 = { { 1, 2, 3 }, { 4, 5, 6 } };

Chaque objet.Net est sous contrôle du « Garbage Collector » La mécanique du « garbage collector » est un pré requis essentiel à tous développeurs C++/CLI Génération, Collection, Compactage, Pattern IDispose et Finalisation Heap Managed > 3 private heap + 1 private heap pour les « Large Object » Elément syntaxique ~MaClasse et !MaClasse

Une classe qui implémente un Finalizer doit avoir un destructeur Une classe qui implémente un Finalizer doit avoir un destructeur Evitons la duplication de code : appelons le finalizer dans le destructeur Evitons la duplication de code : appelons le finalizer dans le destructeur ref class R { /* MORE CODE */ !R() { /* Clean-up value type resources */ } ~R() { /* Do early clean-up, clean-up ref classes */ this->!R(); } };

C++/CLI : le roi de linteropérabilité COM Interop PInvoke Pour tous les languages.NET C++ Interop It Just Work ! Tous les scénarii possible…et imaginable Hosting de la CLR Contrôle fin de lexécution du code.NET Par exemple dans votre code MFC…

Ré utiliser votre existant Migration code VC6 Breaking changes (conformité à la norme ISO98) Un seul environnement de développement (VS2005) Compilateur 64 bits, Optimisation du code (WPO PGO), support de lOpenMP …. Et bien plus encore Utilisation des.lib ou dll depuis VS2005 Et inversement ! Gestion du code mixte Passer des données, des pointeurs de fonctions, faire des appels « croisés » entre le monde managé et le monde natif

Scénarii de code hybride Apps VC6 utilisent vos.lib VS2005 Apps VS2005 utilise vos.lib VC6 Code Hybride (mixed code) Utiliser une classe native dans du code CLI Utiliser une classe CLI dans du code natif Utiliser de lassembleur dans du code CLI Utiliser la BCL dans du code natif Utiliser les « Windows Forms » dans les MFC.NETmodule et.Obj + cl.exe ! Hosting de la CLR.

La boite à outils du développeur hybride vcclr.h : gcroot<>, auto_gcroot<> AfxWindowsForms.h ( MAKE_DELEGATE … /CLR et ses déclinaisons System::Runtime::Interopservices pin_ptr<>, interior_ptr<> tblimp, tlbexp dllimport attributes Les APIs de hosting #pragma unmanaged TBC…

Productivité du développeur accru par la BCL Confort du développeur via lIDE VS2005 Performance au rendez vous-même dans le code managé pur et le code mixte C# killer Ecrire moins de code en C++/CLI quen C#!

Preview ORCAS STL / CLR