Les Propulseurs de l’ATIR sont des jeux structurés de ressources en nuage, documentation incluse, illustrant une technologie émergente. Offerts gratuitement, ils ont été conçus par des entreprises canadiennes d’expérience qui ont élaboré des produits ou des services au moyen de la technologie en question et ont accepté de partager leur savoir.
Ce Propulseur a été créé et la documentation rédigée par Apption
Aperçu de la Solution type
Ce Propulseur propose une solution conviviale à ce qui suit.
- Analyser des données non structurées, identifier le type de données et formuler des recommandations pour leur stockage
- Identifier les données sensibles (nom et prénom, par exemple)
- Convertir les donnes de sources non structurées en base de données en nuage (ou ailleurs) sur SQL Server en quelques étapes guidées
Apption a été créé sur la plateforme .NET Core et peut être lancé dans le nuage ATIR de CANARIE ou être exécuté dans Electron.NET (navigateur intégré).
Veuillez lire la page Solution type pour en savoir plus sur la Solution type et la façon de déployer l’application.
La Solution type recourt aux technologies suivantes : Docker, ASP.NET Core, Blazor, Electron.NET.
Objectifs
Principales caractéristiques
L’apprentissage machine et l’analyse des données avec un système complexe nécessitent souvent l’ajout de jeux de données externes desquels on tirera des conclusions neuves. Or ces jeux de données sont rarement organisés. Ils viennent avec une foule de colonnes et pourraient contenir des données sensibles dissimulées derrière des tabulations mal définies.
Pour intégrer des fichiers si mal structurés, le développeur a besoin d’une multitude d’outils et doit déployer des efforts appréciables pour comprendre les données, en évaluer la qualité et les charger dans un dépôt central. Malheureusement, de tels outils coûtent cher et abondent en fonctionnalités. En outre, s’ils autorisent la conversion et l’analyse des données, c’est souvent dans une fenêtre très étroite.
D’autre part, quand les fichiers renferment des informations délicates, il arrive qu’on doive prendre en compte des aspects précis sur le plan de la sécurité. Ainsi, au Canada, la Loi sur la protection des renseignements personnels et les documents électroniques oblige les sociétés à prendre des mesures pour protéger les données personnelles en leur possession.
Créer des jeux de données avec les outils ETL (extraire, convertir, charger) existants n’est pas une mince affaire, même avec des fichiers rudimentaires, et un engorgement paralysera tôt ou tard le projet d’analyse ou de recherche. La Solution type propose une méthode simple, en quatre étapes, couvrant les tâches les plus courantes de ce genre.
Avantages techniques
Outre ses fonctionnalités, l’application peut servir de modèle pour intégrer les technologies que voici.
Évolutif et portatif
Le code a été conçu pour être utilisé sur de nombreuses plateformes d’exploitation (Linux, Windows, MacOS) et beaucoup d’hôtes (Docker, Electron). Son architecture facilite une manutention efficace des jeux volumineux de données.
L’API est évolutive et on peut y ajouter d’autres analyseurs pour identifier de nouveaux types de données.
Fonctionnement
Le diagramme qui suit illustre comment fonctionne la Solution type.
Architecture du système
Ressources
On trouvera les informations de base sur les technologies employées pour créer la solution ici : .NET Core, Blazor, Electron, and Docker.
Tutoriels
Le tableau qui suit dresse la liste (non exhaustive) des hyperliens menant aux didacticiels que l’auteur juge le plus utile.
Tutoriel | Résumé |
ASP.NET Core est une infrastructure de source ouverte multi-plateformes à haute performance permettant de construire des applications d’infonuagique modernes connectées à Internet | |
Blazor | Blazor est un projet qui recourt à WebAssembly (https://webassembly.org) pour développer des applications clientes en C# plutôt qu’avec les infrastructures JavaScript habituelles (React, Angular, etc.) |
Electron.NET | Electron.NET (bâti avec Electron https://electronjs.org) est un outil permettant à l’utilisateur d’héberger des applications .NET sur diverses plateformes |
Docker | La technologie Docker permet l’exécution d’applications (images Docker) sur des Docker Engines, machines virtuelles distinctes, installées sur des systèmes d’exploitation avec serveurs |
Pratiques exemplaires
Recommandations en matière de sécurité
- Sécurisation de l’image Docker (en anglais)
- Rédaction d’un code de cœur ASP.NET sécurisé
- Configuration de règles sensibles pour pare-feu et restriction maximale de l’accès au réseau lors du déploiement de Docker (en anglais)
Sécurisation des données inactives
- Moteur de base de données Always Encrypted sur SQL Server – disponible dans toutes les versions
- Chiffrement TDE sur SQL Server – nécessite la version Entreprise
Applications multi-plateformes hybrides pour l’ordinateur et le Web
- NET et .NET Core sur Windows/Linux/MacOS
- Développement d’applications pour ordinateurs avec Electron.NET (en anglais)
Réglementation des données au Canada
- Résidence des données : https://blog.privacylawyer.ca/2011/04/cloud-computing-and-privacy-faq.html (en anglais)
- Encryptage des données sensibles : https://www.priv.gc.ca/fr/sujets-lies-a-la-protection-de-la-vie-privee/lois-sur-la-protection-des-renseignements-personnels-au-canada/la-loi-sur-la-protection-des-renseignements-personnels-et-les-documents-electroniques-lprpde/lprpde_survol/
Trucs et hics
- Travailler avec Blazor. Cette nouvelle technologie a nettement simplifié le développement des applications Web en permettant la rédaction de la logique frontale en C#. Elle nécessite toutefois qu’on saisisse bien le cycle de vie/le rendu des composants avant d’élaborer des interactions complexes avec l’utilisateur.
- On trouvera un exemple de Blazor C# dans le projet WebAppMaterialize (composants du répertoire et pages du sous-répertoire). Tous les fichiers se terminant par .razor renferment le côté client en C#.
- NET Core. L’inversion de contrôle et l’injection de dépendances doivent être bien maîtrisées si on veut structurer l’application correctement et élaborer des services.
- Uploadcontroller.cs dans le projet WebAppMaterialize illustre une injection constructive, sorte d’injection de dépendances.
- Chargement d’un fichier volumineux. Le code côté client et le code côté serveur étaient nécessaires pour autoriser le chargement de fichiers avec XHR (technologie qui scinde un fichier en blocs au lieu de le charger en entier). La Solution type recourt à JQuery pour l’interface Web cliente et à un contrôleur sur mesure pour le côté serveur.
- La fonctionnalité de téléversement se trouve dans UploadController.cs, dans le répertoire Controllers du projet WebAppMaterialize.
- Enfilage multiple. On a recouru à la conception réactive avec Rx.NET pour harmoniser le pipeline du traitement en présence de nombreux fils. La configuration de l’ordonnanceur d’enfilage a permis un traitement distinct des événements découlant de la mise à jour des interfaces utilisateur.
- On trouvera des exemples d’enfilage multiple dans la fonction StreamReadFileAsync écrite en FileAnalyzer.cs dans le projet DataTools.