2011-10-18 16 views
6

एसओ पर एमवीसी के बारे में बहुत अच्छी सामग्री है और एमवीसी के साथ शुरू करना है, लेकिन मुझे पूर्व-मौजूदा, लाइव वेबसाइट पर एमवीसी संरचना को सर्वोत्तम तरीके से कार्यान्वित करने के तरीके के बारे में कुछ भी ढूंढने में परेशानी हो रही है।एमवीसी संरचना में लाइव साइट माइग्रेट करने के लिए रणनीतियां?

मेरी साइट echos और concatenated HTML का एक बुरा मिशमाश है जो किसी भी पेशेवर प्रोग्रामर फेंकने, बनाती है लेकिन यह काम करती है।

हालांकि, मैं बढ़ते तकनीकी ऋण से निपटने में कुछ समय बिताना चाहता हूं, और इसका मतलब है कि अधिक से अधिक एमवीसी संरचना में जाना है।

यदि संभव हो तो, मैं से बचना चाहता हूं 'एआर रिप! 100% पुनः लिखना और लॉन्च दृष्टिकोण, और इसके बजाय इसे एक समय में एक अनुभाग लेना। लेकिन ऐसा लगता है कि मूल नियंत्रक की केंद्रीकृत संरचना इस तरह के दृष्टिकोण के लिए उपयुक्त नहीं है?

+0

वर्चुअल मशीन स्थापित करें। अपने लाइव सर्वर पर एक समान वातावरण सेटअप करें। अपनी साइट को वहां कॉपी करें। यूनिट-टेस्ट लिखें और फिर कोडबेस को दोबारा दोहराएं। इस तरह, आपकी लाइव साइट खराब नहीं है और जब आप कर लेंगे तो आप नई साइट को उत्पादन साइट पर धक्का दें। अतिरिक्त विचारों के लिए http://sourcemaking.com/refactoring/convert-procedural-design-to-objects – Gordon

उत्तर

5

मैं यहां अन्य सुझावों से सहमत हूं, एक ढांचा एक जादू तय नहीं होने वाला है।

हालांकि यह लंबे समय तक मदद कर सकता है। मैंने कई मिशमाश साइटों को कोहाना फ्रेमवर्क में परिवर्तित कर दिया है, और निम्नलिखित अनुभव हैं।

शुरुआत में मुझे कोहाना अच्छी तरह से नहीं पता था, इसलिए मैं सीख रहा था कि मैसाइट को रिकोड करते समय। मैंने कोहना सीखने के लिए स्क्रैच से पूरी तरह से नई परियोजना को फिर से लिखना और कोडिंग करना बंद कर दिया, फिर फिर से लिखने वाली परियोजना पर वापस चला गया, अब मैं ढांचे को बेहतर समझ गया।

अगर आप ढांचे समझ में नहीं आता है, यह इसका इस्तेमाल करने के एक पुराने परियोजना कन्वर्ट करने के लिए कोशिश कर रहा एक खड़ी सीखने की अवस्था होने जा रहा है

  1. पुनर्लेखन में

    पहला कदम सभी व्यावसायिक खींचने के लिए था/डाटाबेस तर्क प्रत्येक पृष्ठ के शीर्ष तक पृष्ठों में एम्बेड किया गया है (एचटीएमएल आउटपुट से पहले)। ताकि मैं वेबसाइट के प्रवाह/संरचना को नहीं बदल रहा था, बस व्यापार तर्क को प्रदर्शन तर्क से अलग कर रहा हूं।

    उसके बाद मेरे पास एक ऐसी साइट थी जो पुरानी संरचना में आसानी से पठनीय व्यवसाय तर्क था, और मैंने एक ही समय में पुराने कोडबेस के साथ परिचित हो गया था।

  2. अगले चरण में मैंने किसी भी डेटाबेस संरचना के मुद्दों को ठीक करने के लिए किया था ताकि सबकुछ तीसरे सामान्य रूप में हो (यदि संभव हो)।

    मुझे नए डेटाबेस संरचना में पुराने कोड को संशोधित करना आसान था, फिर नए ढांचे में पुराने और पुराने डेटाबेस संरचना के लिए काम करना आसान था। (Kohana मोटे तौर पर एक सम्मेलन आधारित ढांचे, बल्कि तब विन्यास है, इसलिए यह उन परंपराओं का पालन करने के लिए, लंबी अवधि के रखरखाव को कम करने के अच्छा था)

    एक अच्छा डेटाबेस संरचना ढांचा

  3. अगले कदम की आसान परवाह किए बिना जीवन में आता है प्रतिस्थापित करने के लिए वेबसाइट का एक हिस्सा चुनना था। कोहाना में मार्ग स्थापित करें और कोहाना परियोजना के उस हिस्से को सेवा दें। कोहाना (और अन्य ढांचे में कोई संदेह नहीं है), यदि साइट पर यूआरएल के माध्यम से अनुरोध किया जा रहा फ़ाइल पहले से मौजूद है, तो कोहाना उस अनुरोध को संभाल नहीं पाएगा

    क्योंकि आपने डिस्प्ले तर्क से व्यवसाय तर्क को अलग कर दिया है आपकी PHP फाइलें, यह कोड को नियंत्रक और दृश्य में विभाजित करने का एक साधारण मामला है। ढांचे के अनुरूप दोनों भागों में परिवर्तन करें।आप काम कर के रूप में उम्मीद

साइट के इस भाग के माध्यम से अपने तरीके से काम, पूरा जब तक नियंत्रक/दृश्य है तुम्हारे जाने के बाद मॉडल/नियंत्रक में व्यापार तर्क विभाजित कर सकते हैं। फिर परीक्षण/लॉन्च/बगफिक्स इत्यादि

फिर साइट के अगले भाग पर फिर से शुरू करें।

अंततः आप वहाँ मेरे लिए यह सार्थक था मिल जाएगा ...

हालांकि यह बहुत समय ले लिया पुनर्लेखन के लिए, के रूप में साइटों दूर अब बनाए रखने के लिए आसान कर रहे हैं। (स्पष्ट रूप से लाभ की मात्रा मूल कोडबेस की गुणवत्ता पर निर्भर होगी)

अच्छी किस्मत

0

ऐसा करना संभव है। आप अपने mod rewrites को केवल boot.php पर रीडायरेक्ट करने के लिए लिख सकते हैं या जो भी अनुरोध किया गया पथ पर कोई वास्तविक फ़ाइल नहीं मिलती है। यह आपको एक समय में एक सेक्शन करने की अनुमति देगा। यह सुनिश्चित करना कि आपके सभी लिंक क्रम में हैं, हालांकि एक दुःस्वप्न होगा।

एक पुनर्लेखन करने के लिए वांछित हो सकता है, और जब आप जाते हैं तो पुरानी एप्लिकेशन से आपको आवश्यक पेस कॉपी और पेस्ट कर सकते हैं।

6

तो मुझे समझ एक कदम में MVC करने के लिए ले जाने के लिए कोई रास्ता नहीं है, कि codebase के लिए गुणवत्ता के समग्र स्तर क्या है तो। यह सिर्फ असंभव है। एक और बुरी खबर यह है कि ढांचे की सहायता नहीं करेंगे। वे मैजिकल रूप से खराब कोडबेस को एमवीसीआईएस आर्किटेक्चर जैसा कुछ नहीं बदल सकते हैं।

इसके बजाय आपको वृद्धिशील रिफैक्टरिंग पर ध्यान देना चाहिए। आपका लक्ष्य कोड होना चाहिए जो अधिकतर SOLID सिद्धांतों और LoD का पालन कर रहा है। और जब आप अपना कोड दोहराते हैं, तो आर्किटेक्चर स्वयं ही उभर जाएगा। एमवीसी में कई प्रकार और स्वाद हैं।

एक निश्चित चीज़ जिसे आप देखना चाहते हैं templates in php का उपयोग करने के तरीके हैं। कोड की जांच करें, और देखें कि आपको अपनी जरूरतों के अनुसार क्या बदलना है (यह एक दिशा है, पूर्ण समाधान नहीं)। और याद रखें कि एमवीसी जैसी संरचनाओं में देखें टेम्पलेट नहीं है, लेकिन यह दृश्य कई टेम्पलेट्स का उपयोग करता है।

एक और चीज जो आपको लाभ हो सकती है, datamappers के बारे में अधिक सीख रही है। मॉडल परत बनाने की दिशा में उन्हें लागू करना एक अच्छा कदम होगा।

ओह ..

: और फिर वहाँ कुछ सामान्य व्याख्यान आप पर एक नज़र (सभी कर रहे हैं 30 मिनट +) ले सकता है कर रहे हैं

ओह, और this book में बड़ी PHP परियोजनाओं को पुन: सक्रिय करने में कुछ अंतर्दृष्टि है। आपके लिए उपयोगी हो सकता है।

+0

देखें तो आपके अनुभव में इसे समानांतर में एक पूर्ण पुनर्लेखन की आवश्यकता होगी, और फिर स्विच को फ़्लिप करना होगा और एक बार में सभी को पार करना होगा? – Drew

+0

@AndrewHeath, नहीं, इसके लिए वृद्धिशील रिफैक्टरिंग की आवश्यकता होगी: *** विश्लेषण *** *> * *** रिफैक्टर *** *> * *** परीक्षण *** *> * *** प्रकाशित *** * > * *** दोहराना *** –

संबंधित मुद्दे

 संबंधित मुद्दे