2010-08-24 14 views
0

J'écris une application où il y a un tas de gestionnaires. J'essaye de voir si je devrais empaqueter ces gestionnaires dans le même module d'apache ou avoir un module séparé pour chaque gestionnaire. Je suis d'accord c'est une question générique et dépendrait de mon application, mais je voudrais savoir les considérations générales que je dois faire et aussi les compromis dans chaque approche.Consdirations pour créer plusieurs gestionnaires dans le même module Apache ou avoir des modules séparés pour chaque gestionnaire

Ce sera vraiment bien si quelqu'un peut me dire les avantages/inconvénients des deux approches.

Répondre

0

Vous n'avez pas spécifié si tous ces gestionnaires doivent effectuer des tâches interdépendantes ou s'ils vont travailler indépendamment les uns des autres.

Je voudrais aller garder les gestionnaires connexes dans le même module, et le reste d'entre eux dans leur propre module. Je crois que cela facilite la configuration du serveur (nous pouvons facilement charger/décharger un module si nécessaire) et la base de code reste bien gérée.

Par exemple Supposons que nous avions besoin de deux gestionnaires qui partagent certaines données, nous pourrions garder ensuite dans le même module:

static int my_early_hook(request_rec 
*r) { 
    req_cfg *mycfg = apr_palloc(r->pool, sizeof(req_cfg)); 
    ap_set_module_config(r->request_config, 
&my_module, mycfg); 
    /* set module data */ } 

static int my_later_hook(request_rec 
*r) { 
    req_cfg *mycfg = ap_get_module_config(r->request_config, 
&my_module); 
    /* access data */ } 
+0

oui, les gestionnaires ont besoin de faire des tâches qui a un certain partage de données. Cela veut-il dire qu'ils doivent être dans le même module? – AMM

+0

pas nécessairement. Il est plus facile de partager des données si elles sont dans le même module, comme je l'ai montré dans le code ci-dessus, mais deux modules peuvent également partager des données entre eux en utilisant la table de notes dans l'objet request_rec. Si votre objectif global est d'obtenir une sortie particulière en utilisant ces différents gestionnaires, vous devriez envisager de les placer dans le même module. Il existe différents types de modules, certains d'entre eux sont un module de fichiers tandis que d'autres sont bien séparés en 2 ou 3 modules différents. –