IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

[Opinion]Que pensez vous du .net framework 10 ans après?


Sujet :

Dotnet

  1. #81
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    J'ai découvert .Net il y a 3 ans pour un projet en 2.0. Arrivant d'un monde Java, j'ai fait la tête au début. Ma première surprise agréable a été la facilité de réaliser des interfaces graphiques en Winform. Bon, si on n'y prend aps garde, on peut vite faire quelque chose de bordélique, mais ça permet d'avancer rapidement ! Mais je ressentais le manque de divers d'éléments sous java, ou des implémentations qui m'échappaient. Bref, ce n'était pas encore ça.

    Au passage à la version 3/3.5, avec WCF, Linq et EF (pis WPF/silverlight dans une moindre mesure, je ne les maitrise encore pas), ça a été une révolution. la capacité de communiquer simplement avec WCF, Linq pour le traitement des données (et l'optimisation qui va derrière, un Where coûte moins cher qu'un foreach+if, allez comprendre comment ils ont bidouillé ça xD), ça change la méthode d'aborder un projet, il n'y a plus qu'à se consacrer sur le quoi faire...

    En terme de client lourd, c'est un vrai plaisir (pis bon on peut tricher via du bureau à distance pour simuler un client léger portable, qui a dit VNC ?), de développer des applications réactives et ergonomiques. J'ai travaillé sur des projets qui exigent une grande ergonomie et surtout des contraintes techniques fortes, avoir ces technos sous la main est un véritable atout.

    WPF coûte cher à l'apprentissage, mais commence à apparaitre dans les produits MS, il suffit de regarder Visual Studio, qui est un assez bon exemple de ce qu'on peut faire, mais qui a du faire s'arracher des cheveux aux développeurs si on repense aux premières betas...

    Maintenant, avec la 4.0, massivement parallèle, je sais que c'est un pas en avant, mais par endroit c'est tellement simple de faire un code managé parallèle : avec un appel de méthode supplémentaire, on transforme tout ça (mais pas simpliste, attention aux pièges de la programmation concurrente bien sûr).

    Je n'ai pas encore testé l'aspect ASP .Net, aucune idée de ses performances ou le gain qu'il peut apporter...

    Un dernier point fort, c'est l'intégration de .net avec les autres produits de Redmond : VS, SQL Server (hâte de développer un ptit soft de surveillance de réplication à plugger), Sharepoint (que je ne connais pas).

    Après, ce n'est pas un environnement parfait. Des références nulles qui continuent dêtre la cible d'événements est un élément à connaitre au plus tôt, sous peine de voir son application s'écrouler... On retrouve quelques éléments comme ça qui peuvent empoisonner la vie, et qu'il faut connaître au plus tôt (mais souvent trop tard).


    J'avais lu vite fait un article sur l'orentation de .net 5.0, avec du code mutable ou un truc dans le genre, faudra que je le retrouve à l'occaz...

    Pour le pourquoi du framework .Net, c'est tout simplement l'avenir de Windows, si on regarde du côté du projet Singularity...

    Niveau césure entre chaque version, cela reste très faible, parfois des classes changées d'assemblys, parfois un élément marqué obsolète pour une nouvelle et meilleure implémentation. Dans ces cas là le compilateur fait son office et nous guide au mieux.

    J'ai lu un argument pro-.net/anti-java, parlant du fait que java faut se taper 10 librairies tierces à pointer, on peut aussi se retrouver dans cans ce cas avec .net, ce qui sort des labs n'est pas inclus dans le framework, il faut parfois aller piocher sur le site de Microsoft pour avoir ces librairies.

    Bon, un post un peu hétéroclite, mais il y a tellement de choses à dire...

  2. #82
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par tomlev Voir le message
    http://www.microsoft.com/downloads/d...displaylang=en
    Il y a un lien "full package" sur la page si tu ne veux pas l'installeur web... mais ça fait 230 Mo
    Bizarre
    Tu ne pensais pas que je posais la question au hasard, tout de même.

  3. #83
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Arnard Voir le message
    un Where coûte moins cher qu'un foreach+if
    Euh... en termes de lignes de code, oui
    Et c'est surtout plus lisible...
    Mais en termes de perfs, ça revient au même (pour Linq to Objects du moins), il y a même sans doute un petit overhead dû à l'énumérateur supplémentaire.

    Par contre si tu parles de EF, Linq to SQL ou Linq to NHibernate (par exemple), c'est effectivement plus rapide puisque le SGBD pré-filtre les données...

  4. #84
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ah. Y a la meme chose pour le 3.5 SP1 ? Ca m'intéresse.
    Oui mieux, même il est plus léger :

  5. #85
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par B.AF Voir le message
    Oui mieux, même il est plus léger :
    c'est pas le "Compact Framework" ça ?

  6. #86
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 60
    Points : 53
    Points
    53
    Par défaut
    J'apprécie beaucoup le .NET en utilisation surtout avec C# qui est pour moi le langage pour lequel je suis prêt à laisser tomber mon Delphi. Je pense que M$ a su mettre en place quelque chose qui attire les non java. En attendant la total ouverture.

  7. #87
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Tu n'aimerais pas pouvoir faire ce genre de trucs, parfois, B.AF ?
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var methods = anAssembly.Modules
      .SelectMany(m=>m.Types)
      .Where(t=>t.IsClass && t.GenericArguments.Any(ga=>ga.HasDefaultConstructor))
      .SelectMany(t=>t.Methods);
    foreach(var method in methods){
      method.Body.Insert(0, ()=>{Console.WriteLine("blablabla....");}
    }

  8. #88
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 373
    Points
    252 373
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    c'est pas le "Compact Framework" ça ?
    ça c'est bien Compact framework qui est très limité

  9. #89
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par guence Voir le message
    surtout avec C# qui est pour moi le langage pour lequel je suis prêt à laisser tomber mon Delphi
    Pas étonnant, les 2 langages ont été créés par la même personne
    (Anders Hejlsberg)

  10. #90
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par lilroma Voir le message
    ça c'est bien Compact framework qui est très limité
    Pour l'embarquer dans un téléphone, il vaut mieux qu'il soit compact même si il est limité.

  11. #91
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 373
    Points
    252 373
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pour l'embarquer dans un téléphone, il vaut mieux qu'il soit compact même si il est limité.
    Justement c'est pour ça qu'est prévu le compact framework pour les applications qui vont tourner sur des tablettes pc, des smartphones...

  12. #92
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Justement c'est pour ça qu'est prévu le compact framework pour les applications qui vont tourner sur des tablettes pc, des smartphones...
    Je sais, je sais : je finalise en ce moment un projet où j'ai 3000 téléphones dans la nature

  13. #93
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par davcha Voir le message
    Tu n'aimerais pas pouvoir faire ce genre de trucs, parfois, B.AF ?
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var methods = anAssembly.Modules
      .SelectMany(m=>m.Types)
      .Where(t=>t.IsClass && t.GenericArguments.Any(ga=>ga.HasDefaultConstructor))
      .SelectMany(t=>t.Methods);
    foreach(var method in methods){
      method.Body.Insert(0, ()=>{Console.WriteLine("blablabla....");}
    }
    Si et c'est pour ça que j'aime beaucoup linq to codedom

  14. #94
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Et tu peux lire une assembly et la modifier au runtime avec ça ?

  15. #95
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par davcha Voir le message
    Et tu peux lire une assembly et la modifier au runtime avec ça ?
    Non mais tu peux générer du code et le compiler. Disons que tu peux prendre ta DLL, et recréer une assembly en injectant le code dedans.

  16. #96
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Ca implique que tu puisses lire ton assembly, ça. C'est ce que je voulais dire, dans la mesure où une assembly compilée (JIT) n'est plus en état d'être modifiée.

  17. #97
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par davcha Voir le message
    Ca implique que tu puisses lire ton assembly, ça. C'est ce que je voulais dire, dans la mesure où une assembly compilée (JIT) n'est plus en état d'être modifiée.
    Oui c'est ce que je te dis. En fait, je m'en sers pour faire des prototypes objets avec des get /set simples, et après avec la réflection et cette API, je créé un projet VS et une DLL qui contient le code 'technique'. Ca me permet de ne pas associer mes problèmes techniques à mes problèmes de modélisation.

    Et pour généraliser les comportements, j'utilise des attributs.

    Je sais c'est ésotérique, mais c'est après avoir utilisé les T4 et la DSL que je ne trouve pas très productif (je n'ai jamais compris ce besoin de créer des entités graphiquement...Mais bref).

    En fait plutôt que d'injecter du code, je fais de l'enrichissement de code pour être exact.

  18. #98
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    23h58, mal de crâne... J'ai un peu de mal à te suivre.

    Donc, tu désassembles une assembly, l'enrichis avec ton truc et la réassemble ?...

    Si t'as un exemple concret, je suis preneur.

  19. #99
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Non pas vraiment.

    En fait j'ai fais un petit dev maison qui fait la chose suivante :

    - Tu crées un projet où tu design ton modéle objet (objets métiers, interfaces, héritages...etc,etc...) en utilisant des POCO
    - Dans mon petit Framework, il y a une DLL qui contient des attributs
    - J'utilise ces attributs pour tagger ces POCO
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        [Persistence(Add|Delete|Update)]
        [WFActivity(Create|Amend|Delete,FullRef|PropertyBased)]
        [WCFService(Create|Amend|Delete, FullRef|PropertyBased)]
        [ComboDto("Id","Name")]
        [BindingBehavior(Notitfy.Self)]
        public class Calendar
        {
            [Key(true)]
            public long Id{ get; set;}
            [GetByProperty(SeekMode.Equals)]
            public string Code{get;set;}
            public string Name { get; set;}
            public void t()
            {
               NullCalendar nc=new NullCalendar();
                nc.addHoliday(new Date());
            }
        }
    Après le build, mon petit framework va prendre les classes de cette DLL et en fonction des tag va créer les classes et correspondantes (en génération)
    Et dans mon projet réel, je ne vais pas utiliser le modéle ci-dessus, mais les éléments générés.
    C'est plus de la génération de code qu'autre chose.
    Maintenant, ça peut aussi fonctionner en runtime : tu peux en runtime générer, compiler et exécuter le code.
    Dans l'exemple que je te donne, depuis le modéle, je détermine :
    - Les query objects
    - Les activités WF 4
    - Les façades de service
    - Les façades WCF (si je veux esposer en rest où autre)
    - Les comportements au binding

    En fait si je veux changer un comportement où en rajouter un, je l'ajoute dans l'un des modéles et ça s'applique au reste.

    J'avais fait ça parce que les générateurs depuis la Db me gêne parce qu'ils sont rarement intelligents, que de designer des POCO depuis la 3.0, c'est piece of cake et ça prend 20 minutes en code, que ça permet d'avoir un projet fonctionnel et de prototyper très rapidement, et d'avoir les outils dont je me sers bien encapsulé. A la fin le développeur ne peut pas modifier les couches techniques et manipule des services et des activités. Tous les aspects techniques (cache, transactions...) sont gérés dans des projets de frameworks à part qu'il peut référencer et pas modifier. Quant aux objets qui lui sont exposés dans les activités, objets, et autres, ils sont sealed de telles façon que si de nouveaux besoins émergent, ont les prennent en compte au niveau le plus bas possible et surtout pour éviter la technique de la "rustine".
    En ce moment j'en fait une version 'RDA' qui va créer des MVVM WPF.

    Au final, au fil du temps, ça permet très rapidement de créer des couches d'abstraction assez fortes (genre repository, cache...); mais bien maintenues, sans mélange des genres et de générer du vrai code utile et simple pouréviter l'écueil du code généré :souvent difficile à lire.

    Peut être que je devrai en faire un truc open source, mais c'est une approche un peu particuliére de la génération de code en fait. Et je l'ai fait parce que les générateurs genre edmx ou mygeneration ne me satisfaisait pas vraiment parce que trop orientés relationnel, et que l'AOP me gênait parce qu'elle laissait toujours des dépendances. Or si tu connais et maitrise tes aspects, ils n'ont finalement pas de raison d'être réalisé en runtime ou au build.

  20. #100
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Mais, par exemple, ton framework serait-il capable, au runtime, de modifier le corps d'une méthode ?

    Après, le truc gênant, c'est que ton POCO se retrouve décoré avec plein de trucs, en fait.

Discussions similaires

  1. Que pensez-vous du nouveau framework Play ?
    Par eguanlao dans le forum Play!
    Réponses: 36
    Dernier message: 13/04/2011, 19h45
  2. Que pensez vous du site: http://www.tunisiepagesdor.net
    Par sami2008 dans le forum Mon site
    Réponses: 0
    Dernier message: 23/09/2008, 01h46
  3. Que pensez vous de ces frameworks?
    Par mamelouk dans le forum C++
    Réponses: 7
    Dernier message: 25/06/2008, 15h59
  4. [IDE]Que pensez vous de Visual Studio .NET 2005 ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 56
    Dernier message: 15/08/2006, 12h39
  5. [ADO.Net][XML]Que pensez-vous de cette manière de faire?
    Par RiiiDD dans le forum Accès aux données
    Réponses: 6
    Dernier message: 22/03/2006, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo