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

C# Discussion :

Compilation dynamique et exposition des classes objets


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 110
    Points : 55
    Points
    55
    Par défaut Compilation dynamique et exposition des classes objets
    Bonjour à tous,

    J'ai actuellement un projet qui me permet de compiler des classes dynamiquement via la classe CSharpCodeProvider. J'ai accès aux classes compilés sans soucis en faisant de l'injection mais j'aurai aimé savoir s'il était possible, via un service WCF par exemple ou autres, d'exposer ces classes afin de pouvoir les manipuler dans d'autres applications ?

    Je n'ai pour le moment rien trouvé, si quelqu'un à une solution ou un début de piste.

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    essaye de passer un system.type, mais je n'y crois pas trop, je pense qu'il faut que le code soit compilé des 2 côtés pour que le system.type soit utilisable
    et encore là je ne suis pas sur qu'il pourra être sérialisé en binaire et recréé de l'autre côté, en xml peut etre ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Salut,

    Tu pourrais envoyer le code de ta classe via le service et ensuite la passer à la moulinette CodeDom.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 110
    Points : 55
    Points
    55
    Par défaut
    Pour le System.Type ça ne fonctionne pas car j'ai déjà eu le cas et c'est pour cela que je suis passé par l'injection mais effectivement ça aurait été très pratique.

    Pour ce qui est d'envoyer le code des classes, cela oblige à faire de l'injection également de l'autre côté or je n'ai pas forcément envie, surtout que les applications qui vont consommer ces classes seront développer par des personnes qui ne connaissent pas l'injection.

    J'avais pensé à un service WCF dans le sens où c'est lui qui fournirai les classes dynamiques ou non, un peu dans le style "serveur de classes".

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ton service WCF pourrait simplement fournir des assemblées contenant des classes implémentant des interfaces définis.

    donc, un système de plug-in avec interface connu...

    Parce que de toute façon, pour que tes classes (dynamiques ou pas) soient utilisées, il faudra bien qu'on en connaissent les méthodes... (que les méthodes soient
    utilisées en dynamic avec du texte ou bien avec un nommage défini).

    Et si ton WCF renvoie une assembly, tu seras tranquilles sur les problèmes de typage, et autre...

    Après, comme tu nous poses une question sans expliciter la finalité... il est difficile de trouver ou proposer une approche.. Et si celà se trouve, par rapport au problème
    que tu essayes de résoudre, tu fais fausse route en essayant de créer un monstre là ou une solution "basique" serait envisageable...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 110
    Points : 55
    Points
    55
    Par défaut
    Merci pour la réponse.

    Effectivement, je ne suis pas trop rentré dans le détail. Voici un peu plus d'explication.

    J'ai actuellement un service windows qui écoute une base de données sous Sql Server. Dans cette base de données, des utilisateurs avancés peuvent ajouter ou modifier des "objets" et ajouter des attributs à ces objets depuis une interface web. Ces objets sont hiérarchiques et ont donc une dépendance entre eux. Un exemple d'objet :
    Individu = Objet
    Nom = Attribut
    Prenom = Attribut
    Chien = Objet
    Nom = Attribut

    Le service windows récupère ces modifications et transforme le Sql en classe C#. Jusque là pas de soucis, tout fonctionne très bien.
    Je peux utiliser ces classes en faisant de l'injection et même utiliser les règles de validation (DataAnnotation) qui se trouve sur ces classes.

    Là où ça se complique, c'est que c'est classe doivent être mise à disposition pour d'autres développeurs pour créer des applications en utilisant ces objets.
    Par exemple, afficher la liste de tous les Chien dont le Nom est Rex.

    La solution aurait été de dire aux développeurs de faire de l'injection, puisque cela fonctionne, mais tous les développeurs n'ont pas le même niveau et cela serait trop complexe à gérer à la longue.

    Je me suis donc demandé s'il n'était pas possible d'exposer ces classes, générer dynamiquement dans mon service windows, via un WCF par exemple ou autre, une sorte de plug-in, qui permettrait aux développeurs de pouvoir faire du développement classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chien monChien = new Chien();
    J'espère que ces détails permettront d'y voir plus claire sur la finalité de la chose.

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    oui je comprends bien la problématique

    mais pourquoi ne pas simplement fournir aux développeurs des librairies avec les objets qui vont bien...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    On pourrait créer dans le service Windows du serveur une fonction permettant de récupérer les assembly (dll) créés dynamiquement.

    Le client appellerait le service pour mettre à jour son PC.

    Comme cette solution consiste en fait à downloader via le Web les dll depuis le serveur, il y aurait évidement d'autres possibilités : par exemple, la fonction WebClient.DownloadFille().
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage d'objets issus de classes compilées dynamiquement
    Par alucia dans le forum Services Web
    Réponses: 8
    Dernier message: 10/08/2012, 11h06
  2. Créer et compiler des classes dynamiquement
    Par minoFBS dans le forum Général Java
    Réponses: 3
    Dernier message: 09/06/2010, 21h24
  3. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21
  4. Exposition d'un objet en utilisant des données externes
    Par ocroquette dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/11/2005, 21h49
  5. [javac] code pour lancer la compilation des classes
    Par viena dans le forum Général Java
    Réponses: 6
    Dernier message: 19/07/2004, 17h41

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