Archives de catégorie : .net

Prochain meetup .net Toulouse le 20 Février !

Le prochain meetup .net Toulouse aura lieu le 20 Février avec 2 sujets au programme.

1er sujet évoqué : .net Standard qui sera présenté par Thomas Bolon

image

2ème sujet évoqué : La panoplie du développeur par Stéphane Ragazzi.

Afin d’être notifié de toutes les actualités de notre meetup toulousain, n’hésitez pas à nous rejoindre au sein du groupe .net Toulouse, nous sommes déjà plus de 200 membres !

Docker : Quels scénarios pour un éditeur de logiciels ?

Docker n’est pas réservé aux startups qui développent des applications Linux basées sur des micro-services, et scalables afin de supporter des millions d’utilisateurs à travers le monde !

En effet, si vous travaillez pour un éditeur de logiciels qui a une offre logicielle datant de plusieurs années, par exemple une bonne vieille application ASP.net et donc sous Windows, vous devriez jeter un petit coup d’oeil sur la nouvelle gestion des conteneurs proposée par Windows Server 2016 afin de voir si cette nouvelle technique vous permet de simplifier vos déploiements.

Voici quelques exemples de de scénarios pour lesquels vous pourriez utiliser Docker sous Windows :

  • Gestion de vos environnements de tests, pre-prod, prod simplifiée, plus légère et plus souple qu’avec des VM
  • Blue-Green deployment et rollback de déploiement en activant/désactivant des conteneurs de manière automatisé voire automatique
  • Le saint-graal : un déploiement simplifié, et surtout uniforme entre vos clients hébergés en SaaS et vos clients On-premise. Vous souhaitez réduire de manière drastique vos temps d’installations de vos solutions (dépendances du type SQL Server, Reporting Services, et autres inclues !!), installer de la même manière vos clients hébergés sur vos serveurs et ceux qui souhaitent héberger eux-même vos applications, et gérer les mises à jour de manière uniforme.
  • Proposer une réversibilité simple pour vos clients SaaS souhaitant passer On-Premise et vice-versa

Vous êtes intéressés par une de ces possibilités ? N’hésitez pas à regarder sérieusement Docker afin de voir si cela peut répondre à vos besoins.

En savoir plus sur Docker sous Windows sur ce blog :

Quoi de neuf dans Windows Server 2016 pour les développeurs ?

L’essentiel sur Docker et les conteneurs Windows

L’essentiel de Docker : Débuter par la pratique

Meetup .net Toulouse Episode 2, DevOps avec Docker sous Windows

Visual Studio 2017 et Docker : de réelles avancées !

Visual Studio 2017 et Docker : de réelles avancées !

Les Visual Studio Tools for Docker sont disponibles depuis plusieurs mois maintenant en version Preview.

Cette extension à Visual Studio 2015 propose un scénario Dév. en permettant d’automatiquement déployer et débugger une application au sein d’un conteneur.

Il est ainsi possible d’automatiquement créer une image, de déployer l’application en cours dans cette image, de lancer un conteneur basé sur cette image, de débugguer l’application ainsi déployée, et propose une expérience ‘’Edit & Refresh” qui permet de ne pas créer une image à chaque modification de code.

Seul problème : cette extension supporte seulement les applications ASP.net Core et déployées dans des conteneurs Linux uniquement !

Très bonne nouvelle : la RC de Visual Studio 2017 propose une intégration d’une nouvelle version des Visual Studio Tools for Docker bien plus évoluée que celle disponible pour Visual Studio 2015 !

image

Au programme : Support des applications ASP.net Webforms et ASP.net MVC, et donc support des conteneurs Windows ! Le déploiement et le débogage d’applications .net “non Core” sont ainsi enfin supportés !

image

Le fichier dockerfile créé par l’extension est des plus simple :

image

Et Visual Studio affiche de manière très transparente les différentes étapes de déploiement :

image

Et une fois déployée et démarrée, Visual Studio ouvrira votre navigateur sur l’adresse IP du conteneur créé et démarré et non comme habituellement sur votre localhost :

image

Autre grosse nouveauté de cette nouvelle version, il est également possible de débugger une application déployée au sein de plusieurs conteneurs !

Si votre application est composée de différents services hébergés au sein différents conteneurs, vous n’aurez pas de problème pour débugger l’ensemble de votre solution !

Vous l’aurez donc compris, si vous souhaitez développer avec des conteneurs Windows, téléchargez Visual Studio 2017 RC pour découvrir tout cela !

Meetup .net Toulouse Episode 2, DevOps avec Docker sous Windows

 

Le 2ème meetup .net de Toulouse a eu lieu hier soir avec comme thème : Mise en place d’une approche DevOps avec Docker sous Windows.

Malgré la pluie battante (nous n’avons pas l’habitude de cela à Toulouse Clignement d'œil), une 40 aine de participants sont venus découvrir les nouvelles fonctionnalités de conteneurisation proposées par Windows Server 2016.

Nous avons ainsu pu avoir un retour d’expérience sur la mise en place d’une démarche DevOps, et rentrer plus en détail dans la technique en découvrant le déploiement d’applications .net “classique” de type ASP.net webforms  ou ASP.net MVC sous Windows, et l’intégration possible au sein de VSTS.

Cx0JxOlW8AA8a_8Photo de Stéphane Raggazi

Vous trouverez les slides de ma présentation sur slideshare :

image

Vous n’étiez pas là et vous souhaitez nous rejoindre pour les prochains meetups ?

Rien de plus simple, rejoignez-nous dans le groupe (plus de 130 membres actuellement !), et inscrivez-vous pour les meetups dont les sujets vous plaisent !

A très bientôt pour un prochain meetup !

Ce que je retiens des annonces du keynote de Connect 2016

Après le précédent évènement dédié à Windows, Microsoft continue sur sa lancée en nous proposant un très bon keynote de son évènement online Microsoft Connect.

Ce keynote fut l’occasion de faire un grand nombre d’annonces, je vous propose donc ici celles-qui m’ont le plus intéressé uniquement.

image

SQL Server 2016 SP1

Cela peut paraitre surprenant mais l’annonce qui m’a la plus enthousiasmé concerne la prochain Service Pack de SQL Server. Ce SP1 ne sera en effet pas un simple SP1 mais un changement MAJEUR au sujet de licensing de SQL Server puisque quasiment toutes les fonctionnalités qui étaient jusqu’à présent uniquement disponible dans la version Entreprise sont à présent disponible pour toutes les éditions de SQL Server !

Envie d’utiliser des fonctionnalités telles que l’Always Encrypted ou la gestion In Memory dans vos BDD SQL Server Express ? C’est à présent possible sans aucun surcoût !

Vous pouvez retrouver le détail de cette annonce sur ce post de Christophe Laporte.

Très clairement un Huge win pour SQL Server 2016 qui, avec la disponibilité de SP1, le changement de licensing, et la mise à disponibilité publique de la version Linux, a une actualité très riche.

Visual Studio for All

image_thumb8

Je ne vais pas m’étendre sur ce sujet puisque cela avait malheureusement fuité sur Internet en début de semaine, mais après avoir fait une démo de développement sous un Mac d’une application Node.js utilisant MongoDB et déployée sur Linux le tout depuis Visual Studio Code, Microsoft a annoncé une version Mac de Visual Studio. Ce rebranding de Xamarin Studio permet donc de créer des applications mobiles pour iOS et Android, mais également des applications serveur ASP.net Core.

image

Et enfin, bien évidemment, l’éditeur de Redmond n’oublie pas sa base de développeurs historique avec la mise à disposition de la RC de Visual Studio 2017 ! Au programme, de bonnes améliorations au niveau performances, plusieurs nouvelles fonctionnalités, et l’intégration de nouvelles extensions telles que les Visual Studio Tools for Docker, sujet sur lequel je reviendrais la semaine prochaine (Teaser : Elles sont vraiment bien meilleures que celles proposées en preview pour VS 2013, contrairement à ce qui pu être montré en démo).

DevOps for All

DevOps est certes un buzz-word à la mode, mais la mise en oeuvre d’une telle démarche n’est parfois pas des plus simples, et ceci même si l’outillage proposé par Microsoft (et par ses concurrents) s’est très largement développé et étoffé ces dernières années.

Les services d’intégration continue, de déploiement continu, de delivery continu, de gestion de tests, d’environnements, etc. proposés par TFS (TFS 2017 est à présent disponible en RTM) et Visual Studio Team Services permettent de faire beaucoup de choses dans ce domaine.

Microsoft complète néanmoins son offre avec une offre dédiée à la gestion du développement sur Mobile. Cette nouvelle est une repackaging de services déjà proposés par Xamarin avant son rachat par Microsoft et de Hockey App. Ce nouveau service n’est pas encore feature complete avec ses prédécesseurs, mais représente bien l’offre d’avenir qui permet à Microsoft de tout unifier.

Gestion des crashs, tests automatisés sur de rééls devices physiques, etc. L’intégration proposée est très intéressante, il sera intéressant de voir les prix qui seront proposés.

Microsoft est très sérieux sur son ouverture et avec l’Open Source

Oui, Microsoft a radicalement changé, et à réellement pivoter à une vitesse très impressionnante.

L’éditeur est à présent le plus gros contributeurs à des projets hébergés sur GitHub :

image

Et enfin, clou du spectacle : Microsoft rejoint la Linux Foundation !!! Sourire

image

L’essentiel sur Docker et les conteneurs Windows

Le support de Docker est une des principales nouveautés de Windows Server 2016, et maintenant qu’il est possible de conteneuriser nos bonnes vieilles applications ASP.net ainsi que toutes les nouvelles sous .net Core, je vous propose un petit tour de toutes les notions essentielles pour comprendre Docker et les conteneurs Windows.

windows-10-docker

Afin de ne pas se laisser distancer par Linux sur le marché des serveurs, Microsoft a conclu un partenariat avec Docker, leader de la conteneurisation sous Linux, afin d’implémenter la même possibilité sous Windows. 2 ans de développement en commun plus tard, nous pouvons enfin profiter de ceci afin d’héberger nos applications On-Premise, en IaaS, ou via services cloud d’hébergement de conteneurs.

Les conteneurs

image

On compare souvent les conteneurs à de la virtualisation d’OS. Ainsi au lieu de virtualiser tout le matériel d’une machine (CPU, RAM, Disques, carte réseau, etc.),  un conteneur permet de faire fonctionner une application au sein d’un environnement isolé où la couche hardware utilisée correspond à celle de la machine hôte du conteneur, mais également où le kernel de la machine hôte est partagé par tous les conteneurs en cours d’exécution.

L’idée est de proposer un environnement d’exécution isolé sans payer le coût lié à l’hébergement d’une VM, et ainsi  de parvenir à héberger un nombre beaucoup plus important d’applicatifs isolés au sein d’une machine hôte.

Les containers permettent également d’avoir une grande souplesse au sujet du type de déploiement que pouvez effectué. Déployer votre application sur un serveur physique, dans une VM, ou encore sur le Cloud se fait de manière extrêmement simple puisqu’il vous suffit de déployer votre conteneur où vous le souhaitez pour avoir une application fonctionnelle, sans réinstallation logicielle, ni paramétrage.

Différents niveaux d’isolations sont proposés sous Windows Server 2016.

Les conteneurs Windows

Avec ce niveau d’isolation, chaque conteneur partage le kernel de la machine hôte. Ainsi, il est uniquement possible de faire fonctionner des conteneurs Windows au sein d’un serveur fonctionnant lui-même sous Windows, et ayant la même version de kernel.

Les conteneurs Hyper-V

Un niveau d’isolation supplémentaire est possible grâce aux conteneurs Hyper-V. Les conteneurs Hyper-V nécessitent un hyperviseur Hyper-V, Une petite VM est automatiquement créé et démarrée lorsque vous souhaitez démarrer votre conteneur.

Le kernel n’est donc plus partagée entre conteneurs, mais reste propre à chaque conteneur.

Autre avantage, vous pouvez faire fonctionner un conteneur Linux sous Windows grâce à ce niveau d’isolation.

Les images Docker

image

Les conteneurs sont basés sur des images qui contiennent :

  • Une image de l’OS souhaité. Même si le conteneur partage le même kernel que la machine hôte, on s’assure ainsi d’utiliser une image “propre” indépendante de la machine hôte, et non polluée par les différents drivers et logiciel du constructeur de votre serveur
  • Le ou les frameworks applicatifs souhaités
  • Et bien évidemment votre application !

Les images sont construites grâce à un fichier Dockerfile qui permet de définir l’image de base utilisée, et qui permet d’exécuter différentes commandes pour installer votre application et ses dépendances, et effectuer différents paramétrages.

Les couches

Cela signifie-t-il qu’en plus de mon application web (par exemple packagée via un package webdeploy) je dois en plus uploader et télécharger toute une image de Windows ?

Au lieu d’avoir une application de 50Mo, je me donc retrouve avec une image de plusieurs Go ?

Oui, et non (et même surtout non). Il est certes nécessaire de packager l’application au sein d’une image Docker qui contient l’image de l’OS et qui pèse donc au total assez lourd, mais il n’est pas pourtant nécessaire de télécharger l’intégralité de tout cela pour déployer une application.

Les images Docker reposent en effet sur un principe de couches, chaque instruction d’un fichier dockerfile créé en effet une couche au dessus des modifications déjà effectuées.

docker-layers

Lorsque l’on souhaite récupérer une image, Docker va donc récupérer celle-ci, couche par couche en commençant par l’image de base de l’OS. Et bien évidemment si la ou les couches sous-jacentes à la dernière couche de votre image sont déjà disponibles sur votre ordinateur, Docker ne les récupèrera pas de nouveau.

Ainsi si vous avez différentes images basées sur l’image microsoft/windowservercore, vous n’aurez pas à récupérer les 4Go de celle-ci à chaque fois, vous récupèrerez uniquement les couches qui ne sont pas encore disponible sur la machine hôte.

Les images de base

D’un point de vue OS, Microsoft propose deux images de base de Windows Server, une pour Windows Server Core qui pèse 4 Go en compressé, et une autre pour la nouvelle version “ultra-light” de Windows nommée Windows Nano Server. Celle-ci pèse 300Mo compressée.

Windows Nano Server correspond à un important travail de refactoring de Windows et de suppression de différents services considérés comme étant inutiles pour ce type de serveur.

Vous pouvez apprécier avec le schéma ci-dessous le résultat de cet effort de réduction :

image

25 fois plus petit qu’un Windows Server classique,  et avec une image Docker 10 fois plus petite que Windows Server Core, Windows Nano Server est l’édition indispensable pour bénéficier d’une empreinte la plus petite possible.

Ces deux images sont disponibles comme beaucoup d’autres images sur le hub de docker. Docker Hub est une bibliothèque d’images Docker, les plus grandes sociétés et éditeurs mettent à disposition leurs images Docker directement sur ce service qui permet d’héberger des images publiques mais également privées.

Il est important de noter que des images de base contenant uniquement des OS sont disponibles mais également des images contenant des frameworks applicatifs déjà installés. Il n’est donc pas nécessaire de se baser sur une image “nue”, le plus simple est de partir sur l’image correspondant le plus à votre besoin.

Le choix entre Windows Server Core et Windows Nano Server va essentiellement se faire en fonction de l’applicatif que vous souhaitez conteneuriser. Les deux éditions sont effet loin d’être iso-fonctionnelles et vous devrez faire votre choix en fonction des dépendances de votre application.

Ainsi si vous souhaitez déployer une application ASP.net WebForms ou MVC et donc basée sur le framework .net classique, vous devrez impérativement utiliser Windows Server Core car le framework .net n’est pas supporté sur Nano Server.

A contrario, si vous déployez une application ASP.net Core, Windows Nano Server, plus léger sera probablement votre choix de prédilection.

D’un point de vue Licensing

D’un point de vue Licensing tout est décrit dans le tableau ci-dessous :

image

Comme vous pouvez le voir, il est important de noter la limitation à deux conteneurs Hyper-V en édition standard alors que les conteneurs Windows sont eux, illimités.

Du côté du cloud

Côté cloud, que cela soit sur Microsoft Azure ou sur le cloud d’Amazon, il est pour le moment nécessaire de passer par des offres IaaS et donc d’avoir un host sous forme de VM pour héberger des conteneurs Windows. Les deux fournisseurs fournissent le même type d’image Windows Server 2016 with Containers qui proposent une instance de Windows Server 2016 avec les fonctionnalités de conteneurisation déjà installées et fonctionnelles.

Les services d’hébergement de conteneurs ne peuvent héberger que des conteneurs Linux chez ces deux fournisseurs de cloud.

Une preview privée est en cours sur le service Azure Container Service, et Amazon à annoncé le support des conteneurs Windows d’ici la fin de l’année 2016.

Il va donc falloir patienter un petit peu pour profiter d’un service dédié probablement moins coûteux qu’un service d’IaaS.

 

Rendez-vous pour un prochain post sur Docker afin d’aborder le déploiement d’applications d’ASP.net par la pratique !

Quoi de neuf dans Windows Server 2016 pour les développeurs ?

Windows Server 2016 est disponible depuis le 12 Octobre en On-Premise mais également sur Microsoft Azure, depuis le 19 Octobre sur Amazon, et arrivera peut être un jour chez OVH 🙂

Il est donc temps de faire un point sur les nouveautés qui nous concernent en tant que développeurs.

IIS 10 et HTTP/2

Enfin ! Microsoft continuant de lier le cycle de vie de IIS aux versions de Windows Server, nous avons du attendre de (trop) longs mois afin de pouvoir profiter de HTTP/2 sur la plate-forme Microsoft. Les occasions de proposer de meilleures performances pour vos applications web sans faire aucun effort de développement sont rares, il faut en profiter !

Avantage le plus important, HTTP/2 permet de gérer les connexions TCP de manière beaucoup intelligente en permettant de multiplexer des requêtes HTTP. Cette évolution permet de réduire la latence que l’on ressent de manière importante en consultant certaines pages web puisqu’il permet d’effectuer x requêtes en parallèle, au lieu d’avoir des requêtes séquentielles où on attendait le résultat de la 1ere requête pour débuter la seconde :

Afficher l'image d'origine

Plus de 80% des navigateurs utilisés en France sont compatibles avec HTTP/2 il est donc temps de pouvoir en faire bénéficier tous les utilisateurs de nos applications web.

image

Sans même évoquer les autres nouveautés proposées par HTTP/2, cette nouvelle fonctionnalité de IIS 10 impose à mon avis à elle seule la mise à jour de vos serveurs vers Windows Server 2016.

Les Containeurs Windows et Hyper-V, Windows Nano Server

Illustration de la stratégie Cloud First, et suivant le succès de Docker dans le domaine de la conteneurisation d’applications sous Linux, Microsoft collabore avec Docker depuis 2 ans afin de proposer cette même solution sous Windows.

Il s’agit probablement là d’une des nouveautés les plus coûteuses en terme d’efforts et de développement pour cette nouvelle version de Windows Server. Microsoft a en effet dû une nouvelle fois faire un refactoring de Windows, mais également développer de nouvelles primitives afin de rendre possible techniquement cette conteneurisation.

Nous avons donc droit gratuitement à une intégration de Docker au sein de Windows Server 2016 avec deux niveaux d’isolations différents :

  • Les conteneurs Windows qui permettent d’avoir une virtualisation d’OS où le kernel de Windows est partagé entre la machine hôte et les conteneurs
  • Les conteneurs hyper-v qui permettent d’avoir une virtualisation de l’OS complète (kernel compris) sans la couche de virtualisation matérielle. Il est ainsi possible de faire tourner par exemple des conteneurs Linux en utilisant ce niveau d’isolation.

Et afin d’éviter d’avoir à gérer des images énormes comme ce que l’on pourrait avoir avec Windows Server Core qui était pourtant le Windows Light qui nous était proposé depuis 2008, une nouvelle édition Ultra Light de Windows est à présent disponible : Windows Nano Server.

Vous pouvez apprécier avec le schéma ci-dessous le résultat de cet effort de réduction :

image

25 fois plus petit qu’un Windows Server classique,  et avec une image Docker 10 fois plus petite que Windows Server Core, Windows Nano Server est l’édition indispensable pour bénéficier d’une empreinte la plus petite possible.

image

L’intégration de Docker permet de gérer les déploiements de nos applicatifs de manière totalement différente à ce que l’on pouvait faire jusqu’à présent, environnements strictement identiques, réversibilité (physique, vm, cloud) assurée et des plus simples grâce aux conteneurs, blue-green deployment simplifié, etc.

Je reviendrais sur ce sujet plus en détail sur ce blog, et si vous êtes près de Toulouse, je vous invite également à venir discuter de cela au prochain meetup .net de Toulouse !

[Tips] Changer la culture de tous les threads en 1 ligne de code

Avec ASP.net, il est possible de définir globalement la culture via le fichier de configuration web.config et les attributs uiCulture et culture de la balise globalization :

<globalization uiCulture="fr-FR" culture="fr-FR"/>

Seul problème, cette configuration ne s’applique pas à l’ensemble des threads créés manuellement depuis les pages/handlers/modules.

En effet, si on créé un thread depuis une page, la culture par défaut de ce thread sera la culture du système sur lequel l’application est installée.

Avant .net 4.5, il était donc nécessaire de changer la culture manuellement à chaque création de thread.

Depuis .net 4.5, il est possible de définir une culture par défaut pour tous les threads qui seront créés par votre application via la propriété statique DefaultThreadCurrentCulture de classe CultureInfo :

CultureInfo.DefaultThreadCurrentCulture = ci

ASP (.net) a un cycle de 6-7 ans

Comme annoncé par Scott Hanselman ASP.net 5 actuellement en RC (et annoncé comme étant “production ready) est renommé en ASP.net Core 1.0.

Le nommage rejoint ainsi celui de .NET Core et se distingue plus clairement d’ASP.net 4.6 en ne laissant pas supposer qu’il s’agit d’une mise à jour de cette version mais bien d’un nouveau produit.

Cela est maintenant bien plus clair et peut donc inquiéter les développeurs qui n’avaient pas encore assimilé ce saut technogique entre ASP.net 4.6 et l’ex ASP.net 5 : “Encore une nouvelle version, qu’il va falloir assimiler, encore des réécritures/refontes/migrations en vue”.

Oui, cela est tout à fait vrai, c’est bien un nouveau produit qui devrait prochainement être disponible en RT(M/W), mais les plus grosses ruptures ne sont pas si fréquentes que cela, si l’on analyse les versions 1.0 de chaque technologie de développement web proposée par Microsoft, on se retrouve avec un cycle plutôt stable de 6-7 ans :

image

Cela peut sembler être une vision un petit simpliste car plusieurs changements ont été apportés notamment entre les différentes versions d’ASP.net MVC mais est quand même représentatif des ruptures auxquelles nous avons eu droit pour le moment.

image

Ressources supplémentaires sur le développement d’applications métier (LOB) pour Windows 8 et WP8

Comme indiqué précedemment, j’ai eu l’opportunité de présenter une session sur le développement d’applications métier pour Windows 8 et Windows Phone 8 avec la précieuse aide d’Audrey Petit.

image

Nous avons évoqué une grande variété de sujets (Opportunités, Déploiement (via le Store ou déploiement privé), Ergonomie Modern UI, Stratégies, Transition vers ModernUI, etc.) et n’avons donc pas pu approfondir tous ces sujets en 1h.

En fonction des Q&A de fin de session, je vous propose donc une liste de ressources complémentaires qui vous permettra d’aller plus loin sur certains points.

Pour débuter cette liste de ressources, je vous propose en plus des différentes démonstrations que nous vous avons montré, un case study sur le développement d’applications métier pour Win8.

Du côté utilisateur, voici un post de blog indiquant comment Utiliser des applications d’entreprise avec Windows 8 [US]. La fonctionnalité est présentée dans le contexte “Bring your own device” mais correspond tout à fait à celle indiquée durant la session.

Du côté IT, pour le déploiement des applications via Intune et l’app portail d’entreprise vous pouvez consulter cette présentation très complète sur le déploiement d’applications d’entreprise pour Windows Phone [FR]

Si vous souhaitez une synthèse du processus de déploiement que nous avons décrit vous pouvez également consulter ce post ainsi que ce post rentrant plus dans le détail de Windows Intune.

Toujours sur Windows Intune, Channel9 propose une démo en vidéo du process de déploiement.

Nous avons également parlé des possibilités de déploiement via scripts, vous trouverez sur cette page la documentation sur ceux-ci mais également sur la suppression des applications comme demandé durant la session de Q&A.

A propos de la question sur la possibilité de créer des applications ASP.net avec le look ModernUI, vous trouverez ici un ensemble de ressources permettant d’y arriver avec présence des plugin jQuery que j’avais évoqué.

Et enfin pour confirmer ce que j’indiquais à propos de l’addin de storyboarding pour Powerpoint il vous faudra disposer de Visual Studio 2012 Test Professional, Premium ou encore Ultimate pour être capable d’en profiter :

image