6
votes

Stratégies de migration du site en direct vers la structure MVC?

Il y a beaucoup de bon contenu sur la MVC et de commencer avec MVC, mais j'ai du mal à trouver quoi que ce soit sur la meilleure façon de mettre en œuvre la structure MVC sur un site Web préexistant, en direct.

Mon site est une mauvaise mishmash d'echos et de HTML concatéré qui ferait une vingtaine de programmation professionnelle, mais cela fonctionne.

J'aimerais cependant passer du temps à résoudre la dette technique de montage, cependant, et cela signifie de passer à une structure mvc beaucoup plus saine.

Si possible, j'aimerais éviter un RIP! 100% de réécriture et lancement de 100%, et prenez plutôt une section à la fois . Mais il semble que la structure centralisée du contrôleur de base ne convient pas à une telle approche?


1 commentaires

Installez une machine virtuelle. Configurez un environnement similaire à votre serveur Live. Copiez votre site là-bas. Écrivez des tests d'unité, puis refactorisez le codeBase. De cette façon, votre site en direct n'est pas altéré et lorsque vous avez terminé, vous appuyez simplement sur le nouveau site sur le site de production. Pour des idées supplémentaires, voir Sourciakak.com/refactoring/...


3 Réponses :


0
votes

Il est possible de faire. Vous pouvez écrire vos réécrites Mod pour rediriger uniquement sur boot.php ou quoi que ce soit si aucun fichier réel n'est trouvé sur le chemin demandé. Cela vous permettrait de faire une section à la fois. Assurez-vous que tous vos liens sont en ordre, ce sera un cauchemar toutefois.

Peut faire une réécriture, et copier et coller des peices dont vous avez besoin de l'ancienne application au fur et à mesure.


0 commentaires

6
votes

Si je comprends quel est le niveau global de qualité pour cette basebase, alors il n'y a aucun moyen de passer à MVC en une étape . C'est juste impossible. Une autre mauvaise nouvelle est que frameworks ne vous aidera pas . Ils ne peuvent pas transformer comme par magie une mauvaise base de code en quelque chose qui ressemble à une architecture mvcish.

Au lieu de cela, vous devriez vous concentrer sur le refactoring incrémental. Votre objectif devrait être du code qui suit principalement Solid Principes et LOD . Et pendant que vous refacteur votre code, l'architecture émergera en soi. MVC a de nombreuses variantes et saveurs.

Une chose définitive que vous voudrez peut-être examiner sont les moyens d'utiliser php . Examinez le code et voyez ce que vous devez changer pour répondre à vos besoins (c'est plus une direction, pas une solution complète). Et rappelez-vous que dans la vue Structures de type MVC n'est pas un modèle, mais il aperçu utilisé plusieurs modèles.

Une autre chose que vous pourriez bénéficier est d'en savoir plus sur Datamappers . Les mettre en œuvre serait une bonne étape dans la direction de la création de couche de modèle.

Oh .. Et puis il y a peu de conférences générales que vous pourriez jeter un coup d'œil à (tous sont 30min +):


2 commentaires

Donc, dans votre expérience, cela nécessitera une réécriture complète en parallèle, puis en retournant le commutateur et traversez tout à la fois?


@Andre quel que soit, il nécessitera un refactoring incrémentiel: analyser > refacteur < i >> test > publie > < / i> répéter



5
votes

Je suis d'accord avec les autres suggestions ici, un cadre ne sera pas un correctif magique.

Cependant, cela peut aider à long terme. J'ai converti un certain nombre de sites d'Mishmash vers Kohana Cadre, et j'ai eu les expériences suivantes.

Initialement, je ne connaissais pas assez Kohana, alors j'apprendais cela tout en recodant MySite. J'ai fini par arrêter la réécriture et coder un nouveau projet de zéro pour apprendre Kohana, puis je suis revenu au projet de réécriture, maintenant que j'ai bien compris le cadre mieux.

Si vous ne comprenez pas le cadre, il s'agira d'une courbe d'apprentissage escarpée essayant de l'utiliser pour convertir un ancien projet

  1. première étape de la réécriture consistait à extraire toute la logique d'entreprise / de la base de données intégrée aux pages jusqu'au sommet de chaque page (avant la sortie HTML). Pour que je ne changeais pas le flux / la structure du site Web, je ne fais que séparer la logique commerciale de la logique d'affichage.

    Après cela, j'ai eu un site qui avait une logique commerciale facilement lisible, juste dans l'ancienne structure, et je m'étais familiarisé avec l'ancienne basebase en même temps.

  2. prochaine étape que j'ai faite était de corriger des problèmes de structure de base de données afin que tout était sous la forme de la 3ème forme normale (si possible).

    J'ai trouvé plus facile de modifier l'ancien code à la nouvelle structure de la base de données, puis de contourner la structure de la base de données ancienne dans le nouveau cadre. (Kohana est en grande partie un cadre basé sur la convention, plutôt que la configuration, il était donc agréable de suivre ces conventions, de faciliter la maintenance à long terme)

    Avoir une bonne structure de base de données rend la vie plus facile, quel que soit le cadre

  3. prochaine étape consistait à choisir une partie du site Web à remplacer. Configurez les itinéraires à Kohana et laissez Kohana servir cette partie du projet. Kohana (et d'autres cadres sans doute) ont une fuite, si un fichier demandé via une URL existe déjà sur le site, Kohana ne gérera pas cette demande

    Étant donné que vous avez séparé la logique commerciale de la logique d'affichage dans vos fichiers PHP, il s'agit d'une simple question de scinder le code dans un contrôleur et une vue. apporter les modifications aux deux parties adaptées au cadre. Vous pouvez diviser la logique commerciale en modèle / contrôleur après avoir eu le contrôleur / la vue fonctionnel comme prévu

    Travaillez votre chemin à travers cette partie du site, jusqu'à la fin. Puis test / lancement / bugfix, etc.

    Commencez à nouveau sur la partie suivante du site.

    éventuellement, vous y arriverez ...

    Bien que cela ait fallu beaucoup de temps pour réécrire, car cela valait la peine, car les sites sont beaucoup plus faciles à maintenir maintenant. (évidemment, la quantité de gain dépendra de la qualité de la base de code d'origine)

    bonne chance


0 commentaires