lundi 19 juin 2017

ASP.NET MVC & WebAPI + Angular2 - Templates for Visual Studio 2017

Au sujet d'Angular2 et des templates pour Visual Studio, en reprenant ce sujet je suis un peu surpris de constater que l'on tombe à nouveau sur le Pack de Mads Kristensen que j'adore par ailleurs. La fois précédente, j'étais avec Visual Studio 2015 et MVC5, je devais installer tout un tas de trucs :

Visual Studio 2015 Update 3. Note that Update 2 is not enough.
.NET Core 1.0.1
TypeScript 2.0 for Visual Studio 2015.
Node.js version 4 or later.

Maintenant que je suis avec Visual Studio 2017 quel est le Template me propose Mads ? J'ai hâte de le découvrir.

ASP.NET and Angular2

Templates for Visual Studio 2017

Actuellement mon Visual Studio 2017 me propose comme application Web, les templates suivants :

Visual Studio 2017 Templates de base
Application web ASP.NET (.NET Framework)
Application web ASP.NET Core (.NET Core)
Application web ASP.NET Core (.NET Framework)

Visual Studio 2017 Templates
Si je choisie MVC :

Visual Studio 2017 Templates MVC
J'obtiens la structure d'application suivante :
Template pour ASP.NET .NET Framework MVC
Si je choisie WebAPI, j'obtiens la structure d'application suivante :

Template pour ASP.NET .NET Framework WebAPI

Comparaison des Templates MVC et WebAPI

J'en profite au passage pour repérer les grandes différences entre les deux types d'application MVC et WebAPI.

ASP.NET MVC vs ASP.NET WebAPI
Au niveau du fichier Global.asax.cs on notera la différence fondamentale suivante :

Global.asax.cs MVC vs WebAPI

Installation du Pack

Je clique sur le .vsix de Mads : ASP.NET Core Template Pack v1.1.37.vsix
Une petite popup plus loin :
Installation du ASP.NET Core Template Pack
Ben en fait, quedalle, nada, wallou ... il s'agit d'une erreur de ma part je n'ai pas lu assez profondément les prérequis du Template Pack qui ne s'installe qu'avec Visual Studio 2015.

Fin des opérations.
Qu'elle déception !

ASP.NET MVC WebAPI + Angular2 with Visual Studio 2017

Je pensais que l'utilisation de Visual Studio 2017 simplifierait les choses mais pour l'instant pas de Template. Donc, création d'une application de base ASP.NET .NET Framework MVC WebAPI Angular2 "à la mano" :

Fichier->Nouveau->Projet :
Création d'un projet Application Web ASP.NET .NET Framework MVC WebAPI Angular2
Choix du Template de base .NET Framework 4.6.1 :

Application web ASP.NET (.NET Framework)
Choix des options l'application modèle ASP.NET 4.6.1 :

ASP.NET 4.6.1 MVC option WebAPI
Il s'agit maintenant de configurer les packages Angular2 à l'aide de l'outil NPM (Node Package Manager)

Création du fichier package.json dans le projet

On créé un fichier .json nommé package.json  :

Ajouter une légende
Création d'un fichier de package JSon :

package.json pour l'utilçisation de NPM

Contenu du fichier package.json sur GitHub

Je vais chercher le contenu de ce fichier à l'adresse suivante :

https://github.com/angular/quickstart/blob/master/package.json
Je remplis mon nouvel élément .json avec le contenu de ce fichier trouvé sur GitHub :

Contenu du fichier package.json

Restauration des packages Node.js pour Angular2

En cliquant droit sur le fichier package.json->Restaurer les pacakges :

Fonctionnalité de Restauration des packages Nodes sur un fichier package.json
Le résultat de l'exécution de cette commande dans le fenêtre de Sortie : Bower/npm :
Sortie : Bower/npm
Un répertoire node_modules a été créé dans la solution :
Cliquez sur Afficher tous les fichiers :

Répertoire des packages NodeJS

Configuration du SystemJS

Ajout d'un fichier systemjs.config.js dans la solution :

Création du fichier systemjs.config.js
Son contenu se trouve à l'adresse suivante : 

systemjs.config.js

Configuration du TypeScript JSON

Ajouter->Nouvel élement ... tsconfig.json
Son contenu sur GitHub :

Le fichier de Configuration TypeScript sur le site de GitHub
Voilà notre application de base pour Angular2 est maintenant prête, elle s'exécute :

Exécution de l'application ASP.NET .NET Framework MVC WebAPI + Angular2 pour Visual Studio 2017
Je me demande bien pourquoi tout cela n'est pas encore dans un Template, je suppose que maintenant il est facile de démarrer avec Visual Studio 2017 et Angular2, cela intéresse donc moins Mads.

Template MVC WebAPI + Angular2 pour Visual Studio 2017

Supprimer le contenu du répertoire packages qui pèse 52,6 Mo
Supprimer le répertoire node_modules qui pèse 103 Mo

Archivez le tout.

Cliquez sur le lien suivant pour télécharger le projet Visual Studio 2017

Restaurer les NuGets

Pour restaurer votre application de base avec Angular2, il faudra restaurer les packages nugets par :
Bouton droit sur le projet->Gérer les packages NuGet...

Gérer les packages NuGet
Gestionnaire de packages NuGet : ASP.NET Framework MVC WepAPI + Angular2 

Gestionnaire de packages NuGet

Restaurer les packages NodeJS pour Angular2

Sur le fichier de gestion des packages faites Bouton droit->Restaurer les packages :

Restaurations des packages NodeJs pour Angualr2
Voilà, vous êtes enfin prêt à travailler avec ASP.NET en C# modèle MVC & WebAPI + Angular2.

Souriez, j'espère que vous êtes content !

jeudi 1 juin 2017

Setup AngularJS for ASP.NET Core 1.0.1

Vous avez installé les derniers tools pour Visual Studio et vous souhaitez travailler avec AngularJS mais vous vous demandez comment faire ? Alors voici la réponse (évidemment on est toujours avec Visual Studio 2015) :

Premièrement

Installez la bonne plateforme, le bon template :
Set up Angular JS for ASP.NET Core 1.0

Deuxièmement

Suivez attentivement la vidéo :
Building JavaScript apps with Angular
(si vous en avez marre de cette vidéo trop longue, vous pouvez aussi poursuivre la lecture de cet article)

Résultat

Le résultat le voilà ! Vous devez obtenir le résultat suivant :

ASP.NET Core 1.0.1 AngularJS
Je ne dis pas que c'est facile bien au contraire.

Explications

Donc vous êtes d'accord, la question en bas de la vidéo : C'est quoi le template de départ ? Est maintenant résolue ...

En effet cette question est posée dans les commentaires de la vidéo et c'est véritablement la question cruciale, celle qui nous aura pris le plus de temps : Comment installer notre application de base pour travailler avec toute cette pile de logiciels correctement ?

Après toutes ces configurations, la structure de l'application est la suivante :

ASP.NET Core 1.0.1 AngularJS
Le fichier app.js a le contenu suivant :

app.js
J'attire également votre attention sur le fichier de références qui doit être modifié "à la main" :

_references.js
Et enfin le contenu du fichier html que je vous présente ici :

Fichier index.html de la solution

Conclusion sur ASP.NET Core 1.0 and AngularJS

Bon, je suis pas mécontent d'y être arrivé. La difficulté pour moi je me suis légèrement perdu, j'ai tenté de créer un contrôleur avec le bouton droit de la façon suivante :
Ajouter un Controlleur JavaScript
Ajout d'un Contrôleur AndularJS utilisant Scope
Ce qui a eu pour effet de créer un fichier dont le contenu est le suivant :

Contrôleur AndularJS utilisant Scope
J'ai cru que j'avais trouvé un truc, le moyen de créer un contrôleur facilement et rapidement mais ce fut le contraire, ce truc m'a fait perdre du temps ! Le contrôleur ainsi créé ne fonctionne pas avec ce nouveau model d'application. Et oui on fait un pas avant et un pas en arrière.

Sincèrement, vous voulez mon avis ? Je vais vous le donner quand même, il me semble que l'on est un peu revenu en arrière, si si je vous assure, quand il y avait quelques petits malins qui arrivaient avec des scripts persos pour développer au-dessus d'ASPX et qu'on leur disait mais arrête de te faire chi(bip)... avec le JavaScript regarde plutôt AjaxControlToolkit ... Et bien on en est revenu là !

Bref, chacun sa paroisse, aujourd'hui les outils pour écrire des JS sont bien plus évolués comme intellisense et autres, ils permettent d'être un peu efficace même avec Visual Studio mais à quand une chaîne de développement RAD pour Appli Web ?

Have fun !