SlideShare a Scribd company logo
1 of 35
L’Accélérateur Windows
                Ressources
                Coaching
                Visibilité

                        aka.ms/accelerateur-windows

                         Plus d’info ? RDV stand Windows 8
Accélérateur Windows
Développer un composant
                       WinRT
                           Eric Vernié
                       Arnaud Auroux




Code / Développement
Investissements Windows 8

• Nouveau Runtime (WinRT)

• Nouvelle expérience utilisateur

• Nouvel environnement d’exécution

• Windows Store
La plateforme Windows 8
                              Windows Store Apps                        Desktop Apps
  View




                              XAML                      HTML / CSS
Controller




                                                        JavaScript
 Model




                      C/C++           C#, VB                          HTML         C      C#
                                                         (Chakra)     JavaScrip   C++     VB
                                                                          t
                              Windows Runtime APIs
  System Services




                    Communication      Graphics &         Devices &
                       & Data            Media             Printing

                                    Application Model                 Internet            .NET
                                                                      Explorer
                                                                                  Win32    SL
   Kernel




                                       Windows Kernel Services
WinRT APIs
Environnement d’exécution
      Votre application




                                                         Core OS
      Process.exe




App Container + Signed & Validated code   AppXManifest
Pourquoi développer un Composant
WinRT ?
 • Performance

 • Réutilisabilité

 • Extensibilité
Réutilisation de code

PROTOCOLE OSC
Windows Runtime (WinRT)
Développer un composant WinRT
                                   JavaScript

• Disponible pour tous les
  langages
                                   Windows
• Impose un ensemble de            Runtime

  règles.                    C++                C#/VB




                                                        10
Quel langage choisir pour mon application Windows 8
?

• 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
Composants WinRT
• 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 !!
CODE HYBRIDE JAVASCRIPT ET
C++
Architecture du Windows Runtime
                 Windows Store app                            Support des
                                                                langages
                                                            (CLR, WinJS, CRT)
               Projection des Langages

                   UI       Pickers      Controls   Media
                                                            Web Host (HTML,
                                                            CSS, JavaScript))
   Windows        XAML      Storage      Network     …
  Metadata &
  Namespace
                          Windows Runtime Core               Runtime Broker


                              Windows Core
Windows Metadata
• Description complète des APIs de WinRT (methodes,
  interfaces, types, espace de noms, etc.)

• Généré depuis le compilateur C#/VB ou C++

• Intellisense complète

• Définit pour chaque langage comment créer un objet
  depuis WinRT
ILSPY
Architecture Windows Runtime
                      Windows Store app                             Support des
                                                                  langages (CLR,
                                                                    WinJS, CRT)
                    Projection des langages

                        UI       Pickers      Controls   Media
                                                                 Hôte Web (HTML,
                                                                  CSS, JavaScript))
 Windows Metadata      XAML      Storage      Network     …
   & Namespace

                              Windows Runtime Core                Runtime Broker


                                   Windows Core
Projection du Langage
PROJECTION
Impose un ensemble de règles.
• Classes Scellées
    – Classes Privées
•   Types Compatibles
•   Structure champs publiques
•   Pas de type générique personnalisé
•   Remontée des exceptions
•   Asynchronisme
•   …
Les classes doivent être scellées
public sealed class SampleClass
{
    public int Add(int x, int y)
    {
       return x + y;
    }
}
Composant WinRT - C++/CX
public ref class SampleRefClass sealed
{
public:
    double LogCalc(double input)
    {
        // Utilisation de la librairie standard C++.
        return std::log(input);
    }
};
Impose un ensemble de règles.
Cohérence des types

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
Composant WinRT - Exception
• 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é
EXCEPTION
Composant WinRT et Asynchronisme
• 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 !!
ASYNCHRONISME
QUESTIONS
Ressources
• Créer un composant WinRT en C++
  – http://aka.ms/bjsqcj
• Windows Runtime Library
  – http://aka.ms/rk503m
• Pour aller plusde développement WRL
   Modèle loin :
  – http://aka.ms/ug45as
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
Backup
The Windows Runtime will automatically
move your calls back to the right thread if
proxies and stubs are available
Aller plus loin avec la WRL
•   Porting COM components to Metro
•   No exceptions requirement
•   Interop with Com
•   No C++ extensions requirement
•   Fine grained control
API Restrictions: What to expect?
              UI: MFC, GDI          X
               UI: DirectX          V   still need to rethink user experience


                ISO C++             V
       VC++ Runtime (CRT, PPL, …)   V

                C++/CLI             X
               OS / Win32           V   WinRT + Win32 subset
               COM / ATL            V   ATL subset
            3rd party libraries     ?   it depends
             Everything else        ?   it depends

More Related Content

What's hot

Android Input Method Editor
Android   Input Method EditorAndroid   Input Method Editor
Android Input Method EditorFranck SIMON
 
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)Michael Njong
 
Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1Laurent BUNIET
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp FrGregory Renard
 
Cours android
Cours androidCours android
Cours androidAd Hafsa
 

What's hot (8)

Android Input Method Editor
Android   Input Method EditorAndroid   Input Method Editor
Android Input Method Editor
 
C#
C#C#
C#
 
Framework .net overview
Framework .net overviewFramework .net overview
Framework .net overview
 
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)
Architecture de la jvm(1ere Partie) - JVM Architecture (First Part)
 
Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
 
Cours android
Cours androidCours android
Cours android
 

Viewers also liked

Les Nouveautés XAML dans Windows 8.1
Les Nouveautés XAML dans Windows 8.1Les Nouveautés XAML dans Windows 8.1
Les Nouveautés XAML dans Windows 8.1Microsoft
 
Back from Build - Conférence Juin 2013
Back from Build - Conférence Juin 2013Back from Build - Conférence Juin 2013
Back from Build - Conférence Juin 2013Microsoft
 
Deforestationpowerpoint1 1223304643711663-9
Deforestationpowerpoint1 1223304643711663-9Deforestationpowerpoint1 1223304643711663-9
Deforestationpowerpoint1 1223304643711663-9developer_inapp
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à RubyMicrosoft
 
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Microsoft
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Microsoft
 
Muatan listrik fsk 2
Muatan listrik fsk 2Muatan listrik fsk 2
Muatan listrik fsk 2defiasik
 
What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++Microsoft
 
#WhereIsPuglia - Il turismo in Puglia nel 2012
#WhereIsPuglia - Il turismo in Puglia nel 2012#WhereIsPuglia - Il turismo in Puglia nel 2012
#WhereIsPuglia - Il turismo in Puglia nel 2012Viaggiareinpuglia.it
 
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...huyendv
 

Viewers also liked (16)

Les Nouveautés XAML dans Windows 8.1
Les Nouveautés XAML dans Windows 8.1Les Nouveautés XAML dans Windows 8.1
Les Nouveautés XAML dans Windows 8.1
 
#WhereIsPuglia - Demoskopea
#WhereIsPuglia - Demoskopea#WhereIsPuglia - Demoskopea
#WhereIsPuglia - Demoskopea
 
Back from Build - Conférence Juin 2013
Back from Build - Conférence Juin 2013Back from Build - Conférence Juin 2013
Back from Build - Conférence Juin 2013
 
Deforestationpowerpoint1 1223304643711663-9
Deforestationpowerpoint1 1223304643711663-9Deforestationpowerpoint1 1223304643711663-9
Deforestationpowerpoint1 1223304643711663-9
 
3
33
3
 
Italian jam session
Italian jam sessionItalian jam session
Italian jam session
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !
 
2
22
2
 
#WhereIsPuglia - Mercury
#WhereIsPuglia - Mercury#WhereIsPuglia - Mercury
#WhereIsPuglia - Mercury
 
#WhereIsPuglia - Ciset
#WhereIsPuglia - Ciset#WhereIsPuglia - Ciset
#WhereIsPuglia - Ciset
 
Muatan listrik fsk 2
Muatan listrik fsk 2Muatan listrik fsk 2
Muatan listrik fsk 2
 
What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++
 
#WhereIsPuglia - Il turismo in Puglia nel 2012
#WhereIsPuglia - Il turismo in Puglia nel 2012#WhereIsPuglia - Il turismo in Puglia nel 2012
#WhereIsPuglia - Il turismo in Puglia nel 2012
 
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...
Cac nhan to_cua_chat_luong_dich_vu_dao_tao_anh_huong_den_su_hai_long_cua_hoc_...
 

Similar to Le développement d&rsquo;un Composant WinRT

Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
Développement d'un composant win rtArnaud Auroux
 
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
 
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
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch
 
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
 
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
 
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
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreMicrosoft
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxWafaNeji
 
Let's Go dans l'univers mobile multiplateforme avec Xamarin
Let's Go dans l'univers mobile multiplateforme avec Xamarin Let's Go dans l'univers mobile multiplateforme avec Xamarin
Let's Go dans l'univers mobile multiplateforme avec Xamarin Christian Hissibini
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Développez des applications natives en HTML/JS avec Chrome apps
Développez des applications natives en HTML/JS avec Chrome appsDéveloppez des applications natives en HTML/JS avec Chrome apps
Développez des applications natives en HTML/JS avec Chrome appsFlorent Dupont
 
Asp.Net Dans Plateforme Ms
Asp.Net Dans Plateforme MsAsp.Net Dans Plateforme Ms
Asp.Net Dans Plateforme MsGregory Renard
 
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
 

Similar to Le développement d&rsquo;un Composant WinRT (20)

Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
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 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.
Réutilisation de code entre Windows 8 et Windows Phone 8.
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
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
 
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
 
Windows 8
Windows 8Windows 8
Windows 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
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
 
Let's Go dans l'univers mobile multiplateforme avec Xamarin
Let's Go dans l'univers mobile multiplateforme avec Xamarin Let's Go dans l'univers mobile multiplateforme avec Xamarin
Let's Go dans l'univers mobile multiplateforme avec Xamarin
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Développez des applications natives en HTML/JS avec Chrome apps
Développez des applications natives en HTML/JS avec Chrome appsDéveloppez des applications natives en HTML/JS avec Chrome apps
Développez des applications natives en HTML/JS avec Chrome apps
 
Windev
WindevWindev
Windev
 
Asp.Net Dans Plateforme Ms
Asp.Net Dans Plateforme MsAsp.Net Dans Plateforme Ms
Asp.Net Dans Plateforme Ms
 
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
 

More from Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

More from Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Le développement d&rsquo;un Composant WinRT

  • 1. L’Accélérateur Windows Ressources Coaching Visibilité aka.ms/accelerateur-windows Plus d’info ? RDV stand Windows 8 Accélérateur Windows
  • 2. Développer un composant WinRT Eric Vernié Arnaud Auroux Code / Développement
  • 3. Investissements Windows 8 • Nouveau Runtime (WinRT) • Nouvelle expérience utilisateur • Nouvel environnement d’exécution • Windows Store
  • 4. La plateforme Windows 8 Windows Store Apps Desktop Apps View XAML HTML / CSS Controller JavaScript Model C/C++ C#, VB HTML C C# (Chakra) JavaScrip C++ VB t Windows Runtime APIs System Services Communication Graphics & Devices & & Data Media Printing Application Model Internet .NET Explorer Win32 SL Kernel Windows Kernel Services
  • 6. Environnement d’exécution Votre application Core OS Process.exe App Container + Signed & Validated code AppXManifest
  • 7. Pourquoi développer un Composant WinRT ? • Performance • Réutilisabilité • Extensibilité
  • 10. Développer un composant WinRT JavaScript • Disponible pour tous les langages Windows • Impose un ensemble de Runtime règles. C++ C#/VB 10
  • 11. Quel langage choisir pour mon application Windows 8 ? • 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
  • 12. Composants WinRT • 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 !!
  • 14. Architecture du Windows Runtime Windows Store app Support des langages (CLR, WinJS, CRT) Projection des Langages UI Pickers Controls Media Web Host (HTML, CSS, JavaScript)) Windows XAML Storage Network … Metadata & Namespace Windows Runtime Core Runtime Broker Windows Core
  • 15. Windows Metadata • Description complète des APIs de WinRT (methodes, interfaces, types, espace de noms, etc.) • Généré depuis le compilateur C#/VB ou C++ • Intellisense complète • Définit pour chaque langage comment créer un objet depuis WinRT
  • 16. ILSPY
  • 17. Architecture Windows Runtime Windows Store app Support des langages (CLR, WinJS, CRT) Projection des langages UI Pickers Controls Media Hôte Web (HTML, CSS, JavaScript)) Windows Metadata XAML Storage Network … & Namespace Windows Runtime Core Runtime Broker Windows Core
  • 20. Impose un ensemble de règles. • Classes Scellées – Classes Privées • Types Compatibles • Structure champs publiques • Pas de type générique personnalisé • Remontée des exceptions • Asynchronisme • …
  • 21. Les classes doivent être scellées public sealed class SampleClass { public int Add(int x, int y) { return x + y; } }
  • 22. Composant WinRT - C++/CX public ref class SampleRefClass sealed { public: double LogCalc(double input) { // Utilisation de la librairie standard C++. return std::log(input); } };
  • 23. Impose un ensemble de règles. Cohérence des types 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
  • 24. Composant WinRT - Exception • ABI -> Windows Runtime Exception • Exception non standard + ABI ->FailureException • Exception personnalisé – Exception standard (COMException ou dérivé) + HRESULT – C++ : Platform::Exception::CreateException()
  • 25. Composant WinRT - Exception • Composant managé – Pas de HRESULT – Evènement .NET standard – Mécanisme d’accès au dernier message d’erreur enregistré
  • 27. Composant WinRT et Asynchronisme • 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 !!
  • 30. Ressources • Créer un composant WinRT en C++ – http://aka.ms/bjsqcj • Windows Runtime Library – http://aka.ms/rk503m • Pour aller plusde développement WRL Modèle loin : – http://aka.ms/ug45as
  • 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
  • 33. The Windows Runtime will automatically move your calls back to the right thread if proxies and stubs are available
  • 34. Aller plus loin avec la WRL • Porting COM components to Metro • No exceptions requirement • Interop with Com • No C++ extensions requirement • Fine grained control
  • 35. API Restrictions: What to expect? UI: MFC, GDI X UI: DirectX V still need to rethink user experience ISO C++ V VC++ Runtime (CRT, PPL, …) V C++/CLI X OS / Win32 V WinRT + Win32 subset COM / ATL V ATL subset 3rd party libraries ? it depends Everything else ? it depends

Editor's Notes

  1. Intro code / devPoser les bases .1) Réutiliser de l&apos;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&apos;un certain nombre de &quot;fonctionnalités&quot; 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) PerformanceDésormais, développer une application Windows 8, c&apos;est cibler des &quot;appareils&quot; qui n&apos;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. La porten’est pas fermée
  5. Comment çamarcheconcretement ?
  6. Different languages work together. Write Library code in C++ or C# consumable by all (but must be included in package).Subset of Win32 APIsAgain projectionJS casing exampleControl type differences across.Mix and match different languages. Windows runtime objects or components basically DllsWinMD 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
  7. Script : Faireerreur avec List&lt;int&gt; en retour d’un composantwinrt en C#, montreralorsqueilfaut un Ilist&lt;int&gt;Montrer le code générédans ILSPYEnsuiteconsommation d’un Ivector&lt;Int&gt; c’est en C# un List&lt;Int&gt;MontrerIvector en C++ et consommer avec un List&lt;int&gt;
  8. Notation