2010-09-23 4 views
1

Je suis chargé de reconstruire quatre applications Web e-learning (PHP MVC) qui traitent avec des entreprises et des utilisateurs qui achètent/vendent et interagissent avec des cours en ligne:Plusieurs applications MVC, mêmes modèles et base de données, différents contrôleurs, vues et domaines

  1. L'application « Overlord », où les comptes de la société sont créés, les rapports sont agrégés pour tous les comptes dans toutes les autres applications, etc.
  2. La « entreprise » l'application, où une plus grande organisation gère ce sont des entreprises des enfants et a accès à des rapports agrégés pour toutes les entreprises.
  3. L'application eCommerce, où les entreprises et les particuliers achètent et vendent les cours.
  4. L'application "base", où les utilisateurs d'une entreprise peuvent interagir avec les cours créés ou achetés par leur entreprise. Ici aussi, les utilisateurs et les cours sont créés par des «instructeurs», qui sont essentiellement des utilisateurs disposant de droits de gestion élevés.

Toutes ces applications ont des interfaces différentes bien sûr, et sont accessibles sur différents domaines.

A partir de ce moment, l'application 4 est terminée.

Mon problème est que les développeurs précédents dupliqués beaucoup de code et que la base de données partagées entre les applications, ce qui dans un désordre d'entretien quand quelque chose devait être changé.

Les applications ont beaucoup en commun. Ils traitent tous des mêmes cours, utilisateurs et entreprises, et en passant de 4 à 1, chaque application obtient une image plus grande de ce qui se passe.

Par exemple, en application 4, il y a achèvement des cours et des rapports de commerce électronique pour la société actuelle (dont seulement certains utilisateurs peuvent accéder). Passant à l'application 2, les rapports pour les entreprises appartenant à la même entreprise sont agrégés, et plus loin, dans l'application 1, les rapports pour toutes les entreprises et les sociétés autonomes sont présentés. En outre, chacun a une partie différente de la fonctionnalité unique.

Il me semble naturel que toutes les applications doivent partager les mêmes modèles, et chaque application doit avoir ses propres contrôleurs et points de vue. Mes questions sont:

  1. Quelle serait la meilleure façon de faire cela techniquement ?. Les applications sont sur le même serveur, chacune dans un répertoire utilisateur différent/home, et la restriction open_basedir est en vigueur, chaque application n'étant autorisée à inclure que des fichiers de son répertoire.

  2. Quelles sont les implications de sécurité dois-je assouplir les restrictions open_basedir et permettre l'inclusion de fichiers à partir de l'emplacement des modèles? Nous possédons le serveur, donc faire des changements n'est pas un problème (bien que l'exécution de Plesk signifie que nous devrions faire toutes les configurations de son interface).

  3. Comment pourrais-je configurer les domaines?

  4. maintenant je « ça dépend », mais est-ce vraiment une bonne idée? Je peux voir qu'il y a un risque de surpopulation des modèles avec des fonctionnalités pour toutes les applications (bien que je vais sûrement séparer la logique des applications si nécessaire).

Répondre

0

Si les applications sont sur le même serveur.Je voudrais faire un compte principal pour l'un de ces domaines et parquer le reste des domaines en plus de cela. et demandez à l'application de déterminer quelles applications doivent être chargées en fonction du domaine.

Aussi, vous pouvez opter pour cette structure

-- public_html 
-----index.php (main app) 
-----/domain2 
---------index.php 
-----/domain3 
---------index.php 
-----/domain4 
---------index.php 

-- application (folder for common code) 
---- models 

-- applications (folder for app. specific code) 
---- application1 
------- controllers 
------- views 

Et vous garez les domaines sur les dossiers domain1, domain2 etc ... et dans cet index, vous pouvez définir les modèles, les contrôleurs et le chemin en conséquence considère. De cette façon, vous avez un moyen d'accéder à l'application avec le domaine (pour les environnements locaux de test).

+0

Oui, c'est essentiellement la structure à laquelle je pensais aussi, les seuls problèmes que j'ai sont avec des problèmes de sécurité possibles en plaçant tout au même endroit. Si un compte d'utilisateur est compromis, je suis préoccupé par toutes les autres applications. –

+0

si l'application sera en mesure de lire les modèles dans un compte distinct, l'attaquant qui hacks ce compte. –

Questions connexes