SlideShare une entreprise Scribd logo
1  sur  31
Accélérateur Windows
Ressources
Coaching
Visibilité
aka.ms/accelerateur-windows
Plus d’info ? RDV stand Windows 8
L’Accélérateur Windows
Développer un composant
WinRT
Eric Vernié
Arnaud Auroux
Code / Développement
• Nouveau Runtime (WinRT)
• Nouvelle expérience utilisateur
• Nouvel environnement d’exécution
• Windows Store
Investissements Windows 8
La plateforme Windows 8
Windows Kernel Services
JavaScript
(Chakra)
C/C++ C#, VB
Windows Store Apps
Communication
& Data
Application Model
Devices &
Printing
Windows Runtime APIs
Graphics &
Media
XAML HTML / CSS
C
C++
C#
VB
HTML
JavaScript
Desktop Apps
Win32
.NET
SL
Internet
Explorer
SystemServicesView
Model
Controller
Kernel
WinRT APIs
Environnement d’exécution
CoreOS
App Container + Signed & Validated code
Votre application
Process.exe
AppXManifest
• Performance
• Réutilisabilité
• Extensibilité
Pourquoi développer un Composant WinRT ?
PROTOCOLE OSC
Réutilisation de code
Windows Runtime (WinRT)
Développer un composant WinRT
10
• Disponible pour tous les
langages
• Impose un ensemble de
règles.
Windows
Runtime
JavaScript
C#/VBC++
• Le langage que vous connaissez
• Le langage dans lequel est écrit votre composant
• Le langage ayant accès aux fonctionnalités dont
vous avez besoin
• Le langage fournissant les performances voulues
• Le langage de votre choix
Quel langage choisir pour mon application Windows 8 ?
• Un composant peut être écrit en C#, VB.NET ou
C++.
• Il peut être consommé par une application écrite en
C#, VB.NET, C++, Javascript.
• Attention !!
Composants WinRT
CODE HYBRIDE JAVASCRIPT ET C++
Architecture du Windows Runtime
Windows
Metadata &
Namespace
Projection des Langages
Windows Core
Windows Runtime Core
XAML Storage …Network
UI Pickers MediaControls
Windows Store app
Runtime Broker
Support des
langages
(CLR, WinJS, CRT)
Web Host (HTML,
CSS, JavaScript))
• Description complète des APIs de WinRT (méthodes,
interfaces, types, espace de noms, etc.)
• Générées depuis le compilateur C#/VB ou C++
• Intellisense complète
• Définit pour chaque langage comment créer un objet
depuis WinRT
Windows Metadata
ILSPY
Architecture Windows Runtime
Windows Metadata
& Namespace
Projection des langages
Windows Core
Windows Runtime Core
XAML Storage …Network
UI Pickers MediaControls
Windows Store app
Runtime Broker
Support des
langages (CLR,
WinJS, CRT)
Hôte Web (HTML,
CSS, JavaScript))
Projection du Langage
PROJECTION
• Classes Scellées
– Classes Privées
• Types Compatibles
• Structure champs publiques
• Pas de type générique personnalisé
• Remontée des exceptions
• Asynchronisme
• …
Impose un ensemble de règles.
Impose un ensemble de règles.
Type WinRT C++ JavaScript C#/VB (.NET)
HSTRING Platform::String var (string) String
GUID GUID var (string) GUID
UInt32 uint32 var (double) uint32
DateTime (FILETIME) var (date) DateTimeOffset
Cohérence des types
public sealed class SampleClass
{
public int Add(int x, int y)
{
return x + y;
}
}
Les classes doivent être scellées
Composant WinRT - C++/CX
public ref class SampleRefClass sealed
{
public:
double LogCalc(double input)
{
// Utilisation de la librairie standard C++.
return std::log(input);
}
};
• ABI -> Windows Runtime Exception
• Exception non standard + ABI ->FailureException
• Exception personnalisé
– Exception standard (COMException ou dérivé) + HRESULT
– C++ : Platform::Exception::CreateException()
Composant WinRT - Exception
• Composant managé
– Pas de HRESULT
– Evènement .NET standard
– Mécanisme d’accès au dernier message d’erreur
enregistré
Composant WinRT - Exception
EXCEPTION
• 4 interfaces
– IAsyncAction
– IAsyncActionWithProgress<TProgress>
– IAsyncOperation<TResult>
– IAsyncActionWithProgress<TResult,TProgress>
• Ce sont les seuls types qui peuvent traverser la frontière (ABI)
• Attention à la synchronisation de thread !!
Composant WinRT et Asynchronisme
ASYNCHRONISME
Pour aller plus loin :
• Performance
• Réutilisabilité
• Extensibilité
…avec une cohabitation harmonieuse des
langages !
Résumé
Pour aller plus loin :
• Créer un composant WinRT en C++
– http://aka.ms/bjsqcj
• Windows Runtime Library
– http://aka.ms/rk503m
• Modèle de développement WRL
– http://aka.ms/ug45as
Ressources
Donnez votre avis !
Depuis votre smartphone, sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toutes les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les TechDays
http://notes.mstechdays.fr

Contenu connexe

Similaire à Développement d'un composant win rt

Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8Microsoft
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 
Introduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptIntroduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptdavrous
 
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptIntroduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptMicrosoft
 
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Microsoft
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!Microsoft
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Welcome to Microsoft World
Welcome to Microsoft WorldWelcome to Microsoft World
Welcome to Microsoft WorldAhd Bk
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxWafaNeji
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebFrédéric Harper
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?codedarmor
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
La plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsLa plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsMicrosoft
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...Microsoft Technet France
 

Similaire à Développement d'un composant win rt (20)

Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 
Introduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptIntroduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascript
 
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptIntroduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
 
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Welcome to Microsoft World
Welcome to Microsoft WorldWelcome to Microsoft World
Welcome to Microsoft World
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
La plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nulsLa plateforme de développement Microsoft pour les nuls
La plateforme de développement Microsoft pour les nuls
 
Windev
WindevWindev
Windev
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
 

Plus de Arnaud Auroux

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7Arnaud Auroux
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio onlineArnaud Auroux
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeArnaud Auroux
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à zArnaud Auroux
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesArnaud Auroux
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreArnaud Auroux
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightArnaud Auroux
 

Plus de Arnaud Auroux (7)

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio online
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtime
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria services
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet core
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
 

Développement d'un composant win rt

  • 2. Développer un composant WinRT Eric Vernié Arnaud Auroux Code / Développement
  • 3. • Nouveau Runtime (WinRT) • Nouvelle expérience utilisateur • Nouvel environnement d’exécution • Windows Store Investissements Windows 8
  • 4. La plateforme Windows 8 Windows Kernel Services JavaScript (Chakra) C/C++ C#, VB Windows Store Apps Communication & Data Application Model Devices & Printing Windows Runtime APIs Graphics & Media XAML HTML / CSS C C++ C# VB HTML JavaScript Desktop Apps Win32 .NET SL Internet Explorer SystemServicesView Model Controller Kernel
  • 6. Environnement d’exécution CoreOS App Container + Signed & Validated code Votre application Process.exe AppXManifest
  • 7. • Performance • Réutilisabilité • Extensibilité Pourquoi développer un Composant WinRT ?
  • 10. Développer un composant WinRT 10 • Disponible pour tous les langages • Impose un ensemble de règles. Windows Runtime JavaScript C#/VBC++
  • 11. • Le langage que vous connaissez • Le langage dans lequel est écrit votre composant • Le langage ayant accès aux fonctionnalités dont vous avez besoin • Le langage fournissant les performances voulues • Le langage de votre choix Quel langage choisir pour mon application Windows 8 ?
  • 12. • Un composant peut être écrit en C#, VB.NET ou C++. • Il peut être consommé par une application écrite en C#, VB.NET, C++, Javascript. • Attention !! Composants WinRT
  • 14. Architecture du Windows Runtime Windows Metadata & Namespace Projection des Langages Windows Core Windows Runtime Core XAML Storage …Network UI Pickers MediaControls Windows Store app Runtime Broker Support des langages (CLR, WinJS, CRT) Web Host (HTML, CSS, JavaScript))
  • 15. • Description complète des APIs de WinRT (méthodes, interfaces, types, espace de noms, etc.) • Générées depuis le compilateur C#/VB ou C++ • Intellisense complète • Définit pour chaque langage comment créer un objet depuis WinRT Windows Metadata
  • 16. ILSPY
  • 17. Architecture Windows Runtime Windows Metadata & Namespace Projection des langages Windows Core Windows Runtime Core XAML Storage …Network UI Pickers MediaControls Windows Store app Runtime Broker Support des langages (CLR, WinJS, CRT) Hôte Web (HTML, CSS, JavaScript))
  • 20. • Classes Scellées – Classes Privées • Types Compatibles • Structure champs publiques • Pas de type générique personnalisé • Remontée des exceptions • Asynchronisme • … Impose un ensemble de règles.
  • 21. Impose un ensemble de règles. Type WinRT C++ JavaScript C#/VB (.NET) HSTRING Platform::String var (string) String GUID GUID var (string) GUID UInt32 uint32 var (double) uint32 DateTime (FILETIME) var (date) DateTimeOffset Cohérence des types
  • 22. public sealed class SampleClass { public int Add(int x, int y) { return x + y; } } Les classes doivent être scellées
  • 23. Composant WinRT - C++/CX public ref class SampleRefClass sealed { public: double LogCalc(double input) { // Utilisation de la librairie standard C++. return std::log(input); } };
  • 24. • ABI -> Windows Runtime Exception • Exception non standard + ABI ->FailureException • Exception personnalisé – Exception standard (COMException ou dérivé) + HRESULT – C++ : Platform::Exception::CreateException() Composant WinRT - Exception
  • 25. • Composant managé – Pas de HRESULT – Evènement .NET standard – Mécanisme d’accès au dernier message d’erreur enregistré Composant WinRT - Exception
  • 27. • 4 interfaces – IAsyncAction – IAsyncActionWithProgress<TProgress> – IAsyncOperation<TResult> – IAsyncActionWithProgress<TResult,TProgress> • Ce sont les seuls types qui peuvent traverser la frontière (ABI) • Attention à la synchronisation de thread !! Composant WinRT et Asynchronisme
  • 29. Pour aller plus loin : • Performance • Réutilisabilité • Extensibilité …avec une cohabitation harmonieuse des langages ! Résumé
  • 30. Pour aller plus loin : • Créer un composant WinRT en C++ – http://aka.ms/bjsqcj • Windows Runtime Library – http://aka.ms/rk503m • Modèle de développement WRL – http://aka.ms/ug45as Ressources
  • 31. Donnez votre avis ! Depuis votre smartphone, sur : http://notes.mstechdays.fr De nombreux lots à gagner toutes les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les TechDays http://notes.mstechdays.fr

Notes de l'éditeur

  1. Intro code / dev Eric Poser les bases . 1) Réutiliser de l'existant. Vous avez depuis des années un composant, qui rempli sont rôle, que vous avez éprouvé, testé, et approuvé, pourquoi réinventer la roue ? 2) Pour palier à des manques La plate-forme WinRT a été conçue, pour être la plus légère qui soit. Il est donc possible qu'un certain nombre de "fonctionnalités" soient manquantes. 3) Impossibilité technique, ou difficulté accrue dans un langage. Si vous souhaitez manipuler des APIs du système qui sont difficile, voir même impossible à utiliser dans un langage. 4) Performance Désormais, développer une application Windows 8, c'est cibler des "appareils" qui n'ont pas forcement le même niveau de performances, que votre PC de développement. Pas de SSD, moins de RAM, un processeur différent que le core I7-3770 à 3.4 GHz, comme les processeurs ARM par exemple (même si les prochaines générations de Tegra et Snapdragon qui arrivent, vont relever la barre.)
  2. Mentions these are not in order of importance. Hint of Windows on ARM, but don’t add it as a bullet.
  3. Comme vous pouvez le constater le FX est très Legé
  4. Arnaud
  5. WinRT permet de développer des applications Windows 8 en utilisant un langage ou plus ! La même infrastructure inter-langages utilisée pour créer des milliers d’APIs du Windows Runtime est disponible pour vous afin de bâtir vos propres APIs WinRT
  6. La porte n’est pas fermée
  7. Eric: Attention aux couples CLR dépendant / CLR non dépendant comme JS / C# ou C++ / C# Coût au niveau CPU et mémoire
  8. Comment ça marche concretement ?
  9. Arnaud
  10. Different languages work together. Write Library code in C++ or C# consumable by all (but must be included in package). Subset of Win32 APIs Again projection JS casing example Control type differences across. Mix and match different languages. Windows runtime objects or components basically Dlls WinMD files, can use subset of Win32 APIs, can expose functionality to all languages through “projection” We take care of making sure that these projections work in the way the origional language intended, controling types, casing, etc. Allows writing native C++ code with xaml UI. Adapted from slides 18 and 19 of PLAT-874T
  11. Arnaud : Script : Faire erreur avec List<int> en retour d’un composant winrt en C#, montrer alors que il faut un Ilist<int> Montrer le code généré dans ILSPY Ensuite consommation d’un Ivector<Int> c’est en C# un List<Int> Montrer Ivector en C++ et consommer avec un List<int>
  12. Définir les bons contours (ABI) Scellée, car la classe ne peut pas être utilisée comme une classe de base c’est une règle de WinRT
  13. The hat (^) is one of the most prominent features of C++/CX--it's hard not to notice it when one first sees C++/CX code. So, what exactly is a ^ type? A hat type is a smart pointer type that (1) automatically Windows Runtime reference types use reference counting for object lifetime management manages the lifetime of a Windows Runtime object and (2) provides automatic type conversion capabilities to simplify use of Windows Runtime objects.
  14. Arnaud
  15. Notation