jeudi 16 janvier 2020

ASP.NET Core - Authentification avec Angular

Regardons un peu ce que nous propose le Template de Visual Studio en matière d'authentification pour les applications ASP.NET Core & Angular. Je me souviens qu'avec ASP.NET Core 2.2 il n'y a pas moyen de changer on est obligé de choisir l'option "No Authentification".

Comparons les deux version d'ASP.NET Core :

ASP.NET Core 2.2

Avec ASP.NET Core 2.2 - No Authentification
Avec ASP.NET Core 2.2 - No Authentification
Avec ASP.NET Core 3.0


ASP.NET Core 3.0 - Change Authentification
ASP.NET Core 3.0 - Change Authentification
Je clique sur Change Authentification :

ASP.NET Core 3.0 - Options pour l'Authentification
Learn more about third-party open source authentification

ASP.NET Core & Angular & Authentification

Voici les fichiers créés par le Template :


src/api-athorization
src/api-athorization
Voilà, toute la structure de l'application en TypeScript concernant l'authentification dans les applications ASP.NET Core & Angular est là.

Microsoft - Authentification et autorisation pour SPAs

Le lien plus haut nous donne accès aux parties tierces fournisseurs de services d'authentification.

Exécution de l'application ASP.NET Core 3.0

Je lance l'exécution de mon application :


Template d'application ASP.NET Core 3.0 avec Authentification
Template d'application ASP.NET Core 3.0 avec Authentification
Et ce qui m'intéresse c'est de pouvoir me Logger :

ASP.NET Core 3.0 - Register a new User
ASP.NET Core 3.0 - Register a new User
On ne peut pas dire que le formulaire de "Log in" soit de plus fun mais il y a l'essentiel je note la fonctionnalité "Forgot your password ?". Et je créé un nouvel utilisateur :


ASP.NET Core 3.0 - Create a new User
ASP.NET Core 3.0 - Create a new User
Là non plus c'est pas des plus fun mais il y l'essentiel.


Ah c'est mots de passe quelle chianlie !


Puis finalement, je peux cliquer sur Register pour créer mon nouvel utilisateur :

ASP.NET Core 3.0 - Création de tout un système d'authentification
ASP.NET Core 3.0 - Création de tout un système d'authentification
Avec ASP.NET Core 3.0, c'est drôlement bien fait, tout est là, la base ASP.NET d'authentification a été crée. Les explications de ce qu'il faut faire pour continuer nous sont données.

Je vous laisse poursuivre la découverte de ce nouveau module que j'identifierai par IdentityServer4, cela me rappelle mes premières applications ASP.NET en 2003 avec mon premier projet dans le CodePlex : "Login Module".

Par la suite, il faut savoir comment séparer votre application métier de toute la mécanique d'authentification.

Have fun!




mardi 14 janvier 2020

Quel est le meilleur framework front pour ASP.NET Core ?

J'ai envie de passer un peu de temps à me poser cette question, je suis adepte d'Angular mais pourquoi pas autre chose et qu'est ce que cela impliquerait pour mon application développée avec ASP.NET Core en C# ?

La question est vite entendue avec une autre question, un peu équivalente posée par l'excellent site Développez.com qui a posé cette question sous la forme suivante : Quels sont les frameworks que vous aimeriez apprendre en 2019 ? Et quelles sont vos motivations ?

En effet cette question consiste à demander aux développeurs dans quel Frameworks seriez vous prêt à investir votre temps ? Le temps, c'est le nerf de la guerre en cette matière, pour ma part je déteste investir du temps pour prendre en main une technologie qui sera en suite abandonnée rapidement (cf. Silverlight).

C'est bien aussi pour cette raison que je souhaite être le plus certain possible de faire le bon choix. Vous pouvez voter sur le site de Développez.com pour répondre à ce sondage que voici :


https://www.developpez.com/actu/245356/Quels-sont-les-frameworks-que-vous-aimeriez-apprendre-en-2019-Et-quelles-sont-vos-motivations/
Développez.com - Quels sont les frameworks que vous aimeriez apprendre en 2019 ?

Concernant Angular le site précise :

Angular est un framework coté client open source développé par Google et basé sur TypeScript. Il s'agit d'une réécriture complète du framework JavaScript AngularJS, construit par la même équipe.
On peut déjà verser une larme pour ceux qui ont investi massivement sur AngularJS encore qu'ils ont certainement pu s'adapter rapidement ...

C'est une bonne chose lire cela : "la même équipe". Ce n'est pas donné souvent cette opportunité de réécrire une stack en améliorant et en corrigeant la précédente. Ca dénote un vrai respect pour le travail de l'équipe de dev.

En suite, c'est donc le choix de Google basé sur un langage TypeScript créé par Microsoft, c'est donc le bon combo à mon humble avis.

https://angular.io/cli
Angular CLI

Et puis Angular, entre nous cela permet de faire l'impasse sur le Razor et entre Razor et Razoir, il n'y a qu'une lettre, vous ne trouvez pas !

Mise à jour en 2020

Et surtout pour le choix d'un framework javascript il y a ce fameux document :

The Ultimate Guide to JavaScript Frameworks

Et pour étayer il y a ce post où je découvrais les frameworks JavaScripts proposés avec Visual Studio

Que penser de React pour ASP.NET Core ?

Si vous tombez sur ce post :

https://2018.stateofjs.com/front-end-frameworks/angular/

Attention les chiffres sont trompeurs. C'est le seul article qui donne React en tête, je suis circonspect ... Sinon souvenons-nous que React est le framework de Facebook et que Angular est soutenu par Google qui a adopté le TypeScript langage créé par Microsoft.

Pour moi Angular est donc le bon choix, CQFD !

lundi 6 janvier 2020

Universal Dashboard - ASP.NET Core & React + PowerShell

Concernant le Dashboard Universel, nous étions resté en rade sur la piste du Dashboard RubyOnRails mais en cherchant une nouvelle piste voici le Dashboard Universel by Ironmansoftware et cette fois nous avons une piste proche des technologies recherchées : ASP.NET Core & React + PowerShell,

Cela semble très puissant pour contrôler votre système d'information, de quoi s'agit-il ?


Dashboard Universel
Dashboard Universel

Découvrons le projet Open Sources d'Ironmansoftware sur GitHub :

GitHub - ironmansoftware / universal-Dashboard

https://github.com/ironmansoftware/universal-dashboard
ironmansoftware/universal-dashboard
Avec 28,2 % de C#, le JavaScript c'est du React.

Je tente l'installation de la version "community" pour faire quelques essais.

PS C:\Users\mabyre>Install-Module UniversalDashboard.Community -Scope CurrentUser -Force

Install-Module UniversalDashboard.Community -Scope CurrentUser -Force

Au passage, j'installe Nuget provider pourquoi pas.

Et je créé un nouveau fichier PowerShell avec Visual Studio Code, grâce à la commande suivante :

code .\mydashboard.ps1

Au moment de lancer l'exécution de mon script :

Universal Dashboard - Exécution
Install des modules manquants

Et donc j'installe, Kubernates, Docker et Develop PowerShell et puis je peux lancer l'exécution de mon script de création d'un Dashboard Universel :

Exécution du Script Dashboard.ps1

Par la suite, je relance par erreur l'exécution de ce script, tout est rouge mais il me donne quelques explications supplémentaires qui vont me permettre d'aller au bout :

Exécution du Script Dashboard.ps1

Je remplace 0.0.0.0 par localhost dans l'expression et voici que l'exécution de mon Dashboard se lance "un peu plus" :

Dashboard ASP.NET Core & React
Exécution de mon premier Dashboard ASP.NET Core & React


Après avoir corrigé deux trois erreurs dans mon script powershell, voici l'exécution de mon script mydashboard :

$Dashboard = New-UDDashboard -Title "Process" -Content {
    New-UDChart -Title "Process Memory" -Endpoint {
        Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5 | Out-UDChartData -DataProperty "WorkingSet" -LabelProperty "Name"
    }
}

Start-UDDashboard -Dashboard $Dashboard -Port 10000 -AutoReload

Et le résultat de son exécution dans mon navigateur :

Mon premier Dashboard avec Universal Dashboard
Affichage dans le navigateur de mon premier Dashboard avec Universal Dashboard

Les trois processus qui prennent le plus de mémoire sur ma machine sont donc :

devenv, sqlservr, ServiceHub.RoslynCodeAnalysisService32

Pour aller plus loin, voici un peu plus de doc là :

Universal Dashboard - Getting Started

Ce module UniversalDashboard reste extrêmement programmatique d'utilisation, il s'agit d'écrire un script PowerShell ce qui n'est pas donner à tout le monde.

Je vous propose de me suivre sur les réseaux pour découvrir demain un projet de Dashboard Universel. Cette fois une plateforme web vous permettant de créer vos propres Dashboard afin de mieux contrôler, de mieux exploiter, votre système d'information.

ASP.NET Core & Entity Framework & Angular

CQFD !