Affichage des articles dont le libellé est .NET Framework. Afficher tous les articles
Affichage des articles dont le libellé est .NET Framework. Afficher tous les articles

WPF avec .NET Core et .NET Framework

Je cherche à créer un projet WPF (Windows Presentation Foundation) et Visual Studio Community 2019. Que puis-je instancier comme applications WPF sur quel type de .NET Framework ?

Avec Visual Studio Community 2019 le choix des templates d'applications à bien changé (dans la forme ) :

Visual Studio - Template d'applications

Je peux créer une application WPF soit avec .NET Framework soit avec .NET Core. Mais je peux également créer une Application de Navigateur avec .NET Framework :

Visual Studio - Template d'application de Navigateur

Cela me fait penser aux vieilles applications XBAP en WPF pour le navigateur qui ne fonctionnaient que sur Internet Explorer, IE comme on l'appelait à l'époque.

Je vous laisse de côté le Visual Basic, ce serait bien stupide de vouloir développer aujourd'hui en Visual Basic. Sacré Bilou, il aura fallut qu'il continue de nous gonfler avec son foutu langage Visual Basic qui lui survivra ...

Si j'instancie une Application de Navigateur WPF et que je clique sur "run" :

Visual Studio - Application de Navigateur XBAP

Il s'agit bien d'un fichier XBAP qui essaye de se télécharger dans mon navigateur. Mais j'essaye d'éxécuter mon application, je trouve ce commentaire :

As far as I know, the browsers Edge doesn't support it. The XBAPs are intended to be used in intranet scenarios where all users use Internet Explorer. And many settings (such as security) are associated with IE. So, when you run it by other browser, it may have some issues.

Alors laissons cela de côté pour reprendre les Applications WPF pour le poste.

D'une part, j'ai une application WpfAppCore1 avec .NET Core :

WPF application with .NET Core
WPF Application with .NET Core

Et de l'autre, j'ai la même application mais avec comme Référence .NET framework :

WPF application with .NET Framework

Quelles autres différences entre WPF .NET Framework et WPF .NET Core :

Il y a un fichier App.config dans .NET Framework, pas dans .NET Core

Dans les csproj de .NET Core :

<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>
true</UseWPF>

Et dans celui de .NET Framework :

<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

Comparaison des deux instanciation d'application WPF :

Compare WPF .NET Framework vs WPF .NET Core
Différences entre WPF .NET Core et WPF .NET Framework

Ce que Microsoft nous prédit, c'est l'abandon de .NET Framework au profit de .NET Core ou .NET x.x. .NET Core est multiplateforme et open source disponible sur GitHub :

dotnet/wpf

Mais il y a pourtant encore des technologies disponibles avec .NET Framework qui ne le sont pas avec .NET Core :

  • La communication à distance identifiée comme une architecture problématique
  • Le sandboxing
  • Workflow Foundation
  • L'enregistrement des assemblys générés par réflexion
  • Les blocs de scripts XSLT

.NET Core est porté sur plusieurs plateformes .NET Framework n'est que sur Windows.

Si vous souhaitez effectuer une migration de .NET Framework vers .NET Core :

Microsoft - Migration d’applications WPF vers .NET Core

Tous ceux qui pensent encore que ce n'est pas possible de faire du WPF sur .NET Core vont devoir mettre à jour leur copie et moi le premier (mais c'était il y a longtemps). En effet .NET Core c'était ASP.NET Core (Web only).

Aujourd'hui .NET Core devient .NET 5.0 ... 6.0 .... etc

Pour tenter de comprendre les différentes version des frameworks de Microsoft vous pouvez regarder ici :

Blog .NET - Comprendre .NET Standard en 5 min

Alors en 5 minutes certainement pas, il faut bien plus de temps pour arriver en bas de cette page et franchement je n'ai pas tout compris.

Je viens d'instancier une Application WPF avec la dernière mise à jour de Visual Studio Community 2019 et dans le fichier .cproj je trouve :

<TargetFramework>net5.0-windows</TargetFramework>

Voilà, on vient de voir les trois types d'application WPF que l'on peut instancier avec Visual Studio Community 2019 et les différences qu'il y a entre .NET Framework et .NET Core.

Découvrons le projet Open Source Myrtille avec Visual Studio 2019

Il s'agit d'une application Web permettant de vous connecter aux ordinateurs à distance. Un RDP (Remote Desktop Protocol) en application Web.

Voici l'adresse du Github :

GitHub - cedrozor/myrtille

On nous dit qu'il faut Visual Studio 2017. Alors peut-on ouvrir la solution avec Visual Studio 2019 Community... ?

Je clone le répertoire sur mon disque dur grâce à GitHubDesktopSetup que je viens d'installer :

Github Clone myrtille

J'ouvre mon Visual Studio 2019 Community et j'ouvre la solution :

..\Visual Studio 2019\GithubClone\myrtille\Myrtille.sln

C'est toujours un moment délicat, soit tout va bien se passer et on va pouvoir continuer le développement, browser les sources regarder les modèles de données, soit l'ouverture du projet crash et il va falloir remédier avant d'imaginer utiliser les codes sources.

Ici, avec myrtille, l'installeur n'est pas compatible avec Community mais ça on le sait :

Installeur de myrtille incompatible avec VS Community

Pour le reste tout à l'air de se passer correctement.

Installeur de myrtille incompatible avec VS Community

Le chargement du projet myrtille me demande d'installer "Desktop development with C++".


Allons y ! C'est long, l'installation de la totalité de la chaîne et des outils de développement en C++.

Visual Studio 2019 Community se ferme automatiquement. Le processus d'installation sur ma machine actuelle prend environ 7 à 8 minutes. Visual se réouvre automatiquement avec un message "The installation has completed".

Me voilà avec un projet de développement myrtille :

Myrtille sous Visual Studio 2019 Community
Myrtille sous Visual Studio 2019 Community

Tout ceci m'a l'air très prometteur pour faire une incursion dans les technologies du projet. Si j'étais bourin, je ferais bouton droit sur la solution "Rebuild solution" mais je n'irais pas loin.

Essayons de voir ce qu'il manque en parcourant les références des différents projets. Le framework de myrtille c'est le .NET Framework 4.5. Je lance un coup de DotNetVersion sur ma machine de développement :

DoNet Version

Oups ... sur ma machine de DEV actuelle, je passe du 4.0.0.0 au 4.7.03062 ça n'est pas bon pour myrtille. La question est comment passer de .NET Framework 4.5 au .NET Framework 4.7 d'autant que je travaille actuellement sur cette machine avec .NET Core 3.0 ... 

Pour les amateurs de salmigondis :

Microsoft - Prise en charge des implémentations de .NET
En gros, il me faudrait installer une nouvelle machine (ancienne plutôt car 4.5 est un framework qui n'est plus supporté par le .NET Standard 2.1 cf. le tableau). 

Microsoft - Vue d'ensemble du Portage à partir de .NET Framework vers .NET Core
La migration de .NET Framework 4.5 vers .NET Core c'est peut être la solution mais dans ce cas; il y a du travail. Attention la dette technique augmente !

Vous avez une solution, vous êtes concerné par le projet "myrtille" n'hésitez pas à laisser votre commentaire, merci.

ASP.NET 5.0 - MVC 6 - Microsoft Virtual Academy

Oui c'est un peu ... compliqué disons mais pour le framework C# .NET la nouvelle version est la version 5.0 après les versions 4.0, 4.5 puis 4.5.1 ... pour le module MVC, lui il est en version 6. Il est grand temps de découvrir toutes ces nouveautés car elles sont nombreuses et surprenantes.

DNX : le nouvel environnement d'exécution de .NET enfin du multi-plateforme ... Whaou !

Microsoft Virtual Académie

Découvrez la Communauté Alt.NET oui ils en parlent dans la vidéo mais je reviens ici quelques années après et plus rien impossible de retrouver les membres de la communauté Alt.NET comme quoi tout est périssable en ce bas monde !

Heureusement que ce n'est que du soft !

Mise à jour en 2022 Microsoft Virtual Academy devient  :Microsoft Learn

ASP.NET 5 - Nouveautés

Connaissez-vous les nouveautés d'ASP.NET 5 ? Doit-on dire .NET Framework 5.0 ? Qu'est ce qui change ? Qu'est ce qui reste identique ?

La vidéo sur Microsoft Virtual Academy - Initiation à ASP.NET 5

Connaissez-vous le nouvel éditeur de code : Visual Studio Code ?
https://www.visualstudio.com/en-us/products/code-vs.aspx
A découvrir ...

ASP.NET 5

Visual Studio 2015 - MVC 6. Tout change encore, Razor @Html.LabelFor devient un htmlHelper <label asp.net.for="">. Une même application pourra faire tourner tous types de contrôleurs WebAPI MVC Json .... Plus de Global.asax remplacé par ...  Bref : ASP.NET 5, ils sont parti d'une page blanche.

Mais ... mais ... mais ... attention !

Enfin un environnement Multiplateforme : DNX le nouvel environnement d'exécution ! Multiplateforme !? Oui oui ça y est, nous y sommes.

Mise à jour en Mars 2017

Il semble que tout ceci soit maintenant connu sous la dénomination : ASP.NET Core Runtime

Frameworks C#.NET Multiplateformes

Après ces différentes études des plateformes de développement C# et des différents frameworks correspondants, on se doute que certaines équipes de développement souhaiteraient capitaliser sur un framework qui facilite le développement et capitalise un socle commun pour décliner une série d'applications permettant le développement multiplateforme : postes, tablettes, phone.

Voici donc certains produits sur le net répondants à cette problématique ...

DevForce

Toujours là en 2023, on dirait une sorte de framework "multiplateformes"

https://www.ideablade.com/products/devforce-features
DevForce implements an end-to-end n-tier architecture. It works by exposing a generic web service on the server that takes a LINQ expression and returns business objects to the client over the internet.

https://www.ideablade.com/products/devforce-downloads

Vous devez enregistrer pour obtenir une clef produit.

Il est possible de travailler avec Visual Studio 2010 mais la dernière version est faite pour VS 2012.

En suite, on trouve trois éditions du produit : Universal, Silverlight et WinClient.

Mais aussi le produit Cocktail qui permet de développer des applications Silverlight et WPF et prend en charge les modèles de développement comme MVVM et les design patterns.

Je vais installer DevForce 2010 Universal v6.1.14

https://www.ideablade.com/about

Si vous avez produits dans ce genre merci de nous envoyer un message de contact dans le formulaire adéquat ;-)

Quoi de neuf dans le Microsoft Framework .NET ?

Un peu d'histoire, qu'elles sont les étapes importantes, les modifications apportées au .NET Framework de Microsoft. On me pose souvent cette question lorsque l'on me demande si j'ai déjà travaillé avec telle ou telle version du Framework.

Voici donc pour ceux qui aiment l'histoire du développement logiciel de Microsoft .NET, les dates des releases des différentes versions du framework :
Overview of .NET Framework release history
GenerationVersion numberRelease dateDevelopment toolDistributed with
1.01.0.3705.02002-02-13Visual Studio .NETN/A
1.11.1.4322.5732003-04-24Visual Studio .NET 2003Windows Server 2003
2.02.0.50727.422005-11-07Visual Studio 2005Windows Server 2003 R2
3.03.0.4506.302006-11-06Expression BlendWindows VistaWindows Server 2008
3.53.5.21022.82007-11-19Visual Studio 2008Windows 7Windows Server 2008 R2
4.04.0.30319.12010-04-12Visual Studio 2010N/A
4.54.5.50709.179292012-08-15Visual Studio 2012Windows 8Windows Server 2012

Source : WikipediA on y trouvera les grands principes du CLR.

Ne parlons pas de la version 1.0 qui ne fonctionnait pas. D'ailleurs je ne connais personne qui ait démarré en 2002 avec cette version 1.0. On commencera à parler de développement possible avec le .NET Framework que bien plus tard.

DotNET Framework 1.1

ASP.NET Mobile Controls

Les contrôles mobiles sont maintenant intégrés au framework. Le nom Mobile Internet Toolkit est remplacé par ASP.NET Mobile Controls. 

Les contrôles mobiles sont : AdRotator Calendar Command CompareValidator CustomValidator Form Image Label Link List MobilePage ObjectList Panel PhoneCall RangeValidator RegularExpressionValidator RequiredFieldValidator SelectionList StyleSheet TextBox TextView ValidationSummary

Les contrôles mobiles sont extensibles, vous pouvez utiliser la composition et l'héritage pour créer de nouveaux contrôles.

ADO.NET

L'objet DataReader expose maintenant une propriété HasRow pour savoir si l'objet retourne des Lignes sans avoir besoin de faire appel à la fonction Read.

L'objet Connection possède maintenant une méthode EnlistDistributedTransaction pour établir manuellement des transactions distribuées.

Exécution côte à côte

Différentes versions d'une application peuvent s'exécuter en même temps sur un même ordinateur. Une application peut choisir les composants avec lesquels elle va s'exécuter.

IPv6

Le framework .NET support maintenant IPv6 ...

DotNET Framework 2.0

La version 2.0 est importante, on va enfin pouvoir travailler.
Support des plateformes 64-bits
ACL : Access Control List utilisé pour accorder (grant) ou supprimer (revoke) la persmission d'accès au ressources d'un ordinateur.

Apparition des Generics et des Collection Generics.

Globalisation : GetCultureInfo et CultureInfo

ADO.NET 

Support de UDT User-define Types, types définis par l'utilisateur. Apparition des types de données XML.

ASP.NET

Grandement amélioré, les contrôles sont améliorés, on peut éditer modifier des données sans écrire de code. On peut écrire une table de dépendance de cache dans SQL Server.
Apparition des Web Parts. Menu de navigation. Master Page. 
Prise en compte des différents navigateurs, le rendu des contrôles est compatible des standards XHTML 1.1.

Débogueur

Il supporte le mode édit et continuer, vous pouvez modifier le code source et reprendre l'exécution du programme ...

Support de SMTP

Amélioré, on peut maintenant envoyer à plusieurs destinataires, des pièces attachés mettre en copie et en carbon copie ... Et avant c'était comment ? 
Espaces de noms System.Net.Mail et System.Net.Mime

Filtrage des données de Trace

Le système de Trace et Log des données permet maintenant de les filtrer ...

Web Services

Support de SOAP 1.2 et de WS-I Basic Profile 1.0

XML Améliorations

Améliorations du Processeur : XSL Transformation (XSLT)
XmlReader
XmlWriter
XPathNavigator

Langage Visual Basic

Certaines améliorations du Langage Visual Basic sont apportée pour lui donner à peu prêt le même niveau qu'en C# ...

Conclusion

Il y a plein d'autres améliorations du .NET Framework que je ne détaille pas ici, j'ai tenté de résumer mais c'est à se demander comment pouvait-on faire avant ...

DotNET Framework 3.0

La version 3.0 du Framework est sortie pour regrouper les technologies suivantes dans le SDK (Software Development Kit) :
  • Windows Communication Foundation
  • Windows Presentation Foundation
  • Windows Workflow Foundation
  • Windows CardSpace

DotNET Framework 3.5

C'est WCF (Windows Communication Foundation) la partie importante dans cette release. WCF est maintenant intégré dans le .NET Compact Framework pour les applications mobiles.

ASP.NET

Ajax Enable Web Site, les contrôles ScriptManager et UpdatePanel ont été ajouté ainsi on peut rafirachir une page sans la recharger entièrement.
Support IntelliSense pour JavaScripts.
Les fonctions d'authentification, de gestion des rôles et des profile sont maintenant exposées à travers un service-web qui peut être hébergé dans une application WCF, ainsi plusieurs ASP.NET applications peuvent partager ces même services.
Nouveau Data Contrôle ListView
Nouvelle source de données LinqDataSource
De nouveaux outils permettent une meilleur intégration avec IIS 7.0

Add-Ins et extensibilité

Namespace System.AddIn.dll
Fonctionnalités :
Discovery
Activation
Isolation
Sandboxing
UI Composition
Versioning

On se croirait dans MEF (Managable Extensible Framework) ... curieux je n'avais pas vu cet aspect des choses.On va voir que MEF sera intégré au Framework 4.0

Common Language Runtime

Une nouvelle collection : HashSet<T>, modélisation d'un ensemble mathématique de valeurs toutes différentes et non ordonnées.

Diagnostic : nouvelle class EventSchemaTraceListener pour des composants hétérogènes qui traversent des thread des AppDomain.

Linq

Étendu par le .NET 3.5 donne la possibilité de faire des requêtes sur des Tables SQL Server, des ADO.NET DataSet, des XML Documents, et des collections du type IEnumerable et IEnumerable<T>.

Expression Trees

Namespace : System.Linq.Expressions
Permet de représenter des expressions du code sous forme de données.
Mais à quoi cela peut-il bien servir ? Ici.

DotNET Framework 4.0

.NET Framework 4 Client Profile : sous ensemble du .NET Framework 4 optimisé pour les applications clientes.
Améliorations de l'énumération de système de fichiers ??? Et oui on améliore encore c'est trucs là !

Managed Extensibility Framework

Managed Extensibility Framework (MEF) est une nouvelle bibliothèque dans le .NET Framework 4 
qui vous aide à générer des applications extensibles et composables. MEF 
vous permet de spécifier des points où une application peut être étendue, 
d'exposer des services à offrir à d'autres applications extensibles et 
de créer des parties en vue de leur utilisation par des applications extensibles. 
Il facilite également la détectabilité des parties disponibles en fonction des métadonnées, 
sans que les assemblys pour les parties aient besoin d'être chargés.

Dynamic Language Runtime (DLR)

Dynamic Objects, Python est un exemple de langage dynimaque

TBC (To Be Continued)