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

ASP.NET Discussion :

[Indications][Architecture] Un problème de plug in


Sujet :

ASP.NET

  1. #1
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut [Indications][Architecture] Un problème de plug in
    Bonjour,

    Je suis entrain de mettre sur pied un portail et je me bloque un peu sur comment faire l'architecture de mon application.

    Nous aimerions pouvoir avoir un système de plug in dans le portail de sorte que cà nous permettre de développer des modules indépendamment. Pour une application windows, c'est pas vraiment compliqué mais là je dois avouer que je ne vois pas trop comment appliqué la même chose dans le cas d'une application Web...

    J'explique sommairement ce qu'on attend du système de plug in.

    Chaque module (dénommé service) offre un ensemble d'opérations et des droits sur les objets qu'il manipule. Par exemple, si on a un module des gestions des utilisateurs, on pourra
    - ajouter
    - éditer
    - supprimer un utilisateur.

    Une fois le service recensé (donc le plug in installé - il faudra donc réaliser un installeur de plug in ), il faudra que les droits qu'il mettent à disposition soient recensés dans l'ensemble des droits du système. De sorte que le système puisse ensuite décider ou non d'attribuer un droit exposé par un service à un autre service.

    Exemple.

    On a les services A et B.
    A introduit les droits E1, A1 sur certains objets.
    B introduit les droits E2, A2 sur certains objets.
    (E = Edition, A = ajout)

    Pratiquement, dans l'interface du super admin, on devrait pouvoir faire E1 et A1 puisque l'admin aura tous les droits sur tous les services recensés. Maintenant, on aimerait que l'admin puisse attribuer le droit E1 à B !

    J'ai cherché des tutos afin de voir comment construire des applications Web avec un système de plug in mais je n'ai pas trouvé quelque chose qui puisse réellement m'aider. Peut être ai-je mal cherché ?

    Toute indication/conseil serait la bienvenue.

    Merci.

    PS : il y'a des portails Web qui ont un système quasi identique à ce que je viens de décrire (tel que joomla : www.joomla.org , écrit en PHP). Je pense qu'il y'a DotnetNuke qui doit avoir aussi un système de plug in (je ne sais pas, je suppose) mais le temps d'étudier leur code pour comprendre l'idée générale me semble plus pénible. (j'ai téléchargé le code de la dernière version, je l'ai sous le code au cas où ...)

  2. #2
    Membre expérimenté

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Par défaut
    Je ne connais pas DotNetNuke en profondeur, et encore moins Joomla mais je ne pense pas que leurs "plug-ins" fonctionnent comme ça...

    Est-ce que tu pourrais expliquer le problème qui t'a poussé à vouloir ce type d'architecture ? Il est fort probable qu'il soit solvable sans passé par ça (sinon, ça aidera à comprendre cette architecture)

    "L'architecture la plus simple est toujours la meilleure"

  3. #3
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    Le problème est que souvent il est nécessaire de faire un "noyau" ou "moteur" ou peu importe le terme et d'ajouter des composants sans toucher au code de ce moteur.

    Niveau pattern il existe un à ce sujet mais je ne connais plus le nom par coeur.

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Bonsoir,

    Citation Envoyé par Ditch
    Le problème est que souvent il est nécessaire de faire un "noyau" ou "moteur" ou peu importe le terme et d'ajouter des composants sans toucher au code de ce moteur.
    C'est effectivement ce que je veux faire

    Citation Envoyé par KPixel
    Est-ce que tu pourrais expliquer le problème qui t'a poussé à vouloir ce type d'architecture ? Il est fort probable qu'il soit solvable sans passé par ça (sinon, ça aidera à comprendre cette architecture)
    Alors,

    Tout d'abord, le besoin d'avoir ce noyau central que je n'aurai pas à modifier chaque fois que je vais ajouter un nouveau module à l'application. Sauf bien sûr en cas de MAJ "critique".
    Maintenant, je souhaiterai pouvoir faire des modules (ou dans le meilleur des cas, permettre à des tierces personnes de pouvoir en faire) de telle sorte que :
    - le module soit automatiquement recensé parmi les modules installés
    - que les droits d'accès au module soient également recensés.

    Je vais prendre un exemple de ce que je veux faire.

    J'ai l'application centrale, un site par exemple. On souhaite pouvoir ajouter différents modules donc par exemple le module de bannières. Sur une bannière, on peut effectuer les opérations classiques d'ajout, d'édition, et de suppression d'une bannière.

    Le module doit fournir toute la logique nécessaire pour fonctionner, en utilisant éventuellement des éléments du noyau central (par exemple des tables de la base de données centrale). Le module pourra également créer ses tables à lui pour stocker les infos qui lui sont propres. Ces tables sont créees à l'installation du module et détruites à sa désinstallation.

    Donc, le module apporte en gros
    - de nouvelles tables
    - des droits sur ces tables via des pages

    Maintenant, ce que je veux faire c'est de recenser les droits sur la gestion des bannières. L'admin d'office en installant le module aura tous les droits qu'il propose. Il est maintenant question que l'admin puisse octroyer un sous-ensemble de ces droits à un autre utilisateur (par exemple, octroyer juste l'ajout et l'édition à un utilisateur donné).

    De plus, le module pourra avoir des relations de dépendance avec d'autres modules. De sorte à ce que les infos en sortie d'un module (une liste de quelque chose) puisse être utilisés en entrée d'un autre module.

    Voilà, en espérant avoir donné plus de détail

    Merci !

  5. #5
    Membre expérimenté

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Par défaut
    Ceci ne réponds pas à ma question.

    Là, tu viens de détailler ta "solution". Ce que je veux, c'est les détails sur le problème.

    Cette solution est, à mon avis, très complexe donc je me demande si elle vaut vraiment la peine.

    Note: Les "plug-ins" marchent bien pour des fonctionnalités très specifiques; dans ce cas, il s'agit de "plug-ins" contenant des pages web, tables, et tout ce qu'il y'a au milieu (entités, logique, code d'acces de donnée, etc.)... Et si tu ajoute la gestion de dépendences...

  6. #6
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    Je ne vois pas ce qu'il peut te dire de plus. C'est un problème courant (même si la solution n'est pas triviale). C'est un quelque sorte se créer un framework sf qu'il intègre la partie visuelle.

    L'extensibilité des applications est quelque chose qui est de plus en plus nécessaire. Parfois pour des raisons de licence (on ne vend qu'une partie), parfois parce que ce sera d'autres personnes qui vont développer les composants et qu'on ne peut donner le code source du hôte.

  7. #7
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    En tout cas, pour ma part, je partirais sur une solution basée sur un chargement de dll à la volée. Dans ces dll les composants doivent implémenter une interface que tu définis dans un projet quelconque.

    Tous les composants doivent implémenter cette interface sans quoi c'est niet. Cela ne devrait pas poser trop de problème. J'avais fait ce système sans le chargement dynamique et ca marchait nickel.

    Tu devras cependant faire un gestionnaire de plugins pour persister les informations sur ce que tu veux ou ne veux pas charger.

    Que penses-tu de cela?

  8. #8
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Citation Envoyé par Ditch
    En tout cas, pour ma part, je partirais sur une solution basée sur un chargement de dll à la volée. Dans ces dll les composants doivent implémenter une interface que tu définis dans un projet quelconque.

    Tous les composants doivent implémenter cette interface sans quoi c'est niet. Cela ne devrait pas poser trop de problème. J'avais fait ce système sans le chargement dynamique et ca marchait nickel.

    Tu devras cependant faire un gestionnaire de plugins pour persister les informations sur ce que tu veux ou ne veux pas charger.

    Que penses-tu de cela?
    Cà me semble

    Il s'agira maintenant de "recenser les droits" afin de l'attribuer à un autre utilisateur... Enfin, peut être qu'il faudra que je réfléchisse sur les interfaces à définir et j'y verrais plus clair.

    Je suis entrain de faire des tests. Je poste les résultats au fur et à mesure.

    Merci

  9. #9
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    C'est à ton "moteur" de gérer la gestion des accès. Le plugin ne connait pas la notion d'utilisateur, en tout cas pas la manière dont c'est géré dans l'appli. Si il a besoin d'un utilisateur, tu devras lui passer les infos lors de l'instanciation je pense bien (et pourquoi pas mettre un ou plusieurs objets permettant de définir cela dans ta dll dans laquelle s etrouve l'interface?).

    C'est dommage que je n'ai pas le temps pour le moment sinon j'aurais fait un exemple et pourquoi pas même un tuto. Ce sera pour dans 2 mois

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Citation Envoyé par Ditch
    Niveau pattern il existe un à ce sujet mais je ne connais plus le nom par coeur.
    C'est bon, tu as retrouvé le pattern en question

    Citation Envoyé par Ditch
    C'est dommage que je n'ai pas le temps pour le moment sinon j'aurais fait un exemple et pourquoi pas même un tuto. Ce sera pour dans 2 mois

    Si j'y arrive, je posterai un exemple
    Mais je te laisse le tuto pour dans 2 mois

    Par contre, si tu as une idée, n'hésite pas à poster dans le thread stp


  11. #11
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    Citation Envoyé par Giovanny Temgoua
    C'est bon, tu as retrouvé le pattern en question



    Si j'y arrive, je posterai un exemple
    Mais je te laisse le tuto pour dans 2 mois

    Par contre, si tu as une idée, n'hésite pas à poster dans le thread stp

    Non le nom du pattern ne me dit toujours rien Si tu veux rédiger, tu peux le faire sans problème. Je pense cependant que ca peut être intéressant car ton problème devient récurrent

Discussions similaires

  1. Problème installation plug-in
    Par plawyx dans le forum Eclipse
    Réponses: 5
    Dernier message: 04/06/2012, 07h58
  2. Problème installation Plug-in
    Par Gonzo_09 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 06/09/2011, 15h55
  3. [Débutant]Problème de plug-in.
    Par Boubou Balrog dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 08/01/2007, 13h30
  4. [TOMCAT]Problème de plug-in
    Par 1tox dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 29/12/2005, 17h31
  5. [Easy Struts] problème de plug-in
    Par romano21 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/11/2005, 12h24

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