Transcript du Livechat sur Developpez.com le 9 Avril 2014

De quelle façon adresser une base MySQL hébergée à partir d'un projet VB.NET ?

Tu trouveras le connecteur MySQL ici http://dev.mysql.com/downloads/file.php?id=450594. D'ailleurs, je vais faire un cours complet dessus bientôt.

[lekesako]: j'aimerais savoir si vous avez plus d'informations sur la technologie .NET native ? Comment elle fonctionne ? Pourquoi n'a-t-elle pas de machine virtuelle et qu'est-ce qui la remplace ?

[Sébastien Pertus MS]: Concernant le mode .Net Native, une bonne source d'informations sur le sujet : http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx. C'est tout nouveau et effectivement il n'y a pas de machine virtuelle derrière (c'est le principe).

[Eric Vernié]: Pour répondre à la question sur .NET Native, il convient de développer en C# et que le code IL généré soit optimisé par le compilateur C++, le même que l'on utilise avec Visual C++. La conséquence de cela, c'est une optimisation au chargement, une empreinte mémoire réduite, et l'utilisation de paramètres de compilation C++ qui optimisent le code de manière drastique et éprouvée depuis longtemps.

[van-bom]: pourriez vous nous expliquer les méthodes utilisées par les professionnels et les sociétes éditrices de logiciel pour générer le logiciel .exe ? C'est-à-dire une appliciation Windows qui s'installe avec la procédure suivant… suivant...

[Sébastien Pertus MS]: van-bom> Pour le déploiement d'application, je te conseille soit Click Once, soit WIX.

[DatchetfaoNOS]: Bonjour, savez-vous comment envoyer un message à tous les utilisateurs d'un programme (form) ?

[Sébastien Pertus MS]: il te faut faire du WCF DuplexChannel (j'écris un cours dessus en ce moment, stay tuned et en Français).

[Sébastien Pertus MS]: il est publié à cette adresse : http://www.microsoftvirtualacademy.com/training-courses/acceder-aux-donnees-ado-net-entity-framework-et-wcf

[lekesako]: j'utilise WinForms avec des element hosts pour utiliser des écrans WPF. Est-ce qu'il peut y avoir des fuites mémoires entre l'element host et le wpf ?

[Sébastien Pertus MS]: lekesako> oui, des fuites mémoires sont possibles n'importe où. Bien disposer les objets IDisposable et bien se désabonner de ses events est un bon début.

[Eric Vernié]: lekesako> Il peut y avoir en effet des problèmes mémoires, dans ce cas-là dans le code C++ il faut utiliser la classe GCRoot qui te permet de manipuler des types .NET.

[lekesako]: c'est ce que nous essayons de faire, mais la passerelle entre le MFC et XAML ne peut-elle pas engendrer des fuites même en appliquant les principes de base sur le dispose et abonnement/désabonnement ?

[Sébastien Pertus MS]: lekesako> pas d'info sur le sujet

[lekesako]: @Eric > tout mon code est en .NET, pas d'utilisation du C++ ou alors je n'ai pas compris ta réponse.

[Eric Vernié]: lekesako> désolé, comme tu parlais de passerelle entre MFC et WPF j'ai confondu.

[Eric Vernié]: lekesako> Le plus tôt possible j'espère, mais pour l'instant seul ARM et X64 sont supportés, et X86 est en cours. Mais malheureusement je n'ai pas de date.

[tomlev]: J'aurais aimé savoir s'il était prévu d'apporter des évolutions à WPF. Par exemple, quand les fonctionnalités de XAML 2009 seront-elles supportées dans Visual Studio ?

[Sébastien Pertus MS]: tomlev> WPF est iso-fonctionnel quelle que soit la version de VStudio, et oui il y a des choses qui vont arriver dans la prochaine version majeur de Windows.

[Sirus64]: Qu'est-ce ce qui va remplacer AzMan vu qu'il est déprecié sur Windows 2012 et +.

[Sébastien Pertus MS]: Sirus64> Windows Authorization Manager ?

[Sébastien Pertus MS]: Sirus64> apparemment ce n'est pas vraiment deprecated, de ce que j'en lis http://stackoverflow.com/questions/14229771/azman-obsolete-what-is-the-new-alternative-to-azman

[Sébastien Pertus MS]: Sirus64> piste intéressante pour toi : http://netsqlazman.codeplex.com/ ou passer sur les claims based 3

[soad]: Bonjour, est-ce que Microsoft .NET Native est disponible pour Windows CE ?

[Eric Vernié]: soad> À l'heure actuelle, il est disponible pour des applications Modernes Windows 8.1 et sur Azure.

[tomlev]: MS a fait un très grand pas en direction de l'open-source en rendant Roslyn open-source, et un joli paquet de librairies. Est-il prévu d'aller plus loin et de rendre open-source le CLR ou la BCL ?

[Eric Vernié]: tomlev> À ma connaissance, il n'est pas prévu de le rendre open_source, par contre toutes les sources sont disponibles ici http://referencesource.microsoft.com et il est même possible de rapatrier un ZIP.

[Sébastien Pertus MS]: tomlev> Nous travaillons énormément en open-source avec des projets d'envergure comme Roslyn, alors il est certain qu'on continuera nos efforts dans ce sens.

[lekesako]: Avez-vous dans l'idée de poursuivre des évolutions sur le MVVM ? Je l'ai utilisé dans mes projets et je trouve le pattern assez galère sur des implémentations classiques WinForms (raccourci clavier par exemple ou tab index). Même si j'en vois l'intérêt dans la séparation des métiers graphiques, pouvez-vous me dire si on aura des types de projet MVVM 2 comme vous le faites sur le MVC pour l'asp.NET ?

[tomlev]: lekesako> MVVM est plutôt pensé pour WPF (et XAML en général), car c'est très dépendant du système de binding et de commande. Pour WinForms, oriente-toi plutôt vers le pattern MVP

[Eric Vernié]: tomlev> L'idée d'ailleurs, c'est d'ouvrir plus d'API WinRT pour les applications de bureau.

[danvy]: lekesako> le pattern définit les grands principes, les implémentations se différencient avec plus ou moins de fonctionnalités. Pour le tab index ou les raccourcis, tu dois pouvoir mettre cela dans tes vues spécifiques à la plate-forme.

[danvy]: lekesako> WPF et WinForms, même combat ?

[tomlev]: J'ai développé en WPF pendant des années, et je suis vraiment fan de la puissance de ce framework. Quand j'ai commencé à développer des applications Windows Phone et Windows Store, j'ai été assez frustré par les importantes limitations de ces plates-formes par rapport à WPF, malgré les similarités. Est-il prévu d'améliorer les autres plates-formes XAML pour les rendre plus proches de WPF ? Par exemple, améliorer le système de binding, supporter les triggers, etc.

[Sébastien Pertus MS]: tomlev> Il y a des évolutions prévues et les équipes produit sont à l'écoute de la communauté, il est sûr que XAML pour WinRT va continuer à évoluer.

[soad]: j'ai une DB sur SQL Azure et pour reconstruire les index tous les X jours j'ai un worker role dédié à cela. Est-ce qu'il est prévu que SQL Azure fournisse un outil pour planifier la reconstruction des index ?

[Sébastien Pertus MS]: soad> Non pas vraiment, le worker role est une bonne idée. Sinon tu peux toujours passer sur le mode IAAS avec une VM SQL dédié et avoir accès au planificateur de tâches SQL.

[olreak]: nous avons un serveur IIS, un site web développé en ASP.Net (c#). Le serveur fournit un hash de document à signer, comment le faire signer côté client avec un certificat dans le magasin de certificat de Windows. Actuellement, nous utilisons une applet java pour faire ça, nous voudrions nous en passer. Existe-t-il une solution plus native utilisant .Net pour que la page web accède au magasin de certificats pour réaliser la signature électronique. Merci.

[Sébastien Pertus MS]: olreak> je ne pense pas que ce soit possible, tu es inbrowser, et donc sandboxé...

[lekesako]: Dans le cadre d'un nouveau projet WPF sans designer attitré ou graphisme poussé, est-ce que le pattern MVVM est d'utilité ? Ou est-ce vraiment à l'appréciation du concepteur ?

[Sébastien Pertus MS]: lekesako> oui complètement, moi je l'utilise tout le temps, à partir du moment où j'ai du Binding (XAML forever).

cry:, Pensez-vous que dans un futur plus ou moins proche le WPF remplacera définitivement les WinForms ?

[Eric Vernié]: Concernant les Windows Forms, ce qui est sûr, c'est que l'on continue à les supporter au même titre que les MFC en C++, car il y a encore des applications dites "legacy" qui existent. Néanmoins, on réfléchit aujourd'hui déjà à l'amélioration que l'on peut y apporter, et c'est en cours de réflexion pour la prochaine version.

[Immobilis]: Sébastien Pertus MS> Mettons un caddie. Celui-ci est lié à son client par un identifiant de session. Si j'utilise SignalR dans une de mes pages, je ne peux pas faire correspondre la requête à mon caddie. Comment faire le lien entre les requêtes postées via SignalR et celles via un POST sur une vue ?

[Sébastien Pertus MS]: Immobilis> tu peux identifier ta connexion et la lier à ton utilisateur non ?

[Immobilis]: Sébastien Pertus MS> Ça m'oblige à stocker les deux identifiants en base pour établir la correspondance.

[Sébastien Pertus MS]: Immobilis> soad> une idée sur SignalR et l'architecture qui irait bien (peut être) http://syfuhs.net/2013/03/24/real-time-user-notification-and-session-management-with-signalr-part-2/

[tomlev]: Roslyn a été publié en open-source, on peut donc suivre son état d'avancement, mais la roadmap n'indique aucune date. Peut-on avoir un ordre d'idée de la date de sortie de la version stable ?

[Sébastien Pertus MS]: tomlev> elle est stable d'ores et déjà

[tomlev]: Sébastien Pertus MS> stable, peut-être, mais ça reste quand même une preview, et toutes les fonctionnalités prévues dans C# et VB.NET ne sont pas encore implémentées... Je voulais dire la date de sortie d'une version "terminée".

[danvy]: tomlev> Pas de roadmap pour l'instant en effet. C'est donc le moment de faire des retours.

[Immobilis]: SignalR: la négociation entre le client et le serveur passe par une phase de "test" pour savoir quel "protocole" utiliser. Je trouve que cela ralentit l'affichage de la page. Y a-t-il moyen d'accélérer le processus SANS forcer directement le "longPooling ?

[Sébastien Pertus MS]: Immobilis> oui tu peux forcer la mémoire.

[soad]: Immobilis> tu as essayé : HttpContext.Current.Session

[danvy]: Immobilis> Tu peux préciser le protocole à utiliser pour gagner du temps.

[danvy]: soad> Immobilis> Attention, cela va à l'encontre du concept de SignalR.

[soad]: Immobilis> Ok... alors moi je ferais une identification "standard" et ensuite tu utilises l'objet "Context.User" pour récupérer ton user.

[Immobilis]: danvy> On vient de nous préciser effectivement que SignalR est « stateless ». Ceci dit, SignalR a tout de même un connexion id...

[Sébastien Pertus MS]: Immobilis> oui c'est ce que j'utiliserais pour identifier la connexion et l'utilisateur associé.

[Immobilis]: Sébastien Pertus MS> Ok et pour l'autre question, je n'ai pas très envie de forcer le mode, car je veux qu'il puisse s'adapter à un navigateur qui peut supporter les web sockets. N'y a-t-il pas moyen de tester le support de SignalR directement à partir du type de navigateur ?

[Sébastien Pertus MS]: Immobilis> SignalR le fait pour toi de mémoire (mais je ne suis pas expert sur le sujet)

[lekesako]: Excusez-moi de poser la question, mais quel est l'intérêt de Roselyn ? Qu'apporte-t-elle de plus ?

[Sébastien Pertus MS]: lekesako> c'est juste le compilateur C# VB ; tu peux imaginer ce que tu peux faire en ayant accès directement au compilateur !

[tomlev]: lekesako> c'est un nouveau compilateur qui, au lieu d'être une boîte noire, permet d'accéder aux mécanismes internes (parsing, analyse sémantique, etc) via un API. Ça permettra donc d'utiliser le compilateur pour analyser et/ou transformer du code. Roslyn implémente aussi des nouvelles fonctionnalités pour les langages C# et VB.NET

[lekesako]: Mais cela demande des connaissances particulières genre IL ou assembleur ou ce sont les API qui donnent accès à tout ? Dans quel cas concret pourrait-on en avoir besoin ?

[Eric Vernié]: lekesako> C'est un compilateur qui est ouvert et non plus une boite noire, donc tous les éditeurs d'outils pourront venir y greffer plus facilement leurs modules.

[Sébastien Pertus MS]: lekesako> Je te conseille de lire la doc MSDN sur le sujet, c'est super bien fait, et pas besoin de connaître MSIL pour débuter http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx

[lekesako]: Quelqu'un l'a déjà utilisé concrètement (même si c'est en preview... ) ?

[Sébastien Pertus MS]: lekesako> Regarde la plénière deuxième jour de la //build

[Sébastien Pertus MS]: lekesako> Sinon je connais un français, Matthieu MEZIL, MVP qui connaît très très bien Roslyn, contacte-le de ma part.

[Athos]: lekesako> J'ai utilisé Roslyn pour de la modif du code pour contrôler les tests unitaires (changer un opérateur dans une méthode ou un test, etc).

[Luckyluke34]: Quand le "pull --rebase" sera-t-il directement supporté dans VS avec gestion des conflits ? Pour l'instant, pour le faire, on est obligé de sortir et d'aller dans la ligne de commande et merger les conflits "à la mano".

[danvy]: Luckyluke34> Je pense que l'on ne peut pas attendre de l'intégration dans VS (simplification) la même puissance que le client Git. Il faut utiliser les deux (perso, j'utilise VS pour les opérations très simples et Git pour tout le reste).

[Luckyluke34]: danvy> OK merci, effectivement on lutte un peu avec l'intégration de Git dans VS. Le problème de la ligne de commande, c'est qu'elle redemande le login/mdp pour toutes les actions de synchro avec le repo distant sur TFS... donc un peu lourd à l'usage.

[lekesako]: Dernière question : Silverlight a-t-il encore un avenir ? Aura-t-on une nouvelle technologie qui nous permette d'avoir des applications utilisables sur le bureau et en web (hors application Metro bien sûr) ?

[Sébastien Pertus MS]: lekesako> Officiellement, Silverlight est un produit qui n'évoluera pas mais qui est supporté.

[Sébastien Pertus MS]: lekesako> Après, pour une appli bureau web, le mieux c'est HTML 5.

[lekesako]: qui est supporté dans windows 8 et + ?

[Sébastien Pertus MS]: lekesako> qui est supporté dans tous les navigateurs modernes.

[Immobilis]: Quand est-ce qu'on aura une coloration syntaxique et IntelliSense sur les T4 dans VS2013 ?

[Sébastien Pertus MS]: Immobilis> Tangible editore T4 http://visualstudiogallery.msdn.microsoft.com/6d1223ca-5e52-49d0-a489-910f9b76396e?SRC=VSIDE

[lekesako]: avez-vous une approche NOSQL chez Microsoft ? Des produits en préparation ?

[Sébastien Pertus MS]: lekesako> On prend en charge le NoSQL sans soucis, pas mal d'exemples avec Azure d'ailleurs.

[Sébastien Pertus MS]: lekesako> Table Storage est un bon exemple d'ailleurs.

[lekesako]: Y a-t-il un moyen de tester la plate_forme Azure gratuitement ? SQL Server prend-il en charge le NoSQL ?

[Sébastien Pertus MS]: lekesako> Oui tu peux tester gratos AZURE, y'a une trial

[Sébastien Pertus MS]: lekesako> SQL Server n'a pas d'implémentation NoSQL (hormis Table Storage sur Azure)

[Sébastien Pertus MS]: http://azure.microsoft.com/fr-fr/pricing/free-trial/ et si t'es étudiant, t'as aussi des offres.

[lekesako]: sur l'utilisation du JSON dans WCF, y a-t-il des préconisations ? des projets spéciaux ?

[Sébastien Pertus MS]: lekesako> oui, webhttpbinding

[Sébastien Pertus MS]: pour le code de config WCF pour exposer un endpoint Json

[soad]: Sébastien Pertus MS> Question architecture : Est-ce qu'il est correct d'utiliser les POCOs de Entity Framework pour les Models en ASP.NET MVC ou vaut-il mieux avoir d'autres objects pour les Models ?

[Sébastien Pertus MS]: soad> Non, ça ira très bien. Ppragmatique : si ça marche, continue

[banki]: Sébastien Pertus MS> Pourquoi REST reste le service web recommandé pour les applications mobiles ?

[Sébastien Pertus MS]: banki> Histoire de "mode".

[Sébastien Pertus MS]: banki> Et aussi parce que REST permet d'exposer du JSON, à la mode aussi, ces temps-ci.

[soad]: Est-ce qu'il est prévu que, dans un projet ASP.NET MVC Razor, Visual Studio affiche les erreurs de compilations sans qu'il soit nécessaire d'ouvrir le fichier HTML ?

[Sébastien Pertus MS]: soad> Aucune idée, je ne suis pas spécialiste du dev. web.

[ThomasR]: soad> Il y a un param à rajouter dans ton csproj, il me semble

[ThomasR]: soad> http://stackoverflow.com/questions/5667358/check-for-razor-errors-during-build

[ThomasR]: soad> http://stackoverflow.com/questions/18839180/why-do-razor-compile-errors-not-show-up-in-vs2012-when-one-does-a-build-and-can

[Sébastien Pertus MS]: ThomasR> soad> great !

[toss.net]: Est-il possible avec un code .NET de se connecter à un logiciel client/serveur utilisant Winsock (vb6) ?

[Sébastien Pertus MS]: toss.net> socket

[Eric Vernié]: toss.net> Il est possible d'utiliser les sockets en .NET System.Net

[Sébastien Pertus MS]: toss.net> Hum ! Utiliser Socket me semble le plus envisageable comme ça en y pensant, mais c'est à tester.

[toss.net]: Eric / Sébastien > (je vais creuser ça) Si à l'occasion vous trouvez un sample, je suis preneur car ça me permettrait de migrer du vieux code petit à petit.

II. Ressources additionnelles