cahier spécial visual studio 2015 - octobre 2015

36
Productivité Collaboration Mobilité DevOps

Upload: vincent-thavonekham

Post on 06-Jan-2017

302 views

Category:

Technology


0 download

TRANSCRIPT

Productivité CollaborationMobilitéDevOps

Depuis 20 ans, Microsoft ne cesse de faire évoluer Visual Studio :nouvelles fonctionnalités, optimisations, nouveaux supportssystèmes et matériels. Visual Studio n’est pas qu’un IDE, mais unevéritable plateforme de développement pour les mobiles, le web, leCloud et le desktop. La nouvelle version 2015 est dans la continuitédes versions précédentes, tout en apportant des améliorationsnotables pour le développeur.

Amélioration de la productivité du développeur ! Pour Microsoft,c’est un objectif. Comment, au quotidien, aider et faciliter ledéveloppement et in fine, la vie du développeur ? Cela passe par desfonctions comme IntelliSense, CodeMap et une intégration pluspoussée avec les SDK et les API (mobiles, cloud, web, desktop, IoT,les tests…).

DevOps. Visual Studio est au cœur du DevOps tel que proposé parMicrosoft. Le but est d’améliorer et de rendre toujours plus fluides lacommunication, les échanges et le travail entre les développeurs etla production. Comment rendre plus souples les processus dedéveloppement, de builds, de déploiement et de production desapplications ? Visual Studio 2015, comme vous le verrez dans ce livreblanc, s’intègre plus profondément avec Visual Studio Online et tousles services liés (Application Insights, build…)

Mobilité. Plus que jamais, Visual Studio 2015 est l’outil pourdévelopper des applications mobiles (smartphones, tablettes). Ilintègre Cordova, supporte parfaitement Xamarin. Et propose desfonctions avancées telles que le C++ pour mobile ! Et demain, cesera la possibilité de migrer des projets Android et iOS pour lescompiler pour Windows Phone(*).

Multi-devices. Pour autant, Visual Studio 2015 n’en oublie pas cequi a fait sa force : le développement Windows et .NET.L’environnement est naturellement l’outil idéal pour créer desapplications Windows 10, Windows 10 Mobile. Et avec la notion deplateforme Windows 10 (allant de l’IoT au Desktop) et des UniversalApps, vous pouvez générer, avec un seul code, des appsfonctionnant sur un smartphone, une tablette, un PC…

Qu’attendez-vous pour tester Visual Studio dès aujourd’hui ?

François Tonicéditeur & rédacteur en chef de Programmez !

(*) Ces outils sont en pré-versions à l’heure où nous imprimons ce document.

2

édito Sommaire

édito 2

Aperçu de laplateforme 3

Productivité avecVisual Studio 2015 4

Visual Studio Code /Visual StudioCommunity 8

L’ALM dans les nuages (TFS / VSO) 10

Installation &migration 14

Services Azure 16

Développer pourWindows 10 21

Dev Mobile 27

Containers, Docker… 31

IoT 32

MSDN Platforms 34

Ressources 35

Productivité, collaboration,multiplateforme et multi-devices

Réalisation : Programmez ! le magazine du développeur – 7, av. Roger Chambonnet 91220 Brétigny sur Orge - Directeur de la publication : François TonicCoordination Microsoft : Gaëlle Cottenceau, Sébastien Cantini - Maquette : Pierre Sandré - Imprimé en France - Photos et illustrations tous droits réservés.

3

Aperçu

Jusqu’à la version 2015, Visual Studio se déclinait en plusieurséditions : Express, Ultimate, Premium, Professional et TestProfessional … Chaque édition correspondait à des usages et desprofils de développeurs précis et avec des niveaux de fonctionnalitésparfois très différents. A cela se rajoutaient les éditions de Team Foundation Server et de Visual Studio Online (VSO).

Les éditions de Visual Studio 2015Visual Studio Visual Studio Visual Studio Visual StudioCommunity Professional Enterprise Test

avec MSDN avec MSDN Professional

Fonctionnalités IDE QQ QQQ QQQQ -

Architecture et modélisation Q Q QQQQ -

Outils de tests Q Q QQQQ QQ

Debug QQQ QQQ QQQQ -

Accès services VSO QQ QQ QQQQ QQQ

Team Foundation Server - QQQ QQQQ QQQQ

Outils de collaboration QQQQ QQQQ QQQQ QQQ

Souscription et bénéfices MSDN - QQQ QQQQ QQ / QQQ

Tarif gratuit (1) 1 199 $ (2) 5 999 $ (3)

Les éditions Premium et Ultimate ont fusionné en Enterprise.Les tarifs indiqués sont ceux du MS Store pour 1 an.

(1) Visual Studio Community est gratuit pour les développeursindépendants, les projets open source, la recherche universitaire,les formations, l’enseignement et les petites équipesprofessionnelles. Pour plus d’informationssur les critères d’éligibilité, consultez lapage produit Visual Studio Community.

(2) Tarification en ligne Microsoft Store : 1 199 $ (nouveau) et 799 $(renouvellement). Des remises supplémentaires pourrontégalement être obtenues auprès des revendeurs de licences envolume Microsoft.

(3) Visual Studio Enterprise avec MSDN acheté via Microsoft Store enligne coûte 5 999 $ (nouveau) et 2 569 $ (renouvellement), parrapport à Visual Studio Ultimate avec MSDN, qui revenait à13 299 $ (nouveau) et 4 249 $ (renouvellement). Des remisessupplémentaires pourront également être obtenues auprès desrevendeurs de licences en volume Microsoft.

Les autres produits de la gammeVisual Studio CodeEnvironnement de développement gratuit et très léger. Il supporte leslangages web les plus populaires. Disponible sur Linux, OS X et Windows.

Visual Studio Express 2015éditions gratuites de Visual Studio. Elles se déclinent en Express pourDesktop, Express pour Web, Express pour Windows, TeamFoundation Server 2015 Express. Chaque édition se limite à undomaine précis de développement.

MSDN PlatformsMSDN Platforms permet au personnel informatique et auxdéveloppeurs Java d'accéder à une large gamme de ressources quiaident votre entreprise à réussir sans le coût supplémentaire deVisual Studio. L'accès à des logiciels passés, présents et futurspermet au personnel informatique de disposer de tout ce dont il abesoin pour installer des environnementsde développement/test et permet à desdéveloppeurs hétérogènes de générerdes applications de qualité élevée pourle Web, le cloud et Windows. De plus, lesabonnés peuvent se connecter,collaborer et livrer à temps avecl'aide de la solution ALM deMicrosoft. p

Aperçu de la plateforme Visual StudioVisual Studio est devenu bien plus qu’une plateforme de développement : IDE, ALM, tests, déploiement,Cloud Computing, multiplateforme. A chaque développeur son Visual Studio !

4

Productivité

Productivité avec Visual Studio 2015Comme pour chaque version majeure de Visual Studio, Microsoft apporte son lot de nouvellesfonctionnalités. D’autres, quant à elles, deviennent plus matures et accessibles sur des versions moinscomplètes. Tout cela permet d’améliorer grandement la productivité des développeurs.

Avec la version 2015 de Visual Studio,Microsoft revoit les différentes distributions.On retrouve maintenant les versionsCommunity, Express, Test Professionnel,Professionnel et Entreprise. L’apport majeurde productivité vient de la fusion desanciennes versions Premium et Ultimate enEntreprise. Les développeurs vont doncpouvoir profiter de l’ensemble des outilsprésents dans Ultimate. CodeLens est un bonexemple et nous le verrons plus en détaildans la suite de cet article. Auparavantuniquement disponible en version Ultimate,peu de personnes pouvaient en disposer.CodeLens devient donc plus accessible enétant même accessible dès la versionProfessionnel. Tous les développeurs quipassent à Visual Studio 2015 auront doncCodeLens s’ils travaillent sur TFS 2013-2015,Visual Studio Online ou un repository Gitlocal. Il y a bien d’autres nouveautés quenous vous proposons de découvrir au traversde moments clés dans le développement(l’écriture du code, puis le débogage etl’analyse de performance). Voyons en détailce que nous propose cette version pour vousaider à améliorer votre flux de travail.

IDESetupLe premier ajout important à Visual Studio 2015se retrouve dès l’installation. En effet l’installeurpropose, en plus des composants classiques,des outils tiers qui s’intègrent directement àVisual Studio tel que :u Apache Cordova et Xamarin Starter

Edition ;u Le SDK Android et un émulateur ;u SQL Server Data Tools ;u Office Developer Tools ;u Applications Universelles Windows ;

u Les outils de développement pourWindows 8.1 et Windows Phone ;

u Les outils de développement pour Pythonou PowerShell ;

u Les outils pour se connecter à GitHub.Ces composants, accessibles directementdans l’installeur de Visual Studio, vont nouséviter de chercher à droite et à gauche cesextensions et de les maintenir à jour, étantdonné qu’ils s’intègrent aussi au système denotification interne pour les mises à jour. Cenouveau système de notification gère aussiles packages de composants de VisualStudio et est capable de mettre à jour lui-même certains packages.

Gestion des comptesDans la précédente version, il était possibled’associer un seul compte à Visual Studio quipermettait de sauvegarder son paramétrage.Par contre, dès que l’on accédait à Azureavec plusieurs comptes, il fallait jongler entreles différents identifiants de ces comptes.Avec Visual Studio 2015, afin de ne pas avoirà ressaisir perpétuellement ses identifiants,Microsoft a ajouté un gestionnaire decomptes (Fig. 1). Lorsque des identifiants sont nécessaires,Visual Studio propose de les sélectionnerdans une liste existante. Dans le cas decompte d’entreprise, il est aussi possible defiltrer les éléments qui seront affichés.

Gestion de l’affichageLes écrans évoluent et il n’est plus rare detrouver des développeurs avec des écranstactiles. Pour améliorer la productivité de cesdéveloppeurs, Visual Studio supportemaintenant des gestes :u Pinch pour zoomer ou dézoomer ;u Double tap pour sélectionner un mot ;

u Tap dans la marge pour sélectionner une ligne ;u Appui long pour faire apparaître le menu

contextuel.D’autre part, nous travaillons aussi de plusen plus avec des ordinateurs portables,parfois connectés à un écran secondaire. Orces différents écrans n’ont généralement pasla même résolution et il fallait dans ce casréarranger les fenêtres dans Visual Studioafin de s’adapter à la résolution de l’écran encours. Avec la version 2015, il est possible desauvegarder l’organisation des fenêtres et derappeler une configuration préalablementsauvegardée (Fig. 2). En bonus, cessauvegardes font partie des informationsassociées à votre profil et seront doncaccessibles de n’importe quel ordinateur dèsque vous vous connectez à Visual Studioavec votre compte Microsoft.

Éditeur de codeL’éditeur de code reçoit lui aussi desaméliorations afin de permettre de gagnerdu temps via l’affichage d’informations etd’avertissements en temps réel bénéficiantégalement d’une meilleure lisibilité.Avec l’intégration du compilateur Roslyn,Visual Studio peut, en temps réel, analyser lecode saisi et ainsi afficher directement lerésultat de ces analyses. On retrouvera parexemple les résultats des analyseurs de code(anciennement FxCop et Code Analysis).Code Analysis a d’ailleurs lui aussi étérepensé afin de prendre en compte Roslyn.Les règles sont maintenant distribuées sousforme d’assemblies à ajouter dans sesprojets via des packages NuGet. L’analyseurpourra aussi proposer le code à mettre enplace pour être en adéquation avec la règle(Fig. 3). Le refactoring de code a lui aussiévolué. L’ensemble des fonctionnalités

Pierre-Henri Gache,Consultant Senior à Cellenza

MichelPerfetti

ConsultantSenior à

Cellenza etMVP VS ALM

Guillaume RouchonConsultant Senior à Cellenza et MVP VS ALM

Fig.2Fig.1

5

Productivité

présentes en C# est maintenant disponibleen natif pour les langages C++ et VB.Net.On retrouvera par exemple pour le C++ lesoptions suivantes :u Renommer un élément (variable,

méthode, classe…) ;u Extraire une fonction d’un code existant ;u Implémenter toutes les méthodes

virtuelles ;u Créer la définition d’une fonction depuis

sa déclaration ou inversement ;u Déplacer la définition d’une fonction entre

le fichier d’en-tête et le fichier source ;u Convertir une chaîne contenant des

caractères d’échappement en chaînelittérale (C++ 11).

L’accès au refactoring se fait via le nouveauraccourci CTRL + <point> et lafonctionnalité est extensible permettant à lacommunauté de proposer ses propresfonctions.Le renommage (l’une des fonctionnalités lesplus utilisées) a aussi reçu une mise à jourspécifique. En sélectionnant un élément eten lançant le renommage, l’ensemble desréférences sont sélectionnées et mises à jouren direct au fur et à mesure de la frappe(Fig. 4).La gestion des points d’arrêt a été intégrée àl’IDE. Plus de fenêtre modale, mais à la façondes « peek windows ». Dans la même idée, lagestion des exceptions en « Debug » a étéaméliorée : plus besoin non plus d’ouvrir unefenêtre modale, cette fois-ci les exceptionsdéménagent dans une fenêtre. Lechangement de configuration n’aura jamaisété aussi facile.

XAML & Blend (MPE)Le XAML est partout sur la plateformeMicrosoft, que ce soit dans les applicationstype Desktop en WPF ou les différentes

déclinaisons de Windows Phone ouWindows 8 à 10. D’un simple éditeur XML audépart, l’éditeur XAML intègre maintenant lemême genre de fonctionnalités qu’unéditeur de code classique dans Visual Studio. Côté édition, IntelliSense a été amélioré :plus de frustration quand rien n’apparaîtalors que la donnée attendue est basique.L’intégration de Blend a été aussi renforcée,ainsi que la gestion des différentesrésolutions, fonctionnalité critique lorsquel’on écrit des applications mobiles. Pour le « Debug », deux fonctionnalités àelles seules valent le coup de passer à VisualStudio 2015 : le « live visual tree » et le « liveproperty explorer ». Pour résumersimplement : nous pouvons naviguer dansl’arbre des composants et pour chaquecomposant, nous avons désormais lapossibilité d’en modifier les propriétés.

Nuget 3.0Nouvelle interfaceLa première chose que l’on remarque desuite est le changement total de l’interfacegraphique. Fini le pop-up qui s’ouvrait dansune fenêtre, le gestionnaire de packageprend désormais place dans un onglet deVisual Studio. Ainsi vous pouvez gérer vospackages tout en conservant la possibilité deconsulter les éléments de votre projet. Lesdifférentes commandes ont été réagencées,mais on retrouve immédiatement ses petits :un champ de recherche, une liste despackages et le descriptif de chacun. Vous medirez qu’à ce stade il n’y a pas grand-chosede nouveau, passons à la suite pour vousfaire changer d’avis. (Fig. 5)

Choix de la version & Mise à jourLa première nouveauté notable est lapossibilité de choisir la version du package

que l’on souhaite installer. Vous avez donc lechoix d’installer par défaut la dernièreversion ou bien une version antérieuredisponible dans la liste de sélection. Ensuite si vous souhaitez mettre à jour vospackages, vous pouvez au préalablevisualiser la liste des projets contenant lepackage en question et quelle est la versionutilisée. Vous avez alors le loisir de mettre àjour tout ou partie de vos packages. Mais lafonctionnalité la plus intéressante et quivous fera gagner le plus de temps estl’action « Consolidate ». En effet lorsquevous sélectionnez cette option, vous allezuniformiser la version du package choisi.Admettons que vous ayez les versions 6.0.4et 6.0.8 du package « Newtonsoft.Json »,chose assez courante quand vous avez unesolution avec des projets web. En fonctiondu choix effectué, seuls les packagesconcernés seront mis à jour avec unemontée ou une descente de version.

IntelliTestImaginons qu’il soit possible d’avoir un outilcapable de générer ses propres testsunitaires, nous pourrions gagner beaucoupde temps dans nos développements. Bienévidemment, un tel outil n’existe pas et ilvous faudra toujours faire l’effort de testervotre code. Mais IntelliTest peut vous donnerun sérieux coup de main et vous fairegagner du temps dans cette tâche.Ceci notamment dans l’écriture des tests descas limites, d’autant plus que ce sonttoujours ces tests que l’on néglige le plus.Mais avant cela, regardons commentfonctionne l’outil. Basé sur « Pex », votrecode va être analysé pour déterminer tousles chemins d’exécution possibles. Chaquechemin donnera lieu à au minimum un testunitaire. Ensuite cette même analysedonnera lieu à la génération des paramètresdes méthodes utilisées dans le test. Prenons

Fig.3

Fig.4

Fig.5

6

Productivité

comme exemple une méthode effectuantune division, IntelliTest générera un appel àla méthode avec « 0 » comme paramètreafin de tester si la division par zéro est priseen charge. De même des valeurs maximumet minimum pour les paramètres serontutilisées pour vérifier qu’il n’y a aucundépassement de capacité dans le code.Il est également possible de donner desinstructions à IntelliTest. Si une méthodecomprend un entier en paramètre dont lavaleur est bornée, il est possible del’indiquer. Les tests générés auront alors desparamètres dont la valeur sera toujourscomprise entre les bornes indiquées.Pour conclure sur ce sujet, il faut prendreIntelliTest pour ce qu’il est : une aide à lagénération des tests. Il ne pourra pas vousremplacer dans cette tâche, mais il devraitvous permettre de vous concentrer surl’essentiel : écrire les tests à valeur ajoutée.

Git + GitHubArrivée officiellement dans VisualStudio 2013, l’intégration de Git pouvait êtrequalifiée de légère, car beaucoup trop demanipulations basiques nécessitaient encorela ligne de commande ou des outilsannexes comme « SourceTree » ou « GitHubfor desktop ». Avec Visual Studio 2015, l’intégration a étébeaucoup plus poussée :u La fenêtre d’historique rend compte des

branches et de leurs interactions ;u Les branches sont plus faciles à gérer via

un arbre dans le Team Explorer ;u Github est intégré via une extension qui

fournit une expérience similaire à VisualStudio Online ou Team FoundationServer.

Diagrammes d’architecture &Code MapsLe menu « Architecture » a été de nouveaurevu pour être encore plus simplifié et pourproduire des « code maps » encore plussimples à utiliser :u Des codes couleurs permettent

d’identifier les différents types de projets(en particulier les tests) ;

u Les graphes complexes s’affichent plusvite, comme pour le rafraîchissement (iln’y a plus de rebuild à chaquechangement dans l’affichage !) ;

u Ils sont disponibles pour C#, C++ etVB.Net.

Les diagrammes de couche sont aussidisponibles pour valider le découplage devos applications. Très peu de personnes auparavantutilisaient ces fonctionnalités, car ellesétaient limitées à la version Ultimate, vous

aurez donc l’occasion de les mettre à profitlors de vos développements.

CodeLensCodeLens est beaucoup plus intégré àVisual Studio qu’avant. Si vous aviez déjàl’habitude de travailler avec, vousremarquerez que la nouvelle gestion del’historique affiche une timeline desmodifications, un peu comme le fait GitHubsur ses repositories. Dans Visual Studio 2013, CodeLens n’étaitdisponible que pour C# ou Visual Basic.Maintenant pour tous les autres fichiers lesinformations génériques sur l’historique, lesauteurs, c’est-à-dire tout ce qui n’est passpécifique à un langage s’affichent en bas du fichier. Une remarque qui peut vous éviter bien desfrustrations : il arrive que même surTFS 2013 ou TFS 2015, CodeLens ne soit pascomplètement disponible. Cela vient du faitque cette fonctionnalité est désactivablecôté serveur. Et généralement, c’est le cas pour éviterl’usage de ressources inutiles côté serveur.Dans ce cas, il faut demander à votreadministrateur TFS de le réactiver sur voscollections et d’attendre l’indexation de voscodes sources.

Le débogueur & Diagnosticde performancesDepuis le début de Visual Studio, nousavons la possibilité d’utiliser des outils dediagnostics. Les versions avançant, denouveaux outils sont apparus, spécifiques àdes plateformes ou non, d’autres se sontperfectionnés. Il n’était jamais vraimentfacile de savoir quel outil il fallait pour unetechnologie donnée ou même si un outilexistait. Avec Visual Studio 2015, tous lesoutils de diagnostics sont ressemblés dansun Hub. Ce dernier est dynamique ets’adapte en fonction des applications que

vous voulez analyser : plus besoin d’aller surMSDN pour savoir quel outil fait quelboulot ! De plus, l’optimisation desperformances est devenue un enjeu majeurdu développement. Proposer aujourd’huiune application optimisée qui consommepeu de ressources, mais dont l’interface n’estpas fluide, n’est pas envisageable. De même si votre usage du réseau n’est pasparfait dans le cadre d’applications mobiles,ayant souvent un débit limité, l’expérienceutilisateur ne sera pas à son niveau optimumet le seul feed-back que vous aurez de vosutilisateurs sera une mauvaise note aveccomme commentaire « ça rame ». Nousallons voir le genre de scénarios pris encompte dans Visual Studio 2015.

Analyse des performancesGénéralement lorsqu’un développementarrive à terme, le besoin d’analyser etd’améliorer les performances se fait sentir. Ilexiste plusieurs méthodes pour effectuer cesopérations, comme par exemple poser dessondes dans son code, juger « au feeling » laréactivité de son travail ou encore utiliser unprofiler. C’est ce dernier type d’outil quioffrira bien évidemment les meilleursrésultats : c’est en quelque sorte une façonfiable d’ajouter des sondes pour analyserson application.Cependant, avant l’arrivée de VisualStudio 2015, il fallait recourir à des outilstiers pour disposer des meilleures solutions.Mais les outils se sont grandement amélioréset il est désormais possible d’avoir lesmêmes bénéfices que la concurrence etmieux encore.La première chose à savoir est que ces outilssont accessibles depuis le menu « Debug »sous la dénomination « Diagnostics Tools »et sont de deux types. Le premier « ShowDiagnostics Tools » est un peu différent dece que vous auriez pu voir auparavant, car ilfournit des informations « en live » durant la

Fig.6

7

Productivité

session de débogage. Le second est plusclassique, car il se rapproche d’un profilerstandard avec une capacité d’analyse plusétendue. Voyons maintenant en détail cesdeux outils.

Diagnostics en liveCe nouvel écran s’active automatiquementlorsque la session de débogage est lancéeet se décompose en deux parties. Lapremière comporte des graphiques avec lesdifférents événements de l’application, laconsommation processeur et l’occupationmémoire. La seconde partie de l’écrancontient le détail des événements et permetde prendre des instantanés de la mémoire.(Fig. 6)La force de cet outil est de corréler tous ceséléments ensemble avec un affichage enlive. Imaginons que vous ayez unalgorithme dans votre code trèsconsommateur en processeur ou enmémoire, vous pouvez insérer dans votrecode un message (via le fameux« Debug.WriteLine » par exemple) indiquantles points clés de votre code. Ensuite ceséléments apparaîtront dans les événementset vous pourrez alors constater s’il y asurconsommation de ressources à ce

moment précis. Ensuite il est fort probableque votre application ait généré quelquesexceptions, surtout dans les phasesd’optimisation, car l’application n’est pasforcément finalisée. Ces exceptionsapparaîtront sous forme de losanges rougessur le graphique et dans la liste desévénements. Dans cette dernière, si voussélectionnez une de vos exceptions, vouspourrez accéder à « l’Historicaldebugging ». Cette fonctionnalité permetde diagnostiquer une exception comme sivous étiez arrêté dessus. Vous verrez lecode où elle s’est produite ainsi que sadescription via la fenêtre « Locals ». Dans la fenêtre « Historical Stack Trace »,vous pourrez également avoir accès à la piled’appels. Le dernier point intéressant est sa capacitéà prendre des instantanés de la mémoire.En effet, bien que l’on puisse surveiller sonévolution, on a souvent besoin d’avoir unétat des lieux précis pour diagnostiquer unproblème. Le principe des instantanés estrelativement simple : il s’agit de prendreplusieurs photos du nombre et de la tailledes instances d’objets puis de les comparer.On peut ainsi en déduire quels sontprécisément les types à l’origine d’une

surconsommation par exemple. Pour sefaire, rien de plus simple, un bouton « Takesnapshot » est disponible dans l’interface.En accumulant le nombre d’instantanés,vous aurez la possibilité de mesurerl’évolution de la mémoire par comparaison.(Fig. 7)

ProfilerLe second outil, accessible sous ladénomination « Start Diagnostic ToolsWithout Debugging » requiert tout d’abordde compiler le projet en mode « Release ».Ensuite avant de lancer l’analyse, il fautchoisir les métriques que l’on souhaiteobtenir. Voici une liste des principaux profilsen dehors des classiques « processeur » et« mémoire » :u Application Timeline : permet de mesurer

la réactivité de l’application ;u Network : permet de monitorer

l’ensemble des appels réseaux ;u HTML UI Responsiveness : similaire au

premier point pour une application web.(Fig. 8)Le premier point positif de cet outil, quel’on peut remarquer dès le début de lasession, est que les performances del’application mesurée ne sont pas impactéespar l’analyse. Ce n’est pas anecdotique, carles profilers ont trop souvent l’habituded’allonger les temps d’exécutions et doncde rendre pénible l’analyse desperformances. Ensuite le fait de proposerdes outils d’analyse de la réactivité del’application est un vrai point positif, car lesdéveloppements actuels sont massivementmultithreads, il n’est donc pas rare debloquer le thread d’interface. Enfin, lapossibilité de générer des rapports trèscomplets devrait finir de vous convaincred’utiliser toutes ces possibilités.

ConclusionComme à chaque version de Visual Studio,nous nous posons tous la même question :est-ce que je peux migrer sans risque ?Depuis Visual Studio 2012, Microsoft atravaillé énormément pour la compatibilitéascendante des projets. Les projets websont plus liés à une version de .NET qu’àune version de Visual Studio, de même qued’autres composants externes comme lapartie BI ou OLTP avec SQL Server DataTools ou Typescript qui sont communs àtoutes les versions. Visual Studio 2015comme son prédécesseur sait cibler lesversions inférieures du framework .NETdonc pas besoin de passer à 4.6. Si vousfaites du web ou client lourd(WPF/Winforms) ou C++, allez-y. p

Fig.7

Fig.8

8

IDE

Fig.1 Fig.2

Visual Studio Code/CommunityParmi les solutions gratuites proposées par Microsoft, on retrouve 2 éditeurs de code offrant desfonctionnalités intéressantes et différentes : Visual Studio Code et Visual Studio Community.

Visual Studio Code est un éditeur de codeallégé à l’image de « Sublime Text » qui estplutôt orienté Web et présente l’avantaged’être disponible sur Windows, OS X et Linux.Visual Studio Community est une version pluscomplète qui permet le développementd’applications tout comme sur les versionspayantes de Visual Studio (Professionnel/Entreprise) avec comme avantage uneutilisation commerciale notamment pour lesdéveloppeurs indépendants. Cette versionprésente moins de fonctionnalités que lesversions payantes, mais propose tout de mêmela majorité des fonctions intéressantes de l’IDEtelles que le debugging, le testing, etc.

VISUAL STUDIO CODEVisual Studio Code (VS Code),une version light et gratuite de« Visual Studio » orientée Web.

C’est quoi ?Visual Studio Code est tout comme lesautres versions de VS un éditeur de code.Cette nouvelle monture est très légère ets’installe assez rapidement (contrairementaux versions payantes qui sont égalementplus exigeantes en ressources et occupentplusieurs Gigaoctets sur votre disque).Ça se passe ici : https://code.visualstudio.com/

Partout et pour tousVisual Studio Code est cross-plateformes :vous pouvez l’installer sur votre Mac, ou surLinux et, bien sûr, Windows. Visual StudioCode est gratuit.

Un IDE riche pour le WebVisual Studio Code propose une colorationsyntaxique par défaut pour la majorité deslangages orientés Web, mais pas seulement.Les langages déjà pris en charge sont : C++,jade, PHP, Python, XML, Batch, F#, DockerFile,Coffee Script, Java, HandleBars, R, Objective-C,PowerShell, Luna, Visual Basic, Markdown.L’intelliSense est disponible pour les langagessuivants : JavaScript, JSON, HTML, CSS, LESS, SASS.

Quelques fonctionnalitésintéressantesChargement des fichiers, projets et dossiersAvec VS Code, on peut charger des projetsVisual Studio standards, ouvrir directementdes fichiers, mais charger également undossier. Par exemple, si vous avez un petitsite Web contenant quelques pages HTML,PHP, css... vous pourrez ouvrir directementl’arborescence du dossier contenant votresite. (Fig. 1 et 2).J’apprécie personnellement cettefonctionnalité, car elle permet d’avoir accès àtoute l’arborescence de notre site sans pourautant avoir la notion de « projet ou solutionVisual Studio » qui n’est pas forcémentnécessaire pour un petit site Web.

L’édition « Side by Side »Une autre fonctionnalité intéressante est lapossibilité d’ouvrir côte à côte plusieurspages : on pourrait imaginer, par exemple,ouvrir une page HTML, la page CSS ainsi quela page JS associée directement : (Fig. 3).Le plus de cette fonctionnalité réside dans

Fig.3

VS Code : Prise en charge des dossiers VS Code : Aperçu de l’arborescence d’un dossier + coloration syntaxique 

VS Code : Side by Side Editing

Georges DAMIENConsultant .NET chez CellenzaBlog : http://georgesdamien.com

9

IDE

Q : Qui peut utiliser Visual StudioCommunity ?

A : Pour les développeurs individuels :n’importe quel développeur individuelpeut utiliser Visual Studio Communitypour créer ses propres applicationsgratuites ou payantes. Pour lesorganisations : u Dans un environnement

d’apprentissage en classe, pour larecherche universitaire ou pour lacontribution à des projets open source,un nombre illimité d’utilisateurs au seind’une organisation peut utiliser VisualStudio Community

u Dans les entreprises de moins de 250PC ou qui génèrent moins de 1 millionde dollars en recettes annuelles,jusqu’à 5 utilisateurs peuvent utiliserVisual Studio Community.

u Dans les entreprises de plus de 250 PCou qui génèrent plus de 1 million dedollars en recettes annuelles, aucuneutilisation n’est autorisée au-delà del’open source, la rechercheuniversitaire, et les scénariosd’apprentissage en classe décrits ci-dessus.

Les fonctionnalités Visual Studio Community est un véritableIDE. Vous pouvez développer des projetsd’envergure à l’identique des versionspayantes : vous pourrez profiter desfonctionnalités de debugging et diagnostics,d’outils de tests, d’intégration, d’outils

Make, Ant, Gulp, Jake, Rake or MSBuild), etc.En bref, l’outil semble êtresuffisamment complet et à la fois léger pourfaire du Web dans la partie « FRONT END ».Un de ses points forts est le côtémultiplateformes, et les développeurs .NETne seront pas dépaysés en voyant l’IDE.Reste à voir les limites de l’outil si onsouhaite aller plus loin, mais ce n’estprobablement pas l’objectif de cet IDE : c’estjustement là où Visual Studio Communityvient combler les manques de cet IDE qu’onpourrait plutôt qualifier de simple éditeur decode.

VISUAL STUDIOCOMMUNITy Visual Studio Community est une versiongratuite de Visual Studio. C’est un véritableIDE avec un grand nombre defonctionnalités à l’image des versionspayantes de Visual Studio. Cette nouvelle mouture est installableuniquement sur Windows contrairement àVisual Studio Code.

Un IDE riche et gratuitVisual Studio Community est gratuit et viseessentiellement les petites structures (moinsde 250 PC ou avec un chiffre d’affairesrelativement faible) ainsi que lesorganisations non commerciales ou lesindépendants par exemple.La dernière version est téléchargeable depuisle lien suivant :https://www.visualstudio.com/fr-fr/downloads/download-visual-studio-vs.aspx

l’ergonomie de son utilisation : un simple« drag and drop » affiche les fichiers vouluscôte à côte dans la limite de 3 fichiers.

La documentationVous trouverez sur lelien https://code.visualstudio.com/Docs unedocumentation assez complète de l’outilprésentant notamment l’ensemble desfonctionnalités de façon concise vouspermettant une prise en main plus aisée.

User VoiceToujours pas convaincu(e) ? Vous n’êtes passatisfait(e) des fonctionnalités proposées ? Ça tombe bien, Microsoft a pensé à vous : Vous avez des suggestions pour améliorerou rajouter des fonctionnalités ?Microsoft offre la possibilité à tout le mondevia « User Voice » de proposer et de voterpour des fonctionnalités souhaitées quimanqueraient  à ses produits afin de lesaméliorer.Lien d’accès : https://visualstudio.uservoice.com/forums/121579-visual-studio

ConclusionVisual Studio Code est simple, rapide etpourrait remplacer dignement un« Notepad++ » voire même un« WebStorm ». Après une premièreutilisation, la chose qui me vient l’esprit estle fait de l’utiliser comme éditeur de textepar défaut (surtout si vous êtes habitué àtravailler avec Visual Studio au quotidien).De nombreuses évolutions sont à venir.Parmi les fonctionnalités non citées, onretrouve le contrôle de version (Git) intégré,la prise en charge d’ASP.NET 5, de Node.JS,le debugging (pour certains langages), lagestion de Tasks (pour faire du

Fig.5

Fig.4

Extrait du comparatif des différentes versions de Visual Studio Aperçu de l’interface de téléchargement d’extensions

10

IDE

collaboratifs, etc. Un comparatif plusdétaillé se trouve à l’adresse suivante : https://www.visualstudio.com/en-us/products/compare -visual-studio-2015-products-vs.aspx (Fig. 4)

Possibilité d’extensionVisual Studio Community donne lapossibilité d’installer une multituded’extensions (plus de 2000) telles que :Web Essential, Xamarin (pour ledéveloppement multiplateforme). Vous yaccédez depuis l’onglet« outils », « extensions et mise à jour… »de l’IDE. (Fig. 5).

Vous pouvez également développer etintégrer vos propres extensionsnotamment grâce au SDK Visual Studio.Pour en savoir plus :https://msdn.microsoft.com/en-us/library/bb166441.aspxVous pouvez également utiliser lecompilateur Roslyn pour créer votrepropre analyseur et générateur de code.

Développement multiplateformeGrâce à un ensemble d’extensions tellesque « Xamarin for Visual Studio »,« Apache Cordova », « VS Tools for Unity2D-3D » « C++ for cross-platform », vouspourrez développer des applications pourAndroid, iOS et Windows.

Fonctionnalités manquantesParmi les fonctionnalités manquantes onpeut citer :u outils de testing : absence du code

coverage, du code UI Testing,l’IntelliTest,… (à noter que cesfonctionnalités sont également absentesde la version Professionnel).

u environnement de développementintégré : absence de « CodeLens » et de« Code Clone ».

u architecture-modélisation : absence desdiagrammes de couches d’architecture& CodeMap.

A noter également l’absence de la prise encharge de Team Foundation Server. Et biensûr pas d’abonnement MSDN attaché…

ConclusionVisual Studio Community, grâce à sagratuité, donne la possibilité d’accéder àun IDE riche et relativement complet pourenvisager des projets conséquents dedéveloppement. Les extensions sontmultiples et donnent accès à un largepanel de fonctionnalités pour envisagerpar exemple le développementd’applications multiplateformes. p

L’ALM dans les nuages

Ces applications sont multi-plateformes,multi-devices, hébergées dans le Cloud ouen interne, mettant la démarche ALM etDevOps à la portée de toutes lesentreprises : startups, PME, grands comptesou institutions. Ce chapitre sera consacré auxservices d’ALM (Application LifecycleManagement) offerts par Visual StudioOnline, en fournissant une vue d’ensembledes outils à la disposition des servicesinformatiques pour accomplir leursdifférentes missions liées à la gestion desapplications.

Team Foundation Server, la solution ALM de MicrosoftTeam Foundation Server est la solutionproposée par Microsoft pour supporter lesprocessus de l’ALM. Il s’agit principalementde gérer :u Les exigences de l’application, en

permettant leur hiérarchisation surplusieurs niveaux (fonctionnalités, userstory…), et en fournissant des mécanismesde priorisation,

u Les tâches des membres de l’équipe, entenant compte de leur capacité de travail, etde l’effort nécessaire pour réaliser ces tâches,

u Les codes sources de l’application, enintégrant les mécanismes de gestion desbranches, de manière centralisée (avecTFVC) ou distribuée (avec GIT)

u Les builds de l’application, pour intégrerles sources d’une version spécifique, etleur faire suivre un processus de gestion(qualité, disponibilité pour le test…),

u Les différents types de tests tanttechniques (unitaires, performance) quefonctionnels (tests manuels ouautomatiques),

u Les déploiements des différentscomposants de l’application sur lesserveurs de chaque environnement,

u La collecte d’informations de surveillancedes applications en cours d’exécution.

Ces différents services sont disponibles à lafois sous forme de logiciels serveurs àinstaller sur l’infrastructure de l’entreprise(On Premise), et sous la forme de serviceshébergés dans le Cloud. (Fig. 1).

De l’ALM dans le Cloud ?Visual Studio Online est le nom du serviceCloud offert par Microsoft, pour supporterles processus ALM. Désormais, tous lesservices proposés par TFS sont égalementdisponibles dans le Cloud via VSO. Bienentendu, ces services peuvent êtredisponibles sous une forme différente. Il estintéressant de noter que, très souvent, lesfonctionnalités sont plus avancées sur VisualStudio Online que sur la version On Premise.L’architecture Cloud permet en effet àMicrosoft de diffuser ses mises à jour plusrapidement dans le Cloud, que dans lesversions On Premise.Le choix de chaque entreprise entre laversion Cloud ou On Premise se fera enfonction de critères stratégiques ouopérationnels. Un guide de choix estdisponible sur le site de Visual Studio (1).

Fig.1

Les services offertspar TFS ou Visual

Studio Online

Que ce soit dans le Cloud ou dans sa version On Premise, la nouvelleversion de Team Foundation Server recèle de très nombreusesnouveautés, et jamais aucun éditeur n’était allé aussi loin dansl’intégration des différents services nécessaires au développement, audéploiement, et à l’exploitation des applications.

Sylvain GrossMVP sur Visual Studio ALM,Sylvain est ALM /EPM PracticeManager au sein de Neos-SDI.Il anime de nombreusesconférences sur l’ALM. Neos-SDIest Centre de Compétences Gold

sur le domaine ALM, dans lepartenariat Microsoft PartnerNetwork.

11

TFS / VSO

VISUAL STUDIO ONLINE,VOTrE SOLUTION ALMUn portail pour votre projetd’équipeVisual Studio Online permet de travailler surdes Projets d’Equipe. Ce sont des espaces quicontiennent les éléments nécessaires pourtravailler sur un projet. Les projets d’équipesont créés selon différents modèles,dépendant de la méthodologie utilisée :Scrum, Agile, CMMi, etc.Le projet doit être découpé en itérations, afinde gérer la planification des livraisons desversions de projets, et en zones, permettantun découpage fonctionnel du projet. Lesmembres de l’équipe sont déclarés sur leportail Web dédié au projet, et les droitsd’accès sont automatiquement attribués. Lacapacité de l’équipe est calculée en fonctionde la durée de l’itération et du tempsdisponible pour chaque membre d’équipe surce projet. Le portail est configuré de manièreà donner facilement accès aux élémentsintéressants du projet : les tâches, les bugs,les builds, les releases, ainsi qu’à tous lesartefacts du projet. (Fig. 2)

Les exigences et le travailDans Visual Studio Online, l’élément de baseest le work item, ou élément de travail. Lenom des éléments de travail varie d’uneméthodologie à l’autre. Tous les éléments detravail sont affectés à une personne, et ontun statut (ouvert, en cours, fermé…) qui peutévoluer au fil du temps, selon un workflowdéfini dans la méthodologie. Les principauxtypes d’éléments de travail sont :u Les exigences, qui vont désigner des

besoins, fonctionnels ou techniques. On ytrouvera par exemple les RécitsUtilisateurs. Ces exigences pourront êtrerattachées aux fonctionnalités, qui sontdes exigences plus globales,

u Les tâches, qui désigneront les actions àréaliser. Ces tâches sont rattachées à uneexigence, pour indiquer pourquoi cettetâche doit être réalisée,

u Les cas de test, qui décrivent la manièredont une exigence doit être testée : lesétapes de test, les valeurs attendues.

Les tâches et les exigences peuvent êtrecréées et éditées depuis le portail Web, soit àl’aide de listes, soit à l’aide de tableauxKanban. Ce Kanban est d’une efficacitéremarquable pour éditer rapidement lestâches, changer les affectations, définir lereste à faire. Sa simplicité d’utilisation permetaux équipes de mettre à jour le statut destâches directement dans le portail, lors de lamêlée (Scrum) quotidienne. (Fig. 3)Ce Kanban peut montrer les tâches

regroupées par personne, ou par récitutilisateur. De nombreuses possibilités depersonnalisation permettent d’adapter lecontenu, tant sur la forme (mise en formeconditionnelle, colonnes supplémentaires),que sur le fond (nouveaux champs).

Les buildsLa gestion de build est l’une des activitésfondamentales de l’ALM. Cette build permetd’assembler tout le code source d’un projet,pour en faire un package complet. Cettecompilation est réalisée sur un serveur, etnon sur un poste de développement, c’estpourquoi seule la build permet de garantir lamaîtrise du code complet de l’application,tant au niveau du code source que desassemblies référencées. Désormais, unnouveau type de build est disponible dansTeam Foundation Server 2015 et VisualStudio Online : Team Foundation Build 2015(2). Ce nouveau système de build permet decréer des définitions de build pour Windows,iOS, Android, Java. Son utilisation estbeaucoup plus simple que le systèmeprécédent basé sur XAML : une interface

Web permet de créer une nouvelle définitionde build, intégrant :u Des étapes personnalisées,u Des tests, u Des étapes de packaging,u Des étapes de déploiement.Aucune connaissance en programmation n’estnécessaire : il s’agit simplement de configurerles différentes étapes, en fournissant leséléments à chaque composant. L’exécution dela build est déclenchée par l’interface Web, etle cours de son exécution est affiché sur uneconsole en temps réel. Le déclenchementd’une build peut être automatisé sur certainsévénements :u À chaque archivage, pour mettre en place

une intégration continue,u Chaque nuit, pour disposer quotidiennement

de la dernière version de l’applicationu La build peut également conditionner

l’acceptation d’un archivage : l’archivagecontrôlé est un excellent moyen des’assurer que le code archivé est correct,car en cas d’erreur de build, ou de test enéchec, l’archivage est rejeté, permettant dene pas pénaliser toute l’équipe. (Fig. 4)

Fig.2

Fig.3

Le Kanban des tâches

12

TFS / VSO

Les testsAu-delà des tests permis par Visual Studio, laplateforme ALM de Microsoft permet la miseen œuvre de tests :u Fonctionnels : des cas de tests sont définis

et paramétrés, puis exécutés depuis leportail Web,

u Techniques : des tests de charges sontdéfinis dans Visual Studio, puis exécutésdepuis le portail Web.

Les tests fonctionnelsLes tests fonctionnels permettent des’assurer que l’application répond auxexigences fonctionnelles. Des cas de testsdécrivent les différentes étapes d’un test, etprécisent le résultat attendu à chaque étape. Des paramètres peuvent être fournis au casde test, afin d’appliquer un jeu de donnéesreprésentatif à l’application, en entrée, ou ensortie. Les tests peuvent être manuels ouautomatiques. Les tests manuels peuventêtre conçus et exécutés depuis le portailWeb, dans le Hub Test. Les tests permettentde détecter des anomalies, qui peuvent êtrematérialisées sous forme de Bugsdirectement depuis l’outil. Le contexte decette anomalie est automatiquement fourni,facilitant ainsi la reproduction du bug par leséquipes de développement : la résolutionsera facilitée. Les tests fonctionnels peuventêtre automatisés : Visual Studio intègre desoutils permettant d’enregistrer une séquenced’utilisation (tests unitaires, tests codésd’interface utilisateur), et de lier ce code detest à des cas de tests. De cette façon, leséquipes QA peuvent exécuter les testsdepuis leur outil Test Manager de manièreautomatique.

Les tests de chargeLes tests de charge permettent de garantirqu’une application continuera à fonctionnerlorsqu’un nombre important d’utilisateurs estconnecté. Pour mettre en œuvre ce type detest, il s’agit de définir des scénarios

d’utilisation sous forme de tests deperformance Web, ou de tests unitaires, puisde programmer leur parallélisation. Lamontée en charge peut être progressive oupar palier, en intégrant des temps dechauffe. Les différents scénarios vont êtreexécutés successivement par chacun desutilisateurs virtuels, dans un ordreparamétrable, de façon à se rapprocher leplus possible de la réalité. Des indicateurs deperformance sont positionnés, de manière àdéterminer la consommation de chaquecomposant au niveau mémoire, processeur,espace disque, sur chacune des machines.Ce qui rend traditionnellement les tests decharge difficiles à mener, ce sont lesressources système qu’il faut monopoliserpendant les campagnes de tests. Ces testsrequièrent une quantité importante deressources, et sont très impactant au niveaude l’infrastructure en place. Le Cloud permetde soulager l’infrastructure, en mettant àdisposition des équipes un environnementtoujours disponible, aux capacités machinesquasiment illimitées. L’exécution decampagne de tests sur l’environnementVisual Studio Online devient par conséquenttrès accessible. De plus, un mode simplifiépermet de réaliser des tests de chargebasiques, sans préciser de scénario.

release Management as a ServiceLe déploiement des applications sur lesenvironnements de production est ladernière étape du processus dedéveloppement. Un package est généré parla Build : il s’agit de copier ces packages surles serveurs cibles.Release Management pour Visual Studio(3)est le composant de la suite Visual StudioALM qui permet de répondre à cetteproblématique. Release Managementpermet :u De modéliser les différents

environnements, en y incluant les serveurs,

u De définir pour chacun de cesenvironnements les actions à réaliser pourdéployer les composants de chaquemachine de l’environnement (package IIS,script SQL…)

u De définir des processus de retour arrièreen cas d’erreur : en cas d’échec des scriptsde mise à jour de la base SQL, la base dedonnées est restaurée dans son étatprécédent, puis l’application d’origine estremise en place,

u De définir un chemin permettant depasser d’environnement enenvironnement : de développement versintégration, d’intégration à production parexemple avec possibilité d'ajouter desapprobations.

Release Management pour Visual Studiopermet par conséquent d’automatiser ledéploiement des mises à jour de manièresécurisée, même dans des environnementscomplexes : plusieurs serveurs Web, desserveurs WCF, des serveurs SQL.Actuellement, Release Management seprésente sous la forme d’une applicationWPF, liée au projet d’équipe à l’aide d’unserveur de release. Cette application permetde définir et d’exécuter le déploiement desapplications. Une nouvelle version deRelease Management est actuellement enphase de Preview : Release Management asa Service. Comme son nom l’indique, il s’agitd’offrir les mêmes services, mais à l’aide duportail projet de Visual Studio Online.Un nouveau Hub est disponible : Release. Àl’instar de Build, il permet de définir unenouvelle séquence de déploiement, à l’aidede blocs disponibles depuis le DesignerWeb. (Fig. 5). Le déclencheur d’uneséquence de déploiement est une Build. Uneliste de tâches est disponible pour permettrede déployer les artefacts de la build vers lesserveurs de destination. De nombreuxcomposants sont disponibles, permettantd’exécuter des actions en parallèle, oud’exécuter des scripts SQL ou Power Shell,de lancer des packages MSI, ou de lancer untest automatique de validation dudéploiement.

Surveiller les applicationsavec Application InsightsLorsque l’application est déployée, laresponsabilité est transférée aux équipesd’exploitation, chargées de garantir le niveaude service requis : temps de réponse,absence d’erreurs… Pour faciliter ce travailde surveillance, et travailler de manièrecollaborative entre les équipes dedéveloppement et les équipes d’exploitation,Application Insights(4) propose un servicede surveillance des applications :

Fig.4

Exécution d’une build

13

TFS / VSO

Fig.6

u Détection de problèmes de performance,u Détection d’erreurs et d’exceptions,u Rapport d’exécution pour connaître les

fonctions réellement utilisées.La mise en œuvre d’Application Insights esttrès simple. Il suffit de créer une instanced’Application Insights dans Azure, etd’intégrer le package Application Insightsdans le projet. L’exécution de l’applicationenverra automatiquement des donnéesd’utilisation sur l’instance d’ApplicationInsights. Ces données seront présentées sousforme de tableau de bord dans Azure, vousfournissant ainsi une donnée d’utilisationtrès précieuse. (Fig. 6)

Power BITFS fournit un grand nombre de données surles différents projets en cours :

u Le nombre de bugs, de tâches, d’exigences,u Le nombre de build, de tests, de

déploiement,u Le nombre d’archivages, etc…L’exploitation de ces données permet aumanagement d’identifier des pistesd’amélioration de la performance deséquipes, aussi bien sur la qualité que sur laproductivité. C’est un moyen assez facile demettre en œuvre une démarched’amélioration continue. L’outil privilégiépour réaliser des rapports dans le Cloud estPower BI. Cet outil permet d’intégrer denombreuses sources de données du Cloud,ou de l’infrastructure On Premise en utilisantdes passerelles. Un connecteur Power BIpour Visual Studio Online est disponible, etpermet de mettre à disposition desconcepteurs de rapports un modèle de

données très riche, mis à jour en quasi-temps réel. Des tableaux de bord peuventêtre réalisés, et mis à disposition dumanagement, ou des équipes. Les outils dediffusion des rapports Power BI sont desapplications Windows, des applicationsmobiles (iOS, Android, Windows Phone) oule portail Office 365. (Fig. 7).

VISUAL STUDIOONLINE, VOTrE ALMDèS AUjOUrD’HUICe survol des différents modules de VisualStudio Online a montré sa capacité à couvrirtous les besoins ALM pour les applicationsd’aujourd’hui, et de demain.Avec cette version, c’est un nouveau palierqui a été franchi, ouvrant des perspectivesenthousiasmantes : des applications multi-devices, connectées au Cloud, pour fournirrapidement des services innovants auxutilisateurs, avec un niveau de qualitéirréprochable. L’adoption d’une démarcheALM est désormais accessible à toutes lesformes de structures, et peut se faire demanière progressive, en activant lesfonctionnalités au fur et à mesure, enfonction des priorités de chaque entreprise.

p

(1) https://msdn.microsoft.com/en-us/library/fda2bad5(v=vs.140).aspx(2) https://msdn.microsoft.com/Library/vs/alm/Build/feature-overview(3) https://msdn.microsoft.com/en-us/Library/vs/alm/Release/overview(4) https://azure.microsoft.com/fr-fr/documentation/articles/app-insights-start-monitoring-app-health-usage/

Exemple de rapport Power BI pour Visual Studio Online

Fig.7

Surveillance de l’application avec Application Insights

Fig.5

Le Hub Release Manager

14

Installation / migration

Installation et migrationLa sortie de Visual Studio 2015 a été un événement majeur de la communauté des développeurs .NET.Annoncée avec beaucoup de nouvelles fonctionnalités, je pense que cette nouvelle version était trèsattendue par nombre d’entre nous.

Avant de pouvoir tester ces nouveautés, lapremière étape est la réussite de l’installationdu nouvel opus. Nous allons voir ensemblecomment se passe cette procédure. Cela nouspermettra aussi de parcourir quelques-unesde ses nouvelles fonctionnalités et d’évoquerles évolutions depuis les précédentesversions. J’ai choisi pour ma part d’installer laversion Entreprise. On trouve une versiond’essai pour 3 mois sur le site de Microsoft. Ilest possible d’essayer d’autres versions ouencore de télécharger la version Community,qui est gratuite. J’ai également installé cettedernière version. La procédure est la même,seul le contenu change. L’installation de laversion Entreprise nécessite :u un processeur de 1.6 GHz (au minimum), u 1 Gb de RAM (au minimum), u 10 Gb d’espace disque (au minimum), u une carte vidéo capable d’utiliser Direct-X 9

(au minimum), u Windows 8.1 ou Windows Server 2012. (Fig. 1) L’installation se fait en ligne. On disposeégalement d’une option pour télécharger uniso. Au démarrage du processus, on arrivesur un premier choix permettant dedéterminer le type d’installation souhaitée.L’installation standard dispose des packagesnécessaires pour démarrer et nécessite958 Mo. Les packages non installés pourrontêtre téléchargés par la suite si on souhaiteles utiliser. L’installation avancée permettra,quant à elle, de sélectionner les parties àinstaller. Cela permettra soit de gagner de laplace sur l’installation, soit de s’assurer dedémarrer avec les bons outils. Microsoftessaie de nous donner, dans ce nouvel opusde Visual Studio, un maximum depolyvalence. Il s’agit donc de cibler au mieuxl’environnement sans alourdir le logiciel. Si, à

terme, des packages venaient à manquer, ilsuffirait de les installer au moment voulu.Si vous avez installé une version bêta du SDKWindows 10, l’installateur vous demanderaautomatiquement de le supprimer. Il s’agitd’un prérequis. Parmi les packages proposés,on retrouvera les outils habituels, ainsi qu’uncertain nombre de nouveautés« embarquables » nativement dans l’EDI. Ontrouvera notamment : (Fig. 2)u des outils Python,u les outils de développement pour

application universelle Windows,u le SDK pour Windows 10,u des outils de développement cross-

plateformes (Xamarin, développementpour Androïd et iOS),

u Apache Cordova,u Node.js,u GIT.L’installation de l’ensemble des packagesrequiert jusqu’à 26 Go. J’ai personnellementlancé tous les packages, mais certains n’ontpu être installés. En fin de processus, unbilan nous liste clairement les problèmessurvenus afin de pouvoir les corriger.

Parmi les outils installés, on trouveranotamment la nouvelle version de Blend. Ils’agit de l’outil de création d’interfacesgraphiques XAML / WPF. (Fig. 3)Une fois l’installation terminée, il y a deuxprincipaux réglages à effectuer. Le premierest classique puisqu’il s’agit de paramétrerson environnement Visual Studio (thème etlangage de démarrage). Concernant lethème, de nombreux autres réglages sontdisponibles (menu Tools puis Options). Onpourra notamment modifier le thème choisiau démarrage si ce dernier ne nousconvenait plus. Le second paramétrage est,quant à lui, plus novateur. Il s’agit des’enregistrer avec un compte Microsoft. Ilpermet plusieurs fonctionnalités. Lorsquenous démarrons Visual Studio pour lapremière fois, on remarque que la licence estaccordée pour 1 mois (contre 3 moisannoncés sur le site de Microsoft). Pourdébloquer les 3 mois d’essai, il faut seconnecter à un compte Microsoft dansVisual Studio. (Fig. 4 et 5).(Fig. 6) L’un des intérêts est aussi departager les paramétrages entre lesdifférents outils Visual Studio (vers Blend parexemple) et à travers les différents PCutilisés. Cet enregistrement lie le compteutilisé à un compte Visual Studio. Cela nous

Fig.1

Fig.2

Fig.3

Fig.4

Gaël DupireConsultant Expert Technique MERITIS

15

Installation / migration

permet d’accéder à ce compte via TeamExplorer. De la même façon, les ressourcesAzure et sites Web Azure seront visiblesdans l’explorateur de serveur. Par ailleurs, ilest possible d’enregistrer plusieurs comptesafin de gérer les différents aspects de nosprojets. On pourra bien entendu ajouter denouveaux comptes après l’installation. Lechangement de compte est possible àn’importe quel moment souhaité. La liste descomptes associés à un utilisateur fait partiede l’itinérance des paramètres. (Fig. 7).Une fois le profil paramétré et sélectionné,on voit apparaître dans le coin en haut àdroite de l’EDI un badge avec nos initiales, età côté, nos nom et prénom. Juste au-dessus,un petit smiley jaune nous permet decommuniquer avec les équipes de Microsoftet de leur faire des retours sur les différentsoutils. (Fig. 8). En cliquant sur cette icônepuis en choisissant « Settings », on pourras’enregistrer pour le programmed’amélioration du produit. Avec « MoreOptions » ou « Help », on ouvrira une pageInternet dans Visual Studio qui nous redirigevers une autre page permettant de faire des

feed-back ou d’obtenir des informations surcomment faire ces feed-back.Concernant la compatibilité, mon ordinateuraccueille Visual Studio 2010, 2012, 2015Community et 2015 Entreprise. J’avais uncertain nombre de projets en cours outerminés correspondant à chacune de cesversions. Sans aucun effort particulier, j’ai puouvrir différents projets de bibliothèque enC#, C++ et F# ayant été créés sous VisualStudio 2010 (C# et C++) et 2012 (C#, C++ etF#). Nous verrons le détail de ces portagespar la suite. Concernant les projets debibliothèque C# et F#, l’ouverture, lacompilation et l’exécution se sont dérouléessans aucun problème et sans adaptation.

La migrationPour tester le portage de projets dedéveloppement ciblant Windows 8.1, j’ai utilisédeux projets disponibles en téléchargementsur MSDN. Le premier projet est ladémonstration des capacités d’authentificationWeb : « Web authentification broker sample »disponible sur MSDN. Ce projet estparticulièrement intéressant, car il contient desobjets graphiques (XAML) du code C# et C++.Le second projet est une démonstrationd’utilisation de la bibliothèque Prism, il s’agitde « Developing a Windows store businessapp using C# and Prism with MVVM ». Ceprojet est également très intéressant, car ilutilise NuGet. Le choix d’utiliser des projetsdont la source est MSDN vient du fait que lesprojets ciblant Windows 8.1 ne sont ni créablesni ouvrables avec une version inférieure àVisual Studio 2013. Mes projets issus de cetteplateforme étant sur une machine virtuelle, j’aiopté pour cette solution. Cette dernière estbien adaptée à des projets de démonstrationparticulièrement complets. (Fig. 9 et 10).

J’ai commencé par le projet de Webauthentification : l’ouverture s’est bienpassée, mais on m’a demandé d’activer lemode développeur disponible dansWindows 10 à la compilation (il s’agit de laversion de Windows que j’utilise pour cestests). Cette requête est faite via une petitefenêtre qui nous demande de modifier lesparamètres. Un lien nous permet d’effectuerla modification demandée. Concrètement, celien ouvre les paramètres de Windows 10, ilne nous reste donc qu’à sélectionner labonne option. (Fig. 11).Un autre événement s’est produit durantcette compilation : un élément du projetétait obsolète. De la même façon, unefenêtre nous avertit du problème. Comme ilest possible de le générer immédiatement,j’ai validé cette option pour voir où celaconduisait : le projet a été converti et lacompilation s’est finie sans autre difficulté. Pour le second projet, aucun événementnotable n’est à signaler. Le chargement a étéparticulièrement long, cela me laisse penserque même si aucune fenêtre de dialogue nes’est manifestée, il y a certainement desactions de conversion qui se sont dérouléessilencieusement. (Fig. 12).Ceci m’amène au portage des projets C++. Sinous venons de projets issus de VisualStudio 2010 ou 2012, après le chargement dela solution, il nous est proposé une étape deconversion. Cette étape n’est pas obligatoire,mais requiert très peu d’action (cliquer sur OKuniquement!!). Après le chargement du projet,une boîte de dialogue nous demande si l’onsouhaite effectuer la mise à niveau. À la fin decette action, un résumé des actions est

Fig.5

Fig.6

Fig.7

Fig.8

Fig.9

Fig.11

Fig.10

16

Installation / migration

Fig.12

Notions de base et définitionsAvant d’aborder pleinement le vaste etpassionnant sujet du DevOps, rappelonsquelques définitions simplifiées :u L’ « ALM » (Application Lifecycle

Management) correspond à un ensemble deprocessus et d’outils permettant de gérer lecycle de vie complet de création d’un logiciel.Par cycle de vie complet, nous entendons lesétapes successives de la collecte des besoins,les spécifications, la réalisation, les testsunitaires, la recette jusqu’à la livraison enproduction et la gestion des bugs. L’ALMpermet d’extraire de nombreux indicateurs etKPI afin d’optimiser les processus et la qualitéglobale.

u Une « Usine logicielle » représente lapartie outillage et serveur mise en œuvredans l’ALM pour automatiser les tâchesrépétitives et chronophages du processus(ex : compilations, exécution de tests,édition de rapports, déploiements, etc.).

u Le « DevTest » est une approche agilepermettant aux développeurs d’accélérerleurs développements en testant etlivrant automatiquement leur code sur unenvironnement d’intégration plusieursfois par jour,

u Le « DevOps » est une approche Agilequi repose sur le « DevTest » et pousse leprincipe plus loin, en incluant dans laboucle tous les acteurs jusqu’à la mise enservice et support du produit. Cettelivraison en production auprès du serviced’Exploitation (« Operations » en anglais,d’ou l’« Ops » de DevOps) suit unworkflow très rigoureux de validations etinclut une forte traçabilité ; le DevOps estparfois assimilé, à tort, à l’ALM.

Le « DevOps » représente le « Graal » detoute équipe souhaitant accélérer le « Dev-Lead Time » tout en garantissant un niveaude qualité de leur produit.

VSO et Microsoft Azurecomme accélérateurs dedéveloppementPour réduire de façon drastique le « Dev-Lead Time », nous allons d’abord nousconcentrer sur Visual Studio Online (VSO), c.-à-d. un Team Foundation Server toujoursà jour et disponible « en tant que service »sur Microsoft Azure. Nous verronségalement comment l’interaction de VSOavec les autres « services » d’Azure permetd’optimiser ce précieux KPI.Par le passé, les habitués des projets degrande ampleur prévoyaient une semaine àun mois pour configurer et roder une usinelogicielle « from scratch ». À présent, àpérimètre constant, il est fréquent deréaliser tout cela en moins d’une semaine.Mieux, avec de l’entrainement et sur unprojet de taille modeste, il est possible deréaliser, toujours « from scratch », une usinelogicielle de bout-en-bout en une heuretop-chrono, documentation comprise :u fabriquer un environnement de Dev

(virtualisé), u créer un projet vierge, avec une coquille

de Tests Unitaires associée (TU), u monter un serveur de Build, avec les

outils pour lancer les TU, et calculer letaux de couverture de code par les tests,

u monter VSO-GIT (un référentiel GITcombiné à la puissance de VSO pourgérer les projets),

u créer un hébergement pour uneapplication Web avec sa base dedonnées,

u brancher les outils de monitoringapplicatifs et techniques.

Oui, tout cela en une heure pour des cas

Services Paas, Iaas sur DevTest,ouverture d’un compte VSO,crédit Azure dans MSDNNous allons voir comment Visual Studio 2015 porte les principes DevOpsdans le Cloud Microsoft Azure, le monde de l’Open Source ou les solutionsd’éditeurs tiers. Le but est d’accélérer le « Dev-Lead Time », un KPI (KeyPerformance Indicator) très prisé des directeurs de projets, puisqu’il mesurele temps requis pour traverser un cycle complet de développement, del’idée jusqu’à la mise en production. Les questionnements relatifs auxlicences et économies à considérer seront évoqués.

Vincent ThavonekhamMicrosoft Practice Manager VISEO

disponible. Finalement, même si quelquesincompatibilités ont été relevées dans lesprojets utilisés, elles ont toutes été résoluessans problème majeur avec des outilsembarqués. En tant qu’utilisateur je n’ai euque très peu d’interaction avec Visual Studiopour permettre l’adaptation de ces codes. Ilsemble donc que la migration soit en grandepartie automatisée et demande peu detemps. Toujours concernant le portage desprojets, MSDN a bien documenté ce sujet(rechercher le thème « migration de projet C#avec Visual Studio 2015 » avec Bing). L’articledétaille de nombreux cas possibles. C’est danscet article que j’ai appris que l’étaped’adaptation des projets C++ est optionnellepour les projets issus de Visual Studio 2010 et2012 (.vcxproj), mais nécessaire dans lesautres cas (.vcproj). On trouvera égalementdes conseils dans le cas où les outilsembarqués ne fonctionnent pas. Même sicette situation ne s’est pas présentée dansmes tests, il est utile de savoir où trouver cetype de conseil. Des explications sontdonnées dans les cas où les projets :u ne s’exécutent pas, car des fichiers sont

introuvables ;u ne peuvent être générés, car ils

contiennent des références incompatibles. Dans les deux cas, il s’agira d’ouvrir le fichierdu projet dans un éditeur de texte et detrouver les références à des versions deVisual Studio ou au framework(réciproquement) puis de corriger à la main. Au travers de mes différentes expériencesprofessionnelles, j’ai eu l’occasion d’utiliserles versions 2005 et 2008 : le cheminparcouru depuis ces versions est immense.Bien entendu, un utilisateur venantdirectement d’une de ces deux dernièresversions (ou même de la version 2010) pourrase sentir un peu perdu par le design oul’organisation. Cependant, on est clairementdans la continuité des versions précédentes.Finalement, on peut dire que cette versionvise l’universalité et la polyvalence dans soncontenu tout en facilitant la mobilité desdéveloppeurs et l’accessibilité de leursprojets. L’aspect communautaire est aussitrès fort. En empruntant cette voie, je pense que Visual Studio continuera des’améliorer. p

17

Services Azure

simples, ou 3 heures pour des projets detype « BI ». Le secret consiste simplement àpuiser ces briques dans Azure. Ensuite, ilpeut être intéressant, par exemple d’ajouterdu reporting sur l’état d’avancement desdéveloppements au travers de la briquePower-BI (V2). Ce dernier pointera sur lecube OLAP de VSO. Le schéma ci-contre survole les servicesd’Azure, où chaque icône encapsuleplusieurs fonctionnalités ; ce qui constitue larichesse du Cloud Microsoft : (Fig. 1).Ce foisonnement de fonctionnalités setraduit par un bon positionnement dans lesclassements GARTNER. En effet, Azure estpositionné comme unique Cloud à figurercomme Leader dans les différentes analyses(respectivement IaaS, stockage, PaaS,virtualisation, base de données en tant queservice) : (Fig. 2).Entrer dans le détail de chaque service ci-dessus dépasserait le cadre de cedocument. Dans un contexte DevOps, une offre trèscouramment utilisée est Azure App Service,puisqu’elle permet de créer rapidement desapplications Web et mobiles sur différentesplateformes en mode « DevTest », maisdispose également de mécanismes robustespour déployer en production et assurersimplement un SLA élevé. C’est l’objet duparagraphe suivant.

Des services Azure simplespour assurer le DevTest etDevOps : Azure App ServiceHistoriquement Azure App Service étaitcomposé de plusieurs briques séparées ;Maintenant ces différents éléments sontrassemblés afin de pouvoir réaliser unensemble cohérent de services fédéré autourd’un « Hosting Plan ». Pour le DevTest, onpeut utiliser les offres gratuites ou peuchères d’Azure App Service. Si l’on souhaiteaboutir à un SLA global élevé avec desbackups/restores rapides, une simplequestion d’ajustement de curseur, impliquantun coût supplémentaire, permet d’aboutir à

une version robuste taillée pour laproduction. Créer de tels ensembles peut sefaire sous forme de « templates ». Cettesimplification permet d’accélérer davantagela « vélocité » d’une équipe puisqu’elle peutse concentrer sur la « valeur métier » àproduire, et non sur la tuyauterie « PaaS »qui est prise en charge par Microsoft.D’ailleurs, la communauté Open Source metà disposition de nombreux « Azure ResourceGroup Templates ». (Fig. 3).Un simple clic dans GitHub ouvre le portailAzure et instancie ce template : (Fig. 4).Ensuite, passer du mode « Dev » au mode« Production » est facilité et sans surprise,puisque le template a été utilisé à denombreuses reprises en Dev et dans l’usinelogicielle. Au sein d’Azure, l’offre Azure AppService se compose de quatre briques :u Les Applications Web ou « Azure Web

Apps »,u Les Mobile Apps,u Les API Apps,u Les Logic Apps.Le premier permet de déployer du codesans se soucier de la plateforme, fournie etgérée par Microsoft, d’où le terme de« PaaS » (Platform as a Service) pour vos

Fig.1

Fig.2

Fig.3 Fig.4

18

Services Azure

applications Web. Aussi, est-il possible deréellement coder en PHP, en Java, en .Net,avec AngularJS,… et de déployer le codeselon le moyen privilégié (Visual StudioOnline-GIT, Github, Dropbox, FTP, upload defichier…). Il ne reste plus qu’à choisir sesoptions en quelques clics : hautedisponibilité « Always On », « BackupWebApp + Base de données », version dePHP, Web Socket ou non, … (Fig. 5).Le second service concerne lesApplications Mobiles. On pourrait sedemander la légitimité de cette brique, maisà y regarder de plus près, desproblématiques récurrentes de coder desCRUD dans les Web API, de « PushNotifications » sur de l’iOS, mais aussi sur del’Android, ou encore en natif sur WindowsPhone sont prises en charge, et lacomplexité est encapsulée.Le troisième service répond à denombreuses problématiques liés à la mise enproduction de rEST API, comme les aspectssécurité, la mise à l’échelle des REST API, lemonitoring, la documentation, où le bon« vieux » SOAP et son WSDL étaient bienpratiques. Ici, les API seront protégées parun proxy et authentifiées au travers d’unmécanisme de Token-based-SSO, reposantpar exemple sur Azure Active Directory,comme Identity Provider.Le quatrième et dernier service propose des

briques de logiques « visuelles » toutesfaites, qui permettraient, par exemple, de seconnecter à Salesforce et de réaliser destraitements selon des workflows spécifiques.(Fig. 6).Salesforce n’est qu’un exemple d’ouverturede Microsoft. Les problématiques B2B(Business to Business) et EAI (EnterpriseApplication Integrator) sont simplifiées,qu’elles soient « Cloud » comme Salesforce,ou « On Premise » afin de laisser vosdonnées dans votre SI. Pour ce faire, desconnecteurs fournis en standards sontdisponibles, dont voici un extrait : (Fig. 7).

Bien débuter avec les crédits AzureL’utilisation de la plateforme Azures’apparente à la consommation d’untéléphone portable : le fournisseur proposeun crédit à utiliser et le décompte se fait àl’usage. Du coup, les économies sontimmédiates : une ressource n’est facturéeque si elle est utilisée, contrairement à uneferme de serveurs physiques ; qu’ils soientou non utilisés, cesderniers sont ouseront à payer. Il existe plusieurstypes de créditsAzure :

u Version d’essai gratuit 30 jours :Microsoft vous met à disposition un créditde 170 € dans ce laps de temps. Enchoisissant des services gratuits,l’enveloppe des 170 € sera encore moinsimpactée. Aussi, allez — vous pouvoirtester des environnements complets avecdes scénarios de bout en bout,

u Souscription MSDN : Contient 11 To delogiciels Microsoft auxquels s’ajoutenotamment un accès à la plateformeAzure. Vous disposez de 45 €, 85 € ou130 € de crédits selon les abonnements,respectivement VS Professionnel avecMSDN, MSDN Platforms et VS Entrepriseavec MSDN. Dédié aux développeurs,MSDN dispose également d’un autreavantage : le coût des ressources Azureest proposé à un tarif préférentiel. Parexemple, avec 130 € il sera possible deconsommer plus d'Azure qu’avec unabonnement non MSDN, permettant ainside réaliser de nombreux tests et démosclients (il est interdit d’utiliser les licencesen production),

Fig.5

Fig.6

Fig.7

19

Services Azure

u Paiement « Pay-as-you-go » : en tantque particulier ou entreprise, ce moyenest pratique à court terme pour dépanneret utiliser rapidement Azure. Il suffit desaisir son N° de carte bleue, et pour éviterles désagréments de date d’expiration decartes CB, il est aussi possible de choisirdes prélèvements automatiques,

u Pour les Start-ups : de 4 175 € à 49 000 €de ressources offertes pour aider les start-ups,

u Contrats d’entreprise « en volume » :Pour bénéficier de tarifs préférentiels parrapport au tarif public, il est requis deréaliser une projection de ce que l’on vapayer en 3 ans, avec des« resynchronisations des montres » tousles ans. Cela permet de réaliser deséconomies, de bénéficier d’avantagesMicrosoft, d’un portail Web dédié pouradministrer Azure à l’échelle d’un grandgroupe, d’un support de proximité et detarifs préférentiels et contractuellementgarantis, et enfin d’accéder à différentsdocuments techniques ou juridiquesconcernant la plateforme Azure.

En comprenant le modèle de licences et lesavantages du Cloud, des économiesconsidérables peuvent être réalisées grâceau Cloud Azure.Prenons le cas réel d’une société qui paye undemi-million d’euros en licences hors coûtdes plateformes virtualisées. Afin de fiabiliserles développements, une plateforme deDevTest (et à terme DevOps) est envisagée.

Or, cela implique la création à la volée denombreux environnements éphémères detests, d’intégration et de recette. Parconséquent, certaines licences, comme cellesdes bases de données ORACLEentraîneraient des coûts astronomiques, dufait des contraintes actuelles de licensing.Cependant, puisqu’Azure repose sur unmode de « paiement à l’usage », etpuisqu’ORACLE a réalisé des accords avecMicrosoft, la solution la plus rapide et la pluséconomique consiste à monter tout cela surAzure, si le projet le permet : le coût deslicences est alors directement intégré (si onle souhaite) à la location des VM éphémères.Ainsi, dans la limite d’un quota fixé, etdepuis Visual Studio, les développeurs sont àmême de déployer et tester rapidement leurcode, sans passer par des lourdeurs dedemandes de provisionning de VM.

Focus sur VSO : comment bien débuter ?Visual Studio Online (VSO) fait partie desnombreux services fournis par la plateformeAzure. (Fig. 8).Il est possible de s’authentifier de façonsécurisée, soit via un compte « MicrosoftAccount » (ex. « Live ID »), soit via un« Corporate Account » c.-à-d. un compteActive Directory d’entreprise (Azure AD),pour peu que vous utilisiez le fournisseurd’identité Azure Active Directory ou celuid’Office 365 (qui repose en fait sur AzureAD). Considérons la société Contoso. Son

compte VSO serait accessible depuis l’URLcontoso.visualstudio.com ; un utilisateur s’yconnecterait via SSO avec votre Login/motde passe d’entreprise habituel, [email protected]

(Intérêt d’Azure AD vs Microsoft Account :par exemple, si un salarié quitte l’entrepriseou si une politique d’expiration de mot depasse est active sur votre AD, la propagationsera également effective sur VSO, via AzureAD).

Bien débuter avec le DevTest : simplicité etencapsulationLe portail d’administration Azure comporte àce jour 29 rôles (Owner, Contributor,Reader,...) ; cela permet, par exemple, auservice marketing de n’accéder qu’en lectureseule à une sous-partie du projet Azure, sansavoir les autorisations de détruire des VMs,ni de visualiser les rapports d’audittechniques (Application Insights). En outre,cela permet de séparer les coûts et deventiler les budgets. (Fig. 9).

Les développeurs vontpouvoir étendre leurenvironnement de

développement dans le Cloud en quelquesclics, et parfois même entièrement depuisVisual Studio. En effet, Microsoft a rendusimple l’usage d’Azure (avec ou sans VisualStudio). Prenons le cas classique de créationd’une application Web ; rappelons queVisual Studio peut ajouter les bonsexécutables et configurer le projet afin d’enréaliser un monitoring précis via« Application Insights ». Pour cela, il suffitde préciser le login adéquat vers Azure. (Fig. 10).Cette simplicité s’applique également auxressources IaaS, qui sont pourtantintrinsèquement plus complexes à utiliserque des services PaaS. En effet, Microsoft aencapsulé ces notions afin que ledéveloppeur puisse se concentrer sur sontravail et non sur les subtilités du Cloud.D’autant plus que, parfois, ces notions sontpeu maîtrisées. L’image (Fig. 11) illustre quele développeur peut déployer son code surAzure, que ce soit sur une Web App (PaaS)Fig.8 Fig.9

Fig.10

Fig.11

Cependant, vous perdrez en « liberté »,car ces services ont déjà été développéset testés pour vous,

u Plus le curseur est orienté vers la gaucheen direction du IaaS, plus le degré deliberté à configurer sera important, maisplus le temps de maintenance sera long,ce qui représentera un coût plusimportant en production. Par ailleurs, il estconnu que le coût réel d’une applicationn’est pas localisé dans la phase dedéveloppement, mais dans la phase deMCO « Maintien en ConditionOpérationnelle », puisque ce dernier dureen principe des années.

Pour concevoir et réaliser des applicationsrobustes, suivons les recommandationssuivantes : « Privilégier au maximum lesservices PaaS pour économiser etsimplifier le Dev et la Prod, et choisir leIaaS si et seulement si son équivalentPaaS ne propose pas assez depersonnalisations ». Ainsi nombred’applications sont actuellement enproduction avec une architecture idéale en« Always On » induisant un haut SLA, sanstoutefois avoir passé plusieurs mois à« réinventer la roue ». Oui, il restera desscripts d’automatisation à réaliser, complétéspar les fonctionnalités de « auto-healing »du Cloud : à la manière d’un satellite enorbite, lorsqu’il est endommagé de façonimprévisible par des débris, cependant lesatellite bien conçu pourra se recolmatersans intervention humaine afin de reprendredu service.

Ouverture des servicesMicrosoft AzureAfin de promouvoir cette ouverture vers denombreux services et surtout permettre auxutilisateurs de modéliser leurs besoins,Microsoft réalise de nombreux partenariats.Certains sont parfois même surprenants dansles cas de concurrents historiques. Citons 3exemples d’ouverture :u Ouverture du Cloud Azure : Sur des

projets d’ampleur, il est courant de mêlersur Azure : du Docker + ApacheCassandra + ASP.NET Web API + ApacheRedis Cache + VSO + Jenkins + ORACLEdatabase + Bus TIBCO…

u Ouverture de Visual Studio : Prise encompte du fait que tous les développeursne travaillent pas en environnementMicrosoft, comme les développeursHTML5, NodeJS, AngularJS, … aussi, lastructure des projets a été entièrementrevisitée en ASP.Net 5, permettant ainsi àtous les développeurs d’ouvrir des projetsavec leurs outils non-Microsoft auxquelsils sont habitués,

u Ouverture du code source : Denombreux frameworks ont été rendusouverts. Par exemple, Entity Framework,ou encore l’ASP.NET 5, où ce dernier subiten ce moment même des améliorationsconsidérables. Cette vitesse dedéveloppement est déroutante dans lemonde Microsoft ; aussi, comme toutproduit Open Source, des « BreakingChanges » nombreux et nécessaires sontprésents en début de vie du produit.

Pour que tous ces différents servicespuissent interagir entre eux et s’emboîter àla manière de Legos, Microsoft a misé surdes standards reconnus et bien établis(OpenID Connect, OAuth 2.0, SAML 2.0 …).C’est ainsi que le liant à tout cela repose surde nombreux Web API protégés par leToken-based SSO (Single Sign On). Celui deMicrosoft est nommé Azure ActiveDirectory (Azure AD) ; cela dit toutfournisseur d’identités compatibles avec cesstandards fera l’affaire. L’avancée du sujet Token-based SSO estconsidérable, poussée par de nouveauxusages :u Le BYOD (Bring Your Own Device), u La mobilité avec des « modes

déconnectés », u Les éditeurs tiers proposent de plus en

plus d’applications en mode SaaS, Par conséquent, les DSI investissent de plusen plus sur la mise en place d’un nouveausystème de SSO pour permettre cetteouverture vers le monde ; l’actuel étant soittrop souvent limité à l’intranet, soit peusécurisé sur Internet, soit non synchroniséavec leur annuaire LDAP.

Pour aller plus loin enDevOpsLe sujet du DevOps est vaste ; cependant,l’infime partie évoquée précédemmentpermet déjà d’être opérationnel en DevTesten quelques heures. Il reste cependantnécessaire :u de comprendre les subtilités des

architectures distribuées,u d’en maîtriser les bonnes pratiques (de

type public cloud, private cloud ouhébergement classique),

u quelques particularités de la plateformeAzure.

Donc, ce monde où la complexité du Cloudest encapsulée replace le produit et lebesoin du client au centre d’une DSI agile etréactive. Bon DevOps avec VS 2015 etMicrosoft Azure ! Et n’oubliez pas, l’outillagene fait pas tout. La réussite d’unetransformation DevOps passe également parla gestion du changement, et lesméthodologies et processus robustes. p

ou une Virtual Machine (IaaS).Cette encapsulation de complexité estégalement applicable à VSO, ce quiéconomise des heures, voire des joursd’installations et de configurations demachines de Builds, de réinitialiser des IIS,gérer des notifications … (Fig. 12).Pour cela, pas besoin de quitter VisualStudio, l’administration basique d’Azure estdirectement intégrée dans la « View »nommée « Server Explorer ».

Pour implémenter le DevTestou DevOps, quel composantcloud choisir ? Les limites entre IaaS et PaaS sont parfoisfloues ; en conséquence, Amazon, Google etMicrosoft n’ont pas exactement la mêmeimplémentation. De plus, même au sein de l’offre Microsoft, ilsera possible de trouver plusieurs moyensd’héberger son application en PaaS : AzureWeb App et les Web Roles/Worker roles.Tout va dépendre des performances, du SLA,des coûts souhaités.Alors comment s’y retrouver, surtout avec lenombre considérable de services sur laplateforme Azure ? Sans entrer dans le détailde tous les composants (plus de 500nouveautés par an), voici lesrecommandations générales :D’une part, il est nécessaire de maintenir sonniveau de connaissance en Cloud, qu’il soitAzure ou non, en pratiquant les conceptsreposant sur les principes d’architecturesdistribuées. Aussi, lors de la réalisationd’applications « business critical », différentstypes d’architectures comme les« lambda architectures », le CQRS … ou lesconcepts clefs comme l’idempotence ou le« retrial policy » seront évalués. D’autre part,il est recommandé de connaitre leclassement suivant : IaaS – PaaS – SaaS. u Plus le curseur tend vers la droite en

direction du SaaS, plus les services serontsimples à utiliser, avec de nombreusesoptions gratuites ou payantes incluses.

20

Services Azure

Fig.12

21

Windows 10

Teddy DESMASDaniel DJORDJEVICMichaël FERYConsultants Infinite Square

Développer pour Windows 10Avec la sortie de Windows 10, les développeurs peuvent désormais s’amuser avec le nouveau WindowsSoftware Development Kit (SDK) pour le nouveau système d’exploitation. Un nouveau SDK implique denouvelles fonctionnalités, et le SDK Windows ne déroge pas à cette règle. Ce SDK permet de réaliser desUniversal Windows Platform (UWP) apps, comprendre ici applications universelles pour les familles dedevices Windows 10 : Windows Desktop, Windows Mobile, Windows IoT, Xbox…

Le concept d’application universelle est une notion très présente denos jours. Nous avons l’exemple avec les applications universellesWindows 8.1 et l’envie de permettre au développeur de partager soncode métier entres les différentes plateformes, tout en développantdes vues spécifiques pour celles-ci. Chaque famille apporte son APIspécifique en plus de l’API commune, pour pouvoir offrir àl’utilisateur une expérience plus adaptée en fonction du deviceutilisé. (Fig. 1). C’est dans cet esprit universel que le développeurd’applications Windows 10, avec cette notion de mise en commun dela logique métier, peut utiliser les nouveaux concepts, outils etcontrôles fournis par ce nouveau SDK.

Windows 10 et le XAMLLe développement d’applications Windows 10 cible de nombreuxdevices, c’est pourquoi il faut, plus que jamais, se préparer àdévelopper des interfaces utilisateurs pour de nombreux formats.C’est pourquoi nous disposons maintenant de nouveaux contrôles etéléments qui vont permettre aux développeurs de fournir uneexpérience user-friendly, quel que soit le périphérique sur lequell’utilisateur est, que ce soit sur téléphone, tablette, ou des écransplus larges. D’une manière générale, on peut constater que le XAMLs’oriente vers un format plus clair, en essayant de gommer lesfioritures du langage, afin de pouvoir écrire un XAML moins verbeux,et plus simple à comprendre, sans s’y perdre.

relativePanel, un peu de fraîcheur dans notre XAMLParmi les nouveaux contrôles, notamment de type conteneur, nousavons maintenant le RelativePanel. Depuis de nombreuses années,Grid, Canvas, StackPanel, ScrollViewer et compagnie ont pour tâched’agencer les différents éléments des vues de nos applications.Dorénavant, une nouvelle façon d’organiser son contenu est à notredisposition. Le nom du contrôle en dit beaucoup sur son principe : larelativité. (Fig. 2).En effet, ce nouveau contrôle dispose les éléments en déclarant desrelations entre ses enfants. C’est-à-dire que l’on va pouvoirpositionner un élément A à droite d’un élément B, ce qui signifie quele déplacement de l’élément B entraînera le déplacement del’élément A, celui-ci étant toujours positionné à la droite de B.Cette nouvelle façon de penser semble intrigante à première vue,mais cela offre réellement de nombreuses possibilités une fois qu’on

s’est habitué à son fonctionnement. C’est avec plus de 16 AttachedProperties que l’on peut positionner les enfants du RelativePanelentre eux, mais aussi entre le RelativePanel lui-même et un enfantparticulier, voyons un peu comment cela se passe au niveau du code.

On s’aligne vis-à-vis du relativePanelTout d’abord, on déclare notre RelativePanel et on y ajoute unélément sans rien lui spécifier.

Code :<RelativePanel><Rectangle x:Name="Rect1" Width="50" Height="50" Fill="Crimson"/>

</RelativePanel>

Résultat :On observe un comportementplutôt normal, l’élément vient seplacer tout en haut à gauche duRelativePanel. (Fig. 3)Vous pouvez jouer avec 6différentes propriétés pour agencervos enfants en fonction du Panel :

<Rectangle RelativePanel.AlignVerticalCenterWithPanel="True"RelativePanel.AlignHorizontalCenterWithPanel="True"RelativePanel.AlignRightWithPanel="True"RelativePanel.AlignLeftWithPanel="True"RelativePanel.AlignTopWithPanel="True"RelativePanel.AlignBottomWithPanel="True"/>

Agencement entre élémentsC’est l’essence même du RelativePanel, on est toujours sur desAttached Properties comme pour le RelativePanel, cependant, à laplace du booléen, il est cette fois-ci nécessaire de spécifier l’élémentrelatif à l’action. On a donc par exemple :

Code :<RelativePanel><Rectangle x:Name="Rect1" Width="50" Height="100" Fill="Crimson"

RelativePanel.AlignHorizontalCenterWithPanel="True"

Fig.1

Fig.2

Fig.3

RelativePanel.AlignVerticalCenterWithPanel="True"/>

<Rectangle x:Name="Rect2" Width="50" Height="50" Fill="CadetBlue"RelativePanel.AlignVerticalCenterWith="Rect1"/>

</RelativePanel>

Résultat : (Fig. 4)Ici, on a notre rectangle bleu(Rect2) qui va s’alignerverticalement avec le rectanglerouge (Rect1). Supposons que dans notredéveloppement, nous changeonsd’avis, et nous voulons que lerectangle bleu soit à la même hauteur que le rectangle rouge, nousavons juste à remplacer le AlignVerticalCenterWith par AlignTopWith.On peut donc jouer avec les propriétés suivantes :

<Rectangle x:Name="Rect2" Width="50" Height="50" Fill="CadetBlue"RelativePanel.AlignHorizontalCenterWith="Rect1"RelativePanel.AlignVerticalCenterWith="Rect1"RelativePanel.AlignLeftWith="Rect1"RelativePanel.AlignRightWith="Rect1"RelativePanel.AlignTopWith="Rect1"RelativePanel.AlignBottomWith="Rect1"/>

Cependant, la puissance du RelativePanel ne s’arrête pas là. Outrel’alignement des enfants, on peut aussi définir une position.

LeftOf, rightOf, Above, BelowLes propriétés étant assez explicites, voyons immédiatement ce quise passe en spécifiant LeftOf et Above sur notre rectangle bleu(Rect2) :

Code :<Rectangle x:Name="Rect2" Width="50" Height="50" Fill="CadetBlue"

RelativePanel.LeftOf="Rect1"RelativePanel.Above="Rect1"/>

Résultat :En reprenant les exemplesprécédents, le rectangle bleu (Rect2)va venir se coller au-dessus durectangle rouge (Rect1). Cela vanous permettre ainsi de gérer despositions en même temps que desalignements dans notre vue. (Fig. 5)Le RelativePanel est un contrôle qui apporte un peu de fraîcheur ànotre architecture XAML, mais là où il va exceller, c’est dans cetteoptique d’unifier la vue, où l’on va pouvoir définir nos différentspositionnements et alignements pour telle ou telle vue.

AdaptiveTrigger, adaptons notre vueEn tant que développeur d’applications Windows Phone et WindowsStore, vous avez probablement eu affaire au VisualStateManagerpour manipuler votre vue en fonction de la taille de la fenêtre, pourgérer le snap de Windows 8.1. Cependant il fallait s’abonner àl’évènement SizeChanged de la Frame de l’application, puis changerl’état soi-même grâce à la méthode GoToState duVisualStateManager.Tout d’abord, il n’est plus obligatoire de définir une animation pourchaque état de son VisualStateManager, car celui-ci supporte

22

Windows 10

maintenant les Setters, cela nous permet d’avoir, encore une fois, unXAML moins dense.Prenons un exemple classique : on désire avoir un label à gauched’une TextBox lorsqu’on dispose d’assez d’espace en longueur, etavoir le label au-dessus de la TextBox lorsque l’espace est restreint.En somme, on aimerait avoir un formulaire responsive, voici unexemple avec le ResponsivePanel :

<Grid x:Name="LayoutRoot" Background="White"><VisualStateManager.VisualStateGroups>

<VisualStateGroup><VisualState x:Name="NormalState">

<VisualState.StateTriggers><AdaptiveTrigger MinWindowWidth="800" >

</VisualState.StateTriggers>

<VisualState.Setters><Setter Target="TxtBox.(RelativePanel.RightOf)"

Value="Label"/></VisualState.Setters>

</VisualState>

<VisualState x:Name="SpecialState"><VisualState.StateTriggers>

<AdaptiveTrigger MinWindowWidth="0" /></VisualState.StateTriggers>

<VisualState.Setters><Setter Target="TxtBox.(RelativePanel.Below)"

Value="Label"/></VisualState.Setters>

</VisualState></VisualStateGroup>

</VisualStateManager.VisualStateGroup>

<RelativePanel Padding="24"><TextBlock x:Name="Label" Text="Label" /><TextBox x:Name="TxtBox" Background="Blue" />

</RelativePanel></Grid>

On définit ici que le VisualState « NormalState » est utilisé lorsque laWidth est supérieure à 800 avec :

<VisualState.StateTriggers><AdaptiveTrigger MinWindowWidth="800" />

</VisualState.StateTriggers>

Dans cet état-là, nous avons assez d’espace, donc nous utilisons lapropriété RelativePanel.RightOf pour indiquer que la TextBox doit sepositionner à la droite du Label.

<Setter Target="TxtBox.(RelativePanel.RightOf)" Value="Label"/>

Dans le cas contraire, si nous disposons d’une Width inférieure à 800,l’autre VisualState « SpecialState » est déclenché, et c’est donc lapropriété Below qui est utilisée. Cet exemple est relativement simple,mais montre bien que l’AdaptiveTrigger va devenir essentiel audéveloppement d’applications responsives, afin d’avoir un affichageadapté à chaque format d’écran.

SplitView, un panneau latéralParmi ces nouveaux contrôles XAML, nous avons dorénavant lapossibilité d’utiliser une SplitView dans nos applications. L’objectif dece contrôle est de permettre au développeur d’intégrer la gestion

Fig.4

Fig.5

d’un panneau latéral dans son application. Attention tout de même,ce n’est pas un Hamburger menu intégré et déjà prêt à l’utilisation.Si vous désirez un Hamburger menu authentique, il va falloircombiner la SplitView avec un bouton qui va manipuler la SplitView,rien de bien compliqué en soi ! Nous avons donc le SplitView.Pane qui regroupe les différents menusde l’application, la gestion du profil, les paramètres, par exemple.Puis le SplitView.Content qui, comme son nom l’indique, va accueillirla page de contenu.

<SplitView><SplitView.Pane>

// Le menu latéral</SplitView.Pane><SplitView.Content>

// Le contenu</SplitView.Content>

</SplitView>

Pour manipuler notre SplitView, pas de secrets, certaines propriétéssont indispensables. La propriété IsPaneOpen permet d’ouvrir/fermer votre menu.PanePlacement, qui peut être égal à Left ou Right, détermine le côtépar lequel le menu apparaît, et OpenPaneLength, la taille qu’ilprend. La propriété DisplayMode vous permet de choisir entreplusieurs types d’affichages différents, on va pouvoir déplacer lecontenu de la page pour faire apparaître le menu, ou toutsimplement placer le menu au-dessus du contenu.Ce nouveau contrôle permet au développeur de mettre en place desmenus plus aisément, et ainsi offrir la meilleure expérience utilisateurpossible, d’un point de vue ergonomique et dynamique.

Une vue différente pour chaque type d’écransNous avons vu que l’AdaptiveTrigger est très utile lorsqu’on souhaitefaire du responsive, cependant, en réalité, il est souvent nécessairede développer une UI complètement différente pour chaque famille(Desktop, Mobile, Xbox, IoT, etc.), et donc par conséquent obtenir unfichier XAML très imposant.C’est pourquoi il est dorénavant possible de créer des vuesspécifiques pour une famille. Prenons l’exemple du célèbreMainPage.xaml : nous avons notre MainPage.xaml à la racine denotre projet, celui-ci va être le XAML standard. Supposons ensuiteque nous voulons un design particulier sur Windows Mobile. Il noussuffit de créer le dossier suivant : DeviceFamily-Mobile et d’y ajouterune vue XAML avec le même nom : MainPage.xaml.

Ainsi, lorsqu’on affiche cette vue sur Windows Mobile, c’est le fichierprésent dans DeviceFamily-Mobile qui est utilisé, et non celui présentà la racine du projet. Les développeurs ont désormais toutes lescartes en main pour pouvoir implémenter des vues adaptées àtoutes les familles, tout en gardant une logique commune, unique.

Et si l’on parlait IoTDepuis plusieurs années, on assiste à l’essor des cartesprogrammables permettant aux bidouilleurs de fabriquer des objetsconnectés simples ou de prototyper des objets complexes.Pour Microsoft, cela signifie que l’universalité de leurs applicationsdoit devenir concrète et s’étendre jusqu’aux objets connectés.Microsoft adopte le mouvement Maker et ne le fait pas à moitié.(Fig. 6)

Windows 10 IoT CoreFort du succès de cette démarche d’applications universelles nenécessitant qu’un seul développement (un seul et même code) pourcibler toutes les plateformes, Microsoft pousse jusqu’à inclure lesmini-ordinateurs et cartes programmables dans la partie. Une versionWindows 10 IoT Core est née pour satisfaire ces besoins spécifiques.Similaires aux cartes Arduino, les cartes Raspberry Pi 2, Galileo ouMinnowboard Max ont désormais leurs propres versions de Windows10 leur permettant également de faire fonctionner les mêmesapplications que leurs grandes sœurs.

Universal AppsComme nous le disions, Microsoft a pris les choses au sérieux etfournit l’intégration complète du développement sur cesplateformes. Créer une app pour IoT Core revient à créer un nouveauprojet Windows 10 ou Universal Windows Platform comme un autre.Pour cela, Windows10, Visual Studio 2015 et le Windows 10 SDK sontnécessaires, mais tous disponibles gratuitement.Quelques nouveautés seront par contre bien utiles selon le contextede projet IoT comme les modes « Headed » et « Headless »permettant à Windows 10 de fonctionner sur des machines avec ousans écran. En mode Headed une seule application avec UI pourrafonctionner à la fois alors qu’en mode Headless, les backgroundsapps auront la part belle. Vos applications Windows 10fonctionneront sans problème sur ces petits appareils mises à partcertaines limitations spécifiques, mais la majeure partie desapplications n’auront aucun mal à tourner et ne nécessiteront aucundéveloppement supplémentaire. En revanche, vous pourrez ajouterdes fonctionnalités à vos applications s’exécutant sur ces

23

Windows 10

Fig.6

plateformes, en utilisant le SDK Windows 10 IoT Core. Celui-ci estdisponible sous forme de package NuGet gratuit et offre à nosapplications Windows 10 les fonctionnalités supplémentaires d’accèsaux entrées/sorties des broches d’un Raspberry Pi 2 ou toute autrecarte compatible. (Fig. 7)

Développez dès maintenantPour commencer à développer pour ces plateformes vous devrezinstaller Windows 10 Iot Core sur votre machine cible et développerdepuis un PC sous Windows 10 avec Visual Studio 2015.Vous trouverez toutes les étapes nécessaires à vos premiers pas surle site (http://www.windowsondevices.com).

ArduinoWindows 10 devient le premier système “Certifié Arduino”. Le partenariat annoncé avec Arduino se traduit par une intégrationtrès profonde de la stack IoT de Microsoft avec Arduino.

Windows remote ArduinoL’idée est de s’appuyer sur les capacités de la plateforme Arduino àgérer le hardware en lui proposant une communicationbidirectionnelle, depuis ou vers les applications Universal WindowsPlatform. La couche d’accès aux BDD ou au réseau pourrait ainsi êtredéléguée aux app Win10 et les interactions hardwares aux cartesArduino dans des scénarii IoT beaucoup plus completsqu’aujourd’hui.La communauté Arduino étant énorme, ce partenariat peut être unvéritable essor pour l’intégration des app Windows 10.

Windows Virtual Shield for ArduinoL’aspect le plus marquant de ce partenariat est la possibilité de créerdes Shields virtuels pour Arduino. Ici ce sont les devices tournantsous Windows 10 qui sont au service des cartes Arduino enpermettant à celles-ci d’accéder aux capacités matérielles et auxcapteurs du device Win10. Par exemple, l’accéléromètre ou le GPS devotre téléphone peuvent être utilisés sur votre Arduino comme sivous aviez monté des Shields spécifiques. Cette intégration auxcouches IoT est tout simplement bluffante tant au niveau techniquequ’au niveau philosophie d’ouverture de la plateforme Windows.

Allons plus loinPour trouver des idées de projets ou tout simplement s’émerveillerdevant la créativité technologique de certains, vous pourrez parcourirles exemples de code mis à disposition sur la plateforme hackster.ioet ainsi découvrir l’étendue des fonctionnalités disponibles :https://www.hackster.io/windowsiot

Les nouveautés côté codeAvec l’arrivée des applications Universal Windows Platform, desnouveautés côté code font également leur apparition. Nous allonstout de suite découvrir les principales.

Nouveauté d’accès à Windows viaWindows.System.LauncherAvec Windows 8.1, il était possible d’ouvrir des fichiers ainsi que desURL à partir de l’application en utilisant les méthodes proposéestelles que LaunchFileAsync, LaunchUriAsync. Windows 10, de par sonSDK, nous propose de nouveaux accès aux fichiers, dossiers.

Ouvrir des dossiers (LaunchFolderAsync)La méthode LaunchFolderAsync(https://msdn.microsoft.com/library/windows/apps/windows.system.launcher.lau

nchfolderasync.aspx) fait son apparition, elle permet de demanderl’ouverture d’un explorateur de fichier vers le dossier spécifié.Cependant, comme pour l’ouverture de fichier, des restrictions sontmises en place. Il est donc parfois nécessaire de spécifier ce dossierdans le Manifest de l’application (via les Capabilities), pour obtenir ledroit d’interagir avec.

Ouvrir des paramètres natifs (LaunchUriAsync)La méthode LaunchUriAsync(https://msdn.microsoft.com/library/windows/apps/windows.system.launcher.launchuriasync.aspx), utilisée pour ouvrir une adresse internet est étendue.Cette méthode qui permet d’ouvrir des URL peut être couplée aunouveau protocole (ms-settings) pour afficher les paramètres natifsde Windows 10 depuis votre application. C’est idéal pour des scénarii où votre application nécessite unenvironnement précis, pour ainsi guider l’utilisateur dans laconfiguration de celui-ci. Voici un exemple pour ouvrir l’écran degestion du WiFi sous Windows 10 :

var success = await Launcher.LaunchUriAsync(new Uri("ms-settings:network-wifi"));

Le protocole « ms-settings » expose de nombreuses pages deparamètres, une liste est disponible sur MSDN(https://msdn.microsoft.com/fr-fr/library/windows/apps/xaml/Dn741261.aspx).

Communication entre applicationsSous Windows 8.1, notamment dans des scénarii d’entreprise, nousétions amenés à faire communiquer nos applications Windows 8.1avec d’autres applications de l’environnement. Mais les solutionsétaient minces et très limitées. Une des solutions utilisée par défautest de passer par le « partage de fichier », en créant et enremplissant un fichier avec les données à échanger et en demandantà Windows de l’ouvrir. Cependant, ce procédé a ses limites :u parfois Windows n’autorise pas l’ouverture de l’application, u l’application recevant le fichier ou le protocole doit être

configurée pour pouvoir les lire (parfois un développementsupplémentaire est nécessaire),

u et surtout, le dialogue ne se fait que dans un sens ! (nous nepouvons pas avoir de retour de l’application appelée).

Échanger des données entre applications(LaunchUriForresultsAsync)Avec « App-to-App », Microsoft nous met à disposition une vraiemanière de dialoguer avec une autre application de l’environnementutilisateur. « App-to-App » nous permet de résoudre les limites quenous avions avec la méthode précédemment évoquée. Ceci passenotamment par l’utilisation d’un protocole personnalisé (dans

24

Windows 10

Fig.7

l’exemple nous utiliserons le protocole infinitesquare) pour dialoguerentre les applications. Prenons l’exemple suivant :u une application « A », qui joue le rôle de « client »,u une application « B » qui joue le rôle de « serveur »,u l’application « A » va communiquer avec l’application « B » (les

deux doivent être configurées).

Configuration du « serveur » BDans l’application « serveur », il faut spécifier dans son Manifest (dansl’onglet déclarations) qu’elle peut répondre à un protocole défini, enrenseignant le nom et le type de retour (sans, avec ou parfois). Côtécode, il faut surcharger la méthode OnActivated dans le fichierApp.xaml.cs pour obtenir les arguments passés lors de l’appel et fairele traitement adéquat. Dans mon exemple, je fais ce traitement dansma MainPage, c’est pourquoi je lui transmets les arguments.

protected override void OnActivated(IActivatedEventArgs args){Frame rootFrame = Window.Current.Content as Frame;

// Créer la frame si elle n'est pas encore définieif (rootFrame == null){

rootFrame = new Frame();Window.Current.Content = rootFrame;

}

// Obtention des arguments passés lors de l'appelvar protocolForResultsArgs = (ProtocolForResultsActivatedEventArgs)args;

// Transfert des arguments à la MainPagerootFrame.Navigate(typeof(MainPage), protocolForResultsArgs);

Window.Current.Activate();}

Et dans la méthode OnNavigatedTo de la page MainPage, j’effectuele traitement :

protected override void OnNavigatedTo(NavigationEventArgs e){// Obtention des arguments passés depuis le App.xaml.csvar protocolForResultsArgs = e.Parameter as ProtocolForResults

ActivatedEventArgs;

if (protocolForResultsArgs == null)

{return;

}

// On définit l'objet stockant les valeurs à retournervar result = new ValueSet();

// Si les arguments transmis contiennent celui que l'on attendif (protocolForResultsArgs.Data.ContainsKey("Request")){

string dataRequest = protocolForResultsArgs.Data["Request"] as string;

if (dataRequest == "Est-ce que tu m'entends ?"){

// On définit une réponseresult["Response"] = "Hey ho !";

}}

// On termine l'opération et on retourne le résultatprotocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted

(result);}

Appel à l’application B dans l’application A et exploitation du résultatDans l’application « client », il faut ici configurer la communication àl’application « Serveur ». Il suffit de connaître quelques informationssur ce qu’attend l’application « Serveur » :u le PackageFamilyName (présent dans le manifest),u le nom du protocole,u les clés utilisées pour l’échange (à l’entrée, mais aussi à la sortie).Dans notre cas, nous avons ces informations de configurationfacilement puisque c’est nous qui les avons définies, mais dans le casd’échange avec une application tierce, nous devrons les obtenir oules fournir à l’autre application.L’appel utilise la méthode LaunchUriForResultsAsync(https://msdn.microsoft.com/en-us/library/windows/apps/dn956688.aspx).Voici comment utiliser cette méthode et échanger des données entre A et B :

var options = new LauncherOptions(){// On définit le PackageFamilyNameTargetApplicationPackageFamilyName = "5f926382-faf0-4039-9847-

e085b01b248d_jsdmg9dqt3zzj"};

25

Windows 10

26

Windows 10

// On renseigne nos données à échangervar inputData = new ValueSet();inputData["Request"] = "Est-ce que tu m'entends ?";

// On lance l'appel avec les donnéesvar result = await Launcher.LaunchUriForResultsAsync(new Uri("infinitesquare://"), options, inputData);

// Si le résultat est positif et qu'il contient ce que l'on attendif (result.Status == LaunchUriStatus.Success &&

result.Result != null &&result.Result.ContainsKey("Response"))

{// On affiche à l'utilisateur le retourvar messageDialog = new MessageDialog(result.Result["Response"].

ToString());await messageDialog.ShowAsync();

}

Il est bon de savoir que Microsoft bride volontairement l’échangedes données entre les applications via ce système à 100ko (la valeurde l’objet dans ValueSet).

Savoir si une application supporte l’appel(QueryUriSupportAsync)La méthode QueryUriSupportAsync (https://msdn.microsoft.com/en-us/library/windows/apps/dn893515.aspx) peut se combiner à la méthodeprécédente, car elle permet de savoir si une application peutrépondre à une demande précise. Cette demande est définie en deuxparties :u son Uri (adresse d’un fichier ou protocole),u son type (Uri ou Uri avec résultat).Cette méthode permet de mieux anticiper l’environnement del’utilisateur et pouvoir l’avertir s’il est nécessaire d’installer un logicieltiers pour profiter au maximum des fonctionnalités que lui met àdisposition l’application Windows 10.

Gestion des modes d’affichage (plein écran, fenêtré,tactile ou non)Les applications Windows 10 s’affichent nativement en mode fenêtréet sont donc « responsives ». Pour offrir une meilleure expérienceutilisateur, il est parfois nécessaire de savoir comment l’applicationest utilisée pour adapter cet usage en fonction. Avec la propriétéUserInteractionMode de UIViewSettings, nous sommes capables desavoir si Windows est utilisé en mode « touch » ou à la souris, grâceà l’énumération obtenue via :UIViewSettings.GetForCurrentView().UserInteractionMode.Nous pouvons également connaître le mode d’affichage del’application (fenêtré, plein écran) et agir sur celui-ci :u entrer en mode plein écran,u sortir du mode plein écran,u définir la taille de la fenêtre de l’application.Pour interagir avec la fenêtre de l’application, nous devons obtenir lafenêtre courante en utilisant la méthode GetForCurrentView(https://msdn.microsoft.com/en-us/library/windows.ui.viewmanagement.applicationview.getforcurrentview.aspx) qui permet d’obtenir la vue active.

Toast NotificationsAvec les UWP, les notifications sont grandement enrichies et peuventdésormais avoir des « actions » utilisateurs.Les notifications sont constituées de 3 parties :

u La partie « Visual » : ici il n’y a qu’un seul template de base quenous pouvons personnaliser en ajoutant/modifiant/supprimantl’icône, des images, du texte … Ce visuel s’adapteautomatiquement aux différentes plateformes (smartphone, PC,tablette, Xbox).

u La partie « Actions » : elle est située en dessous de la partie« Visual » et peut accueillir au maximum 3 boutons de type« Input » et/ou une case de texte pour permettre à l’utilisateurd’interagir avec la notification et donc avec votre application.

u La partie « Audio » : comme sur Windows Phone 8.1, la partieaudio reste inchangée, elle peut jouer un son personnalisé depuisl’application (ms-appx, ms-appdata).

À ceci s’ajoute, le choix du type de notification qui est émis. Ce typepermet à Windows d’interpréter de manière différente la notification(plein écran, son en boucle …). Ce type est appelé « scénario » dans lecode XAML de l’élément racine toast et peut avoir plusieurs valeurspossibles (default, alarm, reminder, incomingCall). En fonction dubesoin, ce type peut être grandement utile pour que l’utilisateur nerate pas la notification lorsqu’elle est émise. Avec toute cettepersonnalisation, l’utilisateur peut effectuer des choix et agir via lanotification avec l’application. Voici quelques exemples d’interactions : u Ouvrir l’application au premier plan avec une action spécifique,u Ouvrir l’application en fond,u Ouvrir une autre application,u Effectuer une action système qui se limite aux alarmes et aux

rappels (pour le moment).

CortanaCortana, la célèbre assistante présente dans Windows 10, peutégalement être utilisée dans vos applications ! En l’intégrant dans notreprogramme, nous donnons la possibilité aux utilisateurs d’interagir aveccelui-ci sans avoir besoin de le lancer. Par le biais de Cortana,l’utilisateur peut effectuer des actions simples avec notre application.Prenons le cas d’un logiciel de réservation d’hôtel, l’utilisateur demandeà Cortana un hôtel proche. Celle-ci pourra lui faire des propositions àpartir des réponses générées par notre programme. Il pourra ensuitealler jusqu’à la réservation sans même avoir ouvert le logiciel ni avoirtouché à son clavier ! De plus, si notre application est paramétrée pourinteragir avec Cortana, celle-ci peut naviguer, effectuer des actions,écrire dans l’application. Les scénarios peuvent être assez vastes. Dansla plupart des cas, Cortana va permettre de gagner du temps, etégalement réduire les efforts de l’utilisateur (rechercher ce dont il abesoin, prendre en main l’application …) Cette nouveauté demande undéveloppement particulier, l’intégration étant assez longue, nousn’allons pas nous y attarder ici. Cependant, les personnes intéressées etqui souhaitent mettre à profit Cortana dans leurs applicationstrouveront la marche à suivre sur MSDN(https://msdn.microsoft.com/library/windows/apps/xaml/dn974230.aspx) p

27

Mobilité

Dans cet article, nous étudierons notammentApache Cordova, les possibilités dedéveloppement en C++ dans la version 2015de Visual Studio, ainsi que les possibilitésoffertes par Xamarin. Nous verronségalement la solution des WindowsBridges permettant de déployer uneapplication iOS ou Android sur lestore Windows.

Apache CordovaApache Cordova est un Frameworkopen source développé par lafondation Apache, permettant decréer des applications mobiles cross-plateformes en utilisant les langagesHTML / CSS / JavaScript. L’idée est depouvoir cibler toutes les plateformesmobiles majeures en développant uneseule application et en s’émancipanten partie des langages natifs commeJava, C#, Objective-C, ou autre. Pourpouvoir interagir avec le device,Apache Cordova met à disposition unensemble d’API JavaScript permettantd’accéder aux fonctionnalités natives,de manière unique quelle que soit laplateforme.

Le principeLe principe est de développer uneapplication Web, en HTML / CSS /JavaScript, et de la packager sous laforme d’une application native. Pourque le rendu de l’application Webs’adapte à tous les devices, il estnécessaire de développer uneapplication Web responsive, parexemple à l’aide du Framework CSS

composant WebView naviguera simplementsur l’application, dont les fichiers (HTML,CSS, JavaScript, font, images, etc.) auront étéembarqués en tant que ressources locales del’application native.

Accès aux fonctionnalités du devicePour pouvoir accéder aux fonctionnalitésnatives du téléphone, l’applicationdéveloppée va pouvoir s’appuyer sur les

plugins Cordova. Un plugin Cordovapermet d’exposer une fonctionnaliténative du device via une APIJavaScript, qui sera utilisable depuisl’application Web. Le rôle du pluginest alors de faire le lien entre l’appelJavaScript et l’exécution du code natif,en fournissant une implémentationpar plateforme. L’interface JavaScriptétant la même pour chaqueplateforme, l’utilisation d’un plugin sefait de manière identique, quelle quesoit la cible.Par exemple, l’accès aux contacts dutéléphone se fait en utilisant le plugin« Contacts », qui expose les fonctionscreate, find et pickContact, permettantrespectivement de créer un contact,de rechercher un contact et d’afficherun composant natif de sélection d’uncontact.Apache Cordova met à disposition unensemble de plugins permettantd’accéder aux fonctionnalités basiquesdu device, comme les notifications, lacaméra, les contacts, l’accéléromètre,etc. D’autres acteurs ont égalementcréé des plugins, y compris Microsoftvia sa filiale « Microsoft OpenTechnology », avec notamment unconnecteur Cordova pour AzureMobile Services, disponibles pour lesplateformes Windows 8, WindowsPhone 8, mais aussi iOS et Android.

Bootstrap. Pour proposer un rendu plus fini,il est également recommandé de créer uneapplication Web de type Single PageApplication (SPA), par exemple à l’aide desFrameworks AngularJS ou KnockoutJS. L’idéeest donc ici d’avoir un seul code métier et undesign unique sur toutes les plateformes.Techniquement, le principe du FrameworkCordova est de créer une application nativecomposée uniquement d’un composantWebView, propre à la plateforme ciblée. Ce

MobilitéLe développement mobile cross-plateformes est un enjeu quidevient de plus en plus important. Comment fournir uneapplication de qualité et adapter aux utilisateurs desdifférentes plateformes tout en gardant un coût dedéveloppement et de maintenance non exponentiel ? Plusieursoutils / Frameworks proposent des approches différentes pourrépondre à ces défis. Microsoft a décidé d’adresser toutes cessolutions en intégrant un ensemble d’outils dans VisualStudio 2015, de manière à nous laisser le choix de la meilleuresolution en fonction de notre contexte.

Kévin ALBRECHTTeddy DESMASThomas LEBRUNSébastien OLLIVIERThomas OUVREConsultants Infinite Square

Apache Cordova s’appuie également surune communauté active pour développerde nombreux plugins, majoritairement surGitHub, comme un scanneur de code-barreou de QR Code, des connecteurs Facebookou encore des notifications « Push ».L’engouement grandissant autour deCordova fait que ce framework devient deplus en plus complet et permet dedévelopper des applications de plus en plusévoluées, tout en gardant l’avantage den’avoir qu’un seul développement à fairepour cibler plusieurs plateformes.

Intégration avec Visual StudioVisual Studio 2015 inclut un ensembled’outils permettant de faciliter ledéveloppement d’applications avecCordova. Alors qu’il est nécessaire d’utiliserdes lignes de commandes (cli) pourmanipuler une application Cordova (ajouterune plateforme, ajouter un plugin, compilerune application, etc.), Visual Studioencapsule toutes ces commandes dans destâches de Build, pour retrouver les réflexeshabituels. Pour cela, à l’installation, VisualStudio vous proposera un ensemble d’outilstiers, comme iTunes, node.js, la JVM, le SDKAndroid, etc.Ces outils sont également disponibles surVisual Studio 2013, via l’extension MultiDevice Hybrid Apps. Le débugd’applications Cordova est également unpoint difficile lorsque l’on se passe de VisualStudio. En effet, pour avoir accès aux DOM,à la console, etc. il est nécessaire de passerpar des outils externes, comme VorlonJS ouWeinre. Ces outils ne permettent pas, parcontre, de débugger directement leJavaScript de l’application. Visual Studioquant à lui propose une expérience dedébug riche, de manière assez identique àce qu’on a l’habitude de voir sur cet IDE, etce sur toutes les plateformes (WindowsPhone, Android et iOS). Enfin, pour toute lapartie industrialisation des développements,Microsoft a fait le choix d’intégrer à sonéditeur des outils open source trèspopulaires dans la communauté Web,plutôt que de développer ses propres outils.NPM est utilisé pour gérer toutes lesdépendances serveur, bower pour lesdépendances clients. Grunt ou Gulp sont làquant à eux pour mettre en place tous lesworkflows de build (compilation duTypeScript, bundlelification des fichiers CSS,compression automatique des images, etc.).Petit bonus, il est possible de lier notreapplication sur le store et de créer l’apppackage directement depuis l’applicationCordova ce qui facilite grandement lapublication.

tandis que l’interface graphique estdéveloppée en utilisant les APIs natives,rendues accessibles en C#.Xamarin est composé de 4 produits :u Xamarin.Android : qui représente la

surcouche permettant l’exécutiond’applications C# sur les plateformesAndroid

u Xamarin.iOS (MonoTouch) : qui permetaux applications Xamarin de s’exécuter suriOS

u Xamarin.Mac : qui offre auxdéveloppeurs la possibilité d’exécuterleurs applications sur OS X

u Xamarin Studio : qui n’est rien d’autrequ’un environnement de développement,basé sur MonoDevelop, permettant dedévelopper des applications C# pourAndroid (sans disposer de Visual Studio)ou des applications iOS sous OS X.

Pourquoi Xamarin ?Si l’on en croit les possibilités offertes par leproduit, Xamarin semble donc êtreprometteur et se présente comme la solutionidéale pour les développementsd’applications mobiles multiplateformes.Mais, au-delà des fonctionnalités en elles-mêmes, l’intérêt de Xamarin réside aussi etsurtout dans le principe de « réutilisation ».En effet, comme nous l’avons vu juste avant,Xamarin offre aux développeurs la possibilitéde développer leurs applications iOS/Androiden utilisant Visual Studio et C# et donc,implicitement, de réutiliser le savoir-fairequ’ils ont acquis lors de leursdéveloppements précédents. La courbe d’apprentissage est doncextrêmement simple pour les développeursayant l’habitude de l’environnementMicrosoft : seules les nouvelles APIs liées àl’environnement cible sont à connaître, mêmes’il reste nécessaire de connaître lesparadigmes et les concepts des différentesplateformes pour lesquelles une application

28

Mobilité

Pourquoi Cordova ?Cordova offre le gros avantage de factoriserla totalité du code applicatif. Toutes les vueset tout le code métier seront réutilisés surtoutes les plateformes.L’un des avantages de Cordova vientégalement de sa base technique : HTML /CSS / JavaScript. Si vos équipes possèdentdéjà des compétences dans ledéveloppement Web, le pas à franchir pourcréer des applications natives sera trèssimple, comparé à l’effort nécessaire pourmonter en compétence sur un nouveaulangage ou sur un nouvel environnement.Il y a quelques années, Cordova était critiquépour son manque de performance et sonmanque d’intégration avec le device. Cespoints ont été corrigés, d’une part par lesnavigateurs mobiles (utilisés par le WebViewCordova) qui ont des moteurs d’exécutionJavaScript beaucoup plus optimisés, etd’autre part par le nombre très important deplugins actuellement disponibles. Il estmaintenant possible de créer desapplications Cordova ressemblant à s’ytromper à des applications natives.

XamarinXamarin peut être assimilé à un frameworkpermettant de développer des applicationsmobiles pour iOS, Android et WindowsPhone en s’appuyant sur un langage dedéveloppement unique (C# ou F#). Xamarinpermet de mutualiser toute la logiqueapplicative, grâce à une bibliothèque declasses portable ou sur un projet partagé.L’un des points forts de Xamarin réside dansce que le produit offre aux développeurs :tout ce qui est réalisable techniquementavec Objective-C ou Java peut être fait en C#avec Xamarin !Concrètement, cela signifie que tout ce quiconcerne la logique métier, les accès auxdonnées, la communication réseau, etc. estpartagé sur l’ensemble des plateformes

29

Mobilité

est développée, ceci afin de respecter aumieux les codes de l’expérience utilisateur.Un autre avantage de Xamarin concerne lespossibilités techniques offertes auxdéveloppeurs. En effet, lorsque l’on regardede plus près des applications iOS ouAndroid, on constate que celles-ci sont trèssouvent peaufinées dans les moindresdétails (animations, gestures, etc.). AvecXamarin, il sera possible de reproduirel’ensemble de ces petits détails, car 100%des APIs sont couvertes ! Une collaborationforte avec Microsoft : en plus des pointscités précédemment, il faut savoir queMicrosoft et Xamarin travaillentconjointement pour faciliter ledéveloppement d’applications iOS / Android,au travers de Visual Studio. Ainsi, si unpartenariat important a été annoncé entreles 2 sociétés il y a un peu moins de 2 ans, leproduit est maintenant plus fortementintégré à Visual Studio, en proposant, àl’installation, la possibilité d’installerXamarin.

Visual C++ Cross-Platform MobileVisual C++ Cross-Platform Mobile de VisualStudio 2015 permet maintenant auxdéveloppeurs de créer des applicationsvisant les trois grandes plateformes mobilesdu moment avec un unique langage, leC++. À la différence d’une technologiecomme Cordova, le but n’est pas des’abstraire des patterns et composants dechaque plateforme, mais plutôt deproposer un langage permettant de lesmanipuler directement, sans abstraction.Ainsi, il devient possible de créer desapplications natives tout en mutualisant ducode entre les différentes plateformes.L’émergence d’un tel produit vient en partied’un constat très évocateur : 80% desapplications les plus populaires sousAndroid ont été développées en C++. Lechoix de ce langage par les grands éditeursderrière ces applications n’est pas unhasard : il s’agit du dénominateur communentre ces trois plateformes. Il offre à la foistoute la souplesse requise pour manipulerles APIs natives de chaque plateforme touten permettant une mutualisation maximum.De plus, des librairies maintenant trèspopulaires parmi les développeurs C++(comme openCV pour le traitementd’image ou Qt pour les interfacesutilisateurs) sont disponibles sous chacunede ces plateformes, ce qui montre d’unepart l’universalité des langages C et C++, etoffre d’autre part des possibilitésintéressantes pour les développeursd’applications souhaitant bénéficier de ces

librairies. Visual C++ Cross-Platform Mobileoffre tout l’outillage nécessaire au sein d’ununique outil : Visual Studio. En effet, il peutêtre assez contraignant et ardu de maîtriserles différents compilateurs C/C++ dechacune des plateformes : CLang, GCC ouencore VCC. Comme à son habitude,Microsoft fournit un outil maniable de par laconfiguration, mais prêt à l’emploi ce quipermet de se concentrer rapidement sur lecode. Le développeur habitué de VisualStudio disposera de la plupart des outils quifont sa force. On y trouve par exemple undébuggeur avec la possibilité d’inspecter ducode à l’exécution, de l’exécuter en pas-à-pas, etc. Il est aussi possible d’y développerune application Android sans device à l’aidede l’émulateur intégré. En revanche, il seranécessaire de disposer d’une machineexécutant OS X et Xcode pour compiler uneapplication iOS. Toutefois, le debugging sefera au travers de Visual Studio.

Concrètement, à qui s’adresseVisual C++ Cross Platform Mobile ?Tout d’abord et naturellement, auxdéveloppeurs familiers du langage C++souhaitant continuer à utiliser ce langagesans devoir absolument apprendre celuid’une des plateformes cibles. Mais aussi aux développeurs de jeux : ils’agit en effet d’une solution permettant detravailler « au plus près de la machine » etd’attaquer des librairies graphiques commeOpenGL (pour Android et iOS) et DirectX(pour Windows) et d’obtenir les meilleuresperformances possible. Ainsi Visual Studiodispose même de template de projet prêt àl’emploi générant un projet Android et unprojet Xcode avec une base de codecommune écrite en C++, dont le rendugraphique est effectué via OpenGL. Enfin lesdéveloppeurs d’applications au sens largesouhaitant mutualiser une partie de leur

30

Mobilité

code, pourront le faire en C++. En effet, onpeut imaginer qu’une partie de l’applicationsoit développée dans le langage de laplateforme, notamment pour tout ce quiconcerne les interfaces utilisateurs (en effet,même si ces APIs sont attaquables en C++,cela peut représenter un effort conséquent)et que d’autres briques soient développéesen C++, pour des raisons de performanceset/ou pour la possibilité de mutualiser ducode logique. Chacune des plateformesdispose ensuite de moyens d’accéder auxbranches de codes écrites en C++ depuis lecode Java, Objective-C ou C#.

Windows BridgeDans le cas où l’application existe déjà sousAndroid et iOS, la solution dudéveloppement cross-plateformes n’est pasforcément la plus intéressante. Pour cette situation, Microsoft propose lesWindows Bridges. Windows Bridge est unepasserelle proposée par Microsoft pour queles développeurs iOS, Android puissentporter leurs applications vers Windows 10.Cet outil open source, encore en previewaujourd’hui (octobre 2015), permet, avecune légère adaptation, de garder le codenatif (Objective-C ou Java) de l’applicationpour créer une version fonctionnelle decelle-ci sur ce nouveau systèmed’exploitation. Avec Visual Studio, ledéveloppeur iOS ou Android peut doncréaliser une version de son application pource nouveau marché qui couvre plusieurspériphériques (ordinateur, tablette,smartphone, Xbox …), et ce sans connaîtrel’environnement Windows ! La versionAndroid n’est disponible pour le momentque pour quelques chanceux, mais laversion iOS est disponible sur GitHub(https://github.com/Microsoft/WinObjC).

Debug Cross-PlateformesVisual Studio 2015, offre un ensemblecomplet d’outils de Build et de Debug pourles plateformes Windows, Windows Phone,iOS et Android.

rippleRipple est une extension du navigateurChrome permettant d’exécuter l’applicationCordova dans le navigateur, en émulant unenvironnement se rapprochant del’environnement mobile. Ripple propose actuellement d’émulerplusieurs devices, notamment des iPhone,iPad, BlackBerry ou Android. L’avantage decette extension est de pouvoir débuggerrapidement son application depuis lenavigateur, sans avoir à la déployer sur undevice, ou à utiliser un émulateur. Il est

également possible d’utiliser les outilsdéveloppeurs de Chrome pour débuggerl’application, ce qui arrêtera le débuggeurde Visual Studio. Il est possible de modifier certainespropriétés du device, comme sonorientation, sa position géographique, labatterie, de modifier l’accéléromètre, dedéclencher certains évènements (Passage enmode avion, etc.) et bien d’autres. Ripple s’exécutant sur le navigateur, il nepeut pas exécuter les plugins Cordova, maispropose un mécanisme permettant de saisirmanuellement les données qui auraient dûêtre retournées par l’appel au plugin. Ripple reste donc une solution trèsrestreinte, mais fonctionnelle aux premièresphases de création d’une application, maisne permet pas de se substituer totalementaux émulateurs et aux devices.

Windows PhoneVisual Studio 2015 permet de débugger etdéployer une application native, Xamarin ouCordova sur Windows / Windows Phone queça soit un émulateur ou un device physique.De grandes améliorations ont été apportéespour le débogage, notamment au niveau duDOM explorer afin d’inspecter uneapplication pendant son utilisation en tempsréel.

AndroidVisual Studio 2015 intègre un nouvelémulateur Android basé sur la version Kitkatfonctionnant sous Hyper-V comme lesémulateurs Windows Phone, à ne pasconfondre avec « Google Android Emulator »qui correspond à l’émulateur fourni avec leSDK Android. Il est utilisable pour débuggerdes projets Apache Cordova, C++ mobile ouXamarin. Contrairement à l’émulateur fourniavec le SDK Android, l’émulateur de VisualStudio est très performant et permet deprofiter d’un environnement de test fidèleaux devices réels avec une expérience dedébug quasi similaire à celle sur WindowsPhone.

iOSLe développement d’une application iOSnécessite l’utilisation d’un Mac et de l’IDEXcode. Visual Studio 2015 ne permet pasd’échapper à cette contrainte, mais intègreun mécanisme permettant de débuggerdirectement depuis un device iOS branché àun Mac. Ce mécanisme nécessitel’installation d’un agent sur le Mac, quiservira de lien entre Visual Studio et Xcodeet des Xcode Command-line tools. Cetagent est disponible sous la forme d’unpackage npm : « remotebuild ».

Une fois la communication établie entreVisual Studio et l’agent, il est possible dedébugger les applications sur un iPhone,branché au Mac, ou sur un émulateuriPhone. Techniquement, Visual Studioenverra en HTTP les informations du projetqui seront interprétées par Xcode. Ensuite,le Mac transmettra les données du deviceou de l’émulateur à Visual Studio qui pourraretranscrire les informations comme s’ils’agissait d’un débug en local.

ConclusionDepuis les premières versions bêta de VisualStudio 2015, Microsoft a mis un accentparticulier à l’intégration d’outils dedéveloppement cross-plateformes. Dans saversion finale, Visual Studio se positionneainsi en tant qu’outil incontournable pourdévelopper des applications cross-plateformes, aussi bien en utilisant Xamarin,C++ ou Cordova. Microsoft a également faitle choix de s’ouvrir encore plus au mondede l’open source en intégrant à son IDEl’utilisation de frameworks très populairescomme npm, bower ou gulp. Ajoutez à celatous les outils déjà à disposition depuisquelques années, comme le mécanisme deplugin (Resharper, GhostDoc, etc.) oul’intégration d’outils collaboratifs (TFS, VSO,Git, etc.), Visual Studio est un IDE pluscomplet que jamais. Reste maintenant pour vous à choisir lameilleure solution pour vosdéveloppements cross-plateformes. Il n’y apas de choix évident, tout dépend de votrecontexte, de vos connaissances, de voshabitudes. Mais pour établir des règlesgénérales, on pourrait dire que ApacheCordova est plus adapté si vous avezl’habitude du développement Web ou sivous souhaitez également créer un siteresponsive. Si, au contraire, vous êtes plusun développeur .NET et que votreapplication possède beaucoup de règlesmétiers, Xamarin est sans doute l’outil dontvous avez besoin. Si vous êtes à l’aise avec C++, C++ CrossPlatform Mobile vous permettra de créerdes assemblies ou framework cross-plateformes afin de gagner en productivitéet maintenabilité. Enfin, Windows Bridge està utiliser lorsque vous souhaitez porter uneapplication Android ou iOS sur Windows àmoindre coût.Dans tous les cas, l’outil de développementuniversel capable de répondre à vos besoinssera Visual Studio ! p

31

Docker

Containers, Docker, Azure, WindowsServer et Visual Studio…Régulièrement, l’industrie des systèmes d’information voit sonévolution rythmée par des innovations ou des transformationsmajeures. Les points d’inflexion de cette courbe technologique vontalors généralement de pair avec l’ampleur de l’intérêt qu’ilssuscitent. Et aujourd’hui, nombreux sont ceux qui s’intéressent auxcontainers et à Docker…

En particulier Microsoft, avec le support deDocker sur la plateforme Microsoft Azure, saMarketplace et Windows Server 2016. Riend’étonnant à ce que cet engagement semanifeste maintenant avec Visual Studio : lescaractéristiques d’un container (isolation,optimisation des ressources, vitesse dedéploiement et de démarrage) en font uncandidat idéal pour les tests etdéveloppement.En effet, le principe d’un container est dedonner l’illusion à un processus qu’il est leseul à s’exécuter sur la machine, en isolant,dans un espace de noms virtualisé, lesressources auxquelles on souhaite lui donneraccès. Ainsi, un conteneur ne peut accéderaux fichiers ni interagir avec des applicationsqui se situeraient en dehors de son espace.Voilà qui favorise le partage et laréutilisation du container ou de son imagepar d’autres acteurs du cycle de vie logiciel.La consommation des ressources estégalement optimisée, car fichiers, répertoireset services en cours d’exécution sur l’OS sontpartagés entre les conteneurs. Enconséquence, le déploiement et lelancement des conteneurs multiples sur lemême hôte sont extrêmement rapides. Cetteefficacité du conteneur est donc de nature àfavoriser les multiples itérations dudéveloppement, avec une vision très« Lean » de l’optimisation des ressources…À eux seuls, ces éléments suffisaient àjustifier une évolution de Visual Studiociblant l’utilisation de la nouvelle générationde containers incluse dans WindowsServer 2016. Mais avec le support de Docker,l’impact va bien au-delà. En effet, Dockerpropose un ensemble de commandescommunes pour la gestion des containers,un modèle de packaging permettant dedécrire leur contenu (leur image) et unmécanisme de déploiement permettant deles distribuer sur n’importe quel hôte, qu’ilsoit Linux ou Windows, voire de les

télécharger vers des référentiels privés oupublics (Docker Hub). Il s’inscrit doncparfaitement dans une démarche DevOpspar sa capacité à accélérer le cycle de vie del’application et facilite l’implémentationd’architectures Micro-Services par ladécomposition en containers.

DevOps et architectureMicro-ServicesVisual Studio 2015 se devait doncd’accompagner cette évolution. Il est doncdésormais possible de déployer un containerdirectement depuis Visual Studio grâce auxVisual Studio Tools pour Docker.L’extension Docker pour Visual Studiopermet de configurer l’environnementDocker, fondé sur une architecture client-serveur. Le client Docker communique avecle serveur hôte Docker grâce à un service, le« Docker engine », qui assure la générationet la publication des images ainsi que leurexécution au sein de containers. Elle installe,sur le poste de travail Windows  dudéveloppeur, l’interface en ligne decommande Docker 1.8.1, pour la gestion et lediagnostic des conteneurs. Elle automatise laconfiguration du serveur hôte Docker, unemachine virtuelle Windows ou Linux, et ladéploie sur la plateforme Microsoft Azure ouen local (custom host). Cette machinevirtuelle est décrite par un template AzureResource Manager (ARM) et sondéploiement est assuré par un scriptWindows PowerShell. Enfin, elle génèreautomatiquement les certificats permettantde communiquer en toute sécurité (viaTransport Layer Security - TLS) depuis

l’environnement de développement vers leserveur hôte Docker.Elle permet de directement publier unenouvelle image de container ou uneapplication dans un container sur le serveurhôte Docker. Elle génère également lesfichiers MSBuild, Bash (pour Linux ou Mac),ou PowerShell, afin de pouvoir lancer cettepublication, que l’on peut égalementdéclencher directement en ligne decommande. Enfin, elle génère un Dockerfiledont le contenu variera en fonction dusystème Windows ou Linux et que l’on peututiliser comme point de départ pour ajouterou modifier le conteneur. En effet, ce fichiercontient toutes les commandes qu’il faudraitexécuter manuellement pour parvenir à laconstruction d’une image de Docker. Dansl’environnement proposé aujourd’hui, il s’agitd’une application console ou d’uneapplication Web ASP.NET 5. Commel’indique le Dockerfile, lorsque la cible est unenvironnement Linux, c’est le runtime Monoqui sera utilisé alors que sous Windows, c’estle .NET Core runtime. Nul doute que le typede projets Visual Studio, que l’on pourradéployer dans des containers par le biais decette extension, devrait progressivements’enrichir…Un fonctionnement de Docker au sein decontainers Windows rigoureusementsymétrique à celui que l’on connaissait déjàpour Linux, outillé avec un environnement dedéveloppement aussi complet que VisualStudio, complété par les facilités offertes parMicrosoft Azure, voilà de quoi assurer unfutur prometteur à Docker et, qui sait, peut-être transformer le mythe du « Write once,run anywhere » en réalité ? p

Stéphane Goudeau Microsoft DX Architect

32

IoT

Studio 2015 permet d’être enrichi denouvelles fonctionnalités. Visual Micro(http://www.visualmicro.com) en est un excellentexemple. Compatible avec toutes les cartesArduino, il décuplera votre productivité. Touty est : Coloration syntaxique détaillée,IntelliSense, débogueur, etc. (Fig. 2)

.net Micro FrameworkLe .net Micro Framework est la versionembarquée du .net Framework, fonctionnantsur des micro contrôleurs (sans systèmed’exploitation). Très léger, peu énergivore, ilouvre toute une palette de scénarii. Soncaractère Open Source (http://netmf.github.io) afavorisé le développement de nombreusescartes, notamment des cartes compatiblesbroche à broche avec Arduino, dénomméesNetduino (http://www.netduino.com), mais aussiGadgeteer (http://www.netmf.com/gadgeteer),une initiative originale issue des laboratoiresde Microsoft Research Cambridge.Gadgeteer relève le défi de permettre à desdéveloppeurs de logiciels de réaliser desmontages sans peine, car assistévisuellement et sans soudure. (Fig. 3)

CloudSi les objets connectés sont les yeux, lesoreilles, voire les bras du système, le cerveaureste les serveurs. Pour disposer d’un

Les possibilités sont nombreuses, nousallons citer quelques exemples de projetsliés à l’objet lui-même. Pour cela, nousallons nous appuyer sur le projet OpenSource « Connect The Dot » disponible surGitHub https://github.com/Azure/connectthedots . Ce projet illustre la connexion d’objets auCloud en utilisant Microsoft Azure et desobjets très variés.

raspberry PiLe très versatile Raspberry Pi 2 est unvéritable ordinateur qui permet l’exécutiond’un système d’exploitation à la différencede cartes moins évoluées. Historiquement,diverses distributions de Linux sontdisponibles, mais aussi depuis peu,Windows 10 IoT Core, une version allégée etdédiée aux objets connectés de Windows 10offre une option supplémentaire pour lesconcepteurs. Plusieurs langages peuventservir à animer les objets. Que voussouhaitiez travailler sur des scripts Python(Linux uniquement) ou Javascript/Node.JS

(utiliser le plug-in Node.JS Tools IoTextensions https://github.com/ms-iot/ntvsiot), ouréutiliser vos connaissances C# (Mono surLinux avec la librairie RaspberryPi.nethttps://github.com/cypherkey/raspberrypi.net etUniversal Windows Platform sur WindowsIoT Core) vous profiterez de toute lapuissance de l’environnement intégré deVisual Studio 2015.La création d’une application multi-appareil(PC, Tablette, smartphone, IoT), qu’elle soitvisuelle ou non, est rendue possible parWindows IoT Core et son modèle dedéveloppement Universal Windows Platform(Fig. 1). De la conception visuelle avec Blendau débogage pas-à-pas en passant par lepartage de code ou l’optimisation assistéedes performances, c’est toute la puissancedu Visual Studio qui est mise à contributionpour la mise au point de vos objets. Il existeun kit de démarrage officiel complet et trèsabordable qui permet d’évaluer laplateforme, disponible chez Adafruithttp://www.adafruit.com/windows10iotpi2

ArduinoLa fantastique plateforme Arduino se voitaccompagner d’un outil de développementparfaitement fonctionnel, mais assezrudimentaire. Grâce à ses capacitésd’extensions par plug-ins notamment, Visual

Visual Studio 2015 & IoTL’Internet des Objets deviendra tôt ou tard une commodité. De plus en plus de projets seront impactés parce phénomène. Au même titre que l’approche mobile en son temps, nos solutions auront de grandeschances de devoir traiter un volet objets connectés. La capacité à délivrer rapidement des solutionsintégrées pourra faire la différence entre un acteur et un autre.

Alex DanvyEvangéliste chez Microsoft

Conception visuelle etnon visuelle pourWindows IoT Core pourRapsberry Pi 2Fig.1

33

IoT

maximum de puissance àun coût très modeste, ilfaut s’orienter vers leCloud. Des servicesspécialisés tels que AzureIoT Services permettent desurmonter sans effort lesproblématiques auxquellesl’IoT doit faire face :u Sécuritéu Continuité de serviceu Mise à l’échelleu Enregistrement et suivi

des appareilsu Ingestion massive de

donnéesu Calculs en temps réelu Stockageu Scénarios intelligents,

machine learningu Business Intelligence

Visual Studio 2015 permetde développer et dedéployer une solutionCloud IoT très complètesimplement, sans ligne decommande complexe,directement depuisl’éditeur. (Fig. 4)

SolutionsconnectéesUne solution connectéeimplique la mise en œuvrede projets très différents,qu’il s’agisse d’un backenddans le Cloud ou « OnPremise », d’un frontendweb pour le pilotage, oude code à déployer sur lesobjets. Visual Studio 2015permet d’intégrerl’ensemble de ces projetsau sein d’une mêmesolution. Vous bénéficierezainsi d’une productivitémaximale :l’environnement que vousconnaissez, une visionglobale de la solutionlogicielle, uneméthodologie unique, unseul dépôt de source etune seule chaine deproduction. Vous pouvezmême déboguer votrecode pas à pas et suivre lecheminement de ladonnée de l’objet vers leCloud ! p

Déploiement d'une unité de traitement programmée (WebJob)

Conception visuelle de circuits Gadgeteer

Edition d'un projet Arduino dans Visual Studio grâce à VisualMicroFig.2

Fig.3

Fig.4

34

MSDN Platforms

MSDN Platforms

Il s’adresse potentiellement à toutes lesparties prenantes dans le cycle de vie devos applications : Ops, administrateur IT,DBA, chef de projet, manager,ScrumMaster, Product Owner... Il s’adresse également aux développeursqui codent avec d’autres outils dedéveloppement que Visual Studio. Ilsbénéficient alors eux aussi de l’accès àtous les environnements horsproduction, outils et services décritsdans cet article.

Des nombreuses ressourcesCet abonnement offre un accès completà la plateforme de collaboration ALM deMicrosoft, qu’elle soit mise en place parvos soins Team Foundation Server (TFS)ou hébergée Visual Studio Online (VSO).Le téléchargement, et surtoutl’utilisation pour le développement ettest sont inclus pour tous lesenvironnements et serveurs Microsoftavec en plus des classiques Windows etSQL Server : SharePoint, Exchange,Power BI, Dynamics … Votreabonnement MSDN Platforms vouspermettra également de bénéficierautomatiquement des derniers correctifset versions des logiciels dès leurdisponibilité.L’abonnement propose aussi de l’aideen cas de problème technique. Vousêtes prioritaires sur les forums MSDN etégalement sur les forums Technet. Si leproblème est important, vous pouvezdiscuter en ligne sur le MSDN chat, ouencore demander de l’aide à Microsoftvia les 2 tickets de support techniqueinclus dans chaque abonnement MSDN. L’abonnement vous aide aussi àmaintenir vos connaissances techniquesen incluant 2 cours par an du catalogue

Microsoft e-learning et 30 coursPluralsight à votre disposition pendant 1 an.J’ai récemment accompagné uneéquipe dans sa démarche DevOps.Cette équipe agile développe unesolution web avec un Backend basé sur.Net, SharePoint et SQL Server, et leFront sur HTML5/Javascript avecAngularJS. Elle est composée de 3développeurs .Net, 1 expert SQL, 1 Ops(administrateur SharePoint/Windows), 2développeurs AngularJS, 2 spécialistesdu test, 1 ScrumMaster et 1 ProductOwner. Les développeurs .Net utilisentprincipalement Visual Studio 2015, ilss’orientent vers un abonnement MSDNVisual Studio Enterprise. L’expert SQL etles développeurs AngularJS utilisentd’autres outils pour coder, ils accèdenteux aussi à SQL Server et SharePointpour leurs développements : unabonnement MSDN Platforms, parpersonne, le permet. Les spécialistes dutest travaillent avec Microsoft TestManager, ils accèdent aussi àSharePoint : MSDN Test Professionalrépond à ce besoin. Pour la gestion dubacklog, du travail, du code source etdéploiement continu, l’équipe exploiteles fonctionnalités de TFS. LeScrumMaster et le ProductOwnerdoivent à minima acquérir une CAL. Ilsaident l’équipe et surtout demandentdes feed-back aux parties prenantes, unabonnement MSDN Platforms est alorsapproprié.

Avec 85 €/mois de crédit Azure offert,chacun bénéficie en outred’environnements performants dedéveloppement et test.Bien sûr, un abonnement MSDN n’estpas systématiquement nécessaire. Si unmanager suit l’avancement de l’équipevia des comptes-rendus créés à partirdes données TFS, cela est gratuit. Lesutilisateurs finaux peuvent utiliser lesenvironnements et applicationsdéveloppées dans le cadre de tests

MSDN PLATFOrMSOutils

Team Foundation Server + CAL (accès à toutes les fonctionnalités)

Visual Studio Online Advanced Plan(accès à toutes les fonctionnalités)

Crédit Azure gratuit 85€/mois

Produits en téléchargementpour le développement et le test

Windows, Windows Server, Windows embedded

SQL Server

SharePoint, Exchange, Dynamics

Power BI Pro

Et les autres (liste complète http://bit.ly/ProdMSDNAbo)

Formation

30 cours Pluralsight sur 12 mois (liste http://bit.ly/Plural30MSDN)

2 cours par an dans les collectionsMicrosoft E-Learning

MSDN Magazine

Support

2 tickets sur incidents techniques

Priorité sur les forums MSDN et Technet

Discussion en ligne MSDN

Offres exclusives

-30% sur l’abonnement annuel Pluralsight

-50% sur le service UserVoice la première année

Les offres changent régulièrement (liste http://bit.ly/OffresMSDN)

Juillet 2015

L’abonnement MSDN Platforms fait partie des offres MSDN, ilpropose un accès à tous vos environnements hors production. Iln’inclut pas l’outil de développement Visual Studio. Pourtant, il estcelui dont vous avez peut-être le plus besoin pour ledéveloppement de vos applications, encore plus si vous adoptezune démarche de type DevOps.

d’acceptation (UATs) sans licenceparticulière. Ils peuvent aussi créer etsuivre des bogues ou évolutions grâce auniveau d’accès Stakeholder gratuit pourTFS 2015 ou VSO.

En résuméLes possibilités offertes par MSDNPlatforms sont multiples et riches. Pour entirer le maximum, je vous invite à consulterrégulièrement la page de votre compte,tous les bénéfices y sont regroupés et misà jour régulièrement. p

Cédric LeblondConsultant MeritisAccompagne les équipes sur sessujets préférés DevOps et Agilité. Est aussi MVP ALM.

http://www.visualstudio.fr : le site de l’équipe France.Retrouvez toutes lesinformations produits,livres blancs enFrançais et l’actualitéde Visual Studio et

MSDN. Si vous avez un projet ou unequestion, contactez l’équipe marketing etvente au 01 45 36 77 17 [email protected] liste de nos partenaires revendeurs etservices est aussi disponible sur ce site.

Microsoft VirtualAcademy : Ceux qui réussissentne cessent jamaisd’apprendre et les

technologies majeures ne cessent jamaisd’évoluer. Microsoft Virtual Academy (MVA)propose des formations Microsoft en ligneentièrement gratuites, menées par desexperts dans 12 langues différentes. Nous vous recommandons notamment le cours suivant : http://aka.ms/mvavs

L’assistant Visual Studio : en ajoutant un assistant à Visual Studio vouspourrez suivre des tutoriaux interactifs, vouspourrez lancer tous les pas-à-pas créés par lacommunauté. L’Assistant Visual Studio est unplugin additionnel à Visual Studio qui permetde lire des cours directement dans l’IDE touten permettant d’interagir avec celui-ci poureffectuer des tâches comme Ouvrir un fichier,Ouvrir une solution, Remplacer du texte,Ajouter un item dans un projet, Build unesolution... et bien d’autres !http://aka.ms/assistantVS

Developer code samples : Besoin d’aide pour utiliser une nouveauté duframework ou encore débuter un nouveauprojet ? Quoi de mieux qu’un bon exemple

pour découvrir comment utiliser lafonctionnalité attendue ? C’est ce quepropose ce site : un ensemble d’exemplessur des points précis qui vous permettrontde progresser et d’appréhender facilementles différents aspects du langage.http://code.msdn.microsoft.com/

Channel 9 : Ce site regroupe lesvidéos des personnesqui conçoivent lesproduits chezMicrosoft. Il estégalement un lieud’échange autour destechnologies. Lesnombreux événementsMicrosoft qui

ponctuent l’année sont pour la plupartdisponibles sur ce site, notammentl’événement Connect() et l’évènement delancement mondial de Visual Studio 2015.http://channel9.msdn.com

Le site MSDN (Microsoft DeveloperNetwork) réunit l’ensemble des ressourcestechniques et des services dont ledéveloppeur sur technologies Microsoft abesoin. Vous pouvez également participeraux discussions dans les Forums MSDN,rejoindre les communautés de développeurset rencontrer les experts Microsoft France.Inscrivez-vous sur ce site à la newsletterMSDN. Elle propose le meilleur desinformations techniques en provenance deséquipes de développement de MicrosoftFrance et de Microsoft Corp, mais aussi descommunautés francophones.http://msdn.microsoft.com/

Visual Studio Community :un IDE complet gratuit, des outils dedéveloppement mobiles cross-plateformespour Windows, iOS et Android, et l’accès àdes milliers d’extensions. Cette édition de Visual Studio est disponiblegratuitement pour les étudiants, lescontributeurs open source, les start-ups, lesdéveloppeurs indépendants et souscertaines conditions les PME. Pourtélécharger cette édition :http://aka.ms/VScommunityFR

Essayez Microsoft Azuregratuitement pendant un mois : inscrivez-vous et obtenez 170 € à utiliser surtous les services Azure : machines virtuelles,bases de données SQL, sites Web, Push notifications sur mobile, diffusion encontinu de médias, Active Directory...Tous les détails sur http://azure.com

Pépinière Microsoft Azure et WindowsBénéficiez d’un programmed’accompagnement personnalisé et gratuit,de la mise à disposition de ressourcestechniques à un coaching technique et duconseil business, pour vous aider dans ledéveloppement de vos applicationsWindows ou Cloud. Plus d’informations surce lien :http://www.pepinieremicrosoft.com

BizSpark : est un programmeréservé aux start-ups

de logiciels : sociétés de moins de 3 ans,moins de 1 million de $ de CA et dontl’activité principale est la création d’unesolution logicielle on-premise ou dans leCloud. Les sociétés membres de BizSparkbénéficient de licences de développementvia un accès à MSDN Enterprise, du support,130 € par mois de crédits Azure pour 5associés pendant 3 ans. Plus d’informations :http://www.microsoft.com/bizspark/

L’Accélérateur MicrosoftVentures à Paris : Un des 7 accélérateurs startupde Microsoft dans le monde,notre programme de 3 moispropose un vrai tremplin pourvotre entreprise. Noustravaillons notamment avecdes startups à fort potentielinternational sur ledéveloppement de leurproduit, business et aussi le financement de leur entreprise. Pour plus d'informations, rendez-vous surmicrosoftventures.com/paris

35

Ressources

Evénements Chaque mois plusieurs événements gratuitsvous sont proposés pour découvrir nos outilshttp://aka.ms/vseventsfr