PHP वेब अनुप्रयोग वास्तुकला / डिजाइन [बंद]


20

मैं PHP में वेब अनुप्रयोगों के विकास में एक नया काम में सिर-पहले फेंक दिया गया है। मैं PHP के लिए कोई नया माध्यम नहीं हूं, लेकिन मैंने पहले बड़े पैमाने पर एप्लिकेशन विकसित नहीं किए हैं। मैं सोच रहा हूं कि भविष्य में समस्याओं के लिए खुद को स्थापित करने से बचने के लिए अपने विकास को कैसे तैयार किया जाए। मैं अपने अनुप्रयोगों को एक ध्वनि तरीके से कैसे डिजाइन और आर्किटेक्ट करता हूं जो उन्हें कार्यक्षमता और प्रदर्शन के मामले में समय के साथ स्केल करने की अनुमति देता है। मैं चीजों की तरह सोच रहा हूँ:

  • फ्रंट एंड से बैक एंड को अलग करना
  • निर्देशिका संरचना

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


नमस्ते! वेब अनुप्रयोगों के लिए सबसे आम वास्तुकला एमवीसी है , पीएचपी और हर दूसरे लोकप्रिय वेब प्लेटफॉर्म के लिए। उस ने कहा, आपको हमारे FAQ को पढ़ना चाहिए । यद्यपि सॉफ़्टवेयर आर्किटेक्चर विषय पर है, आपको प्रश्न को थोड़ा और विशिष्ट बनाने के लिए संशोधित करना होगा। एक "सामान्य वास्तुकला के बारे में स्वस्थ चर्चा" साइट के क्यू एंड ए प्रारूप में फिट नहीं होती है।
यनीस

मैं एस / ई साइट्स का लगातार विज़िटर हूं, मुझे लग रहा था कि इस सवाल का कोई जवाब नहीं होगा, इसलिए "चर्चा"। हालांकि MVC पॉइंटर के लिए धन्यवाद :)
ब्रैड मॉरिस

जवाबों:


29

नवीनतम बड़े पैमाने पर परियोजना की वास्तुकला का एक मोटा चित्र, जिसमें मैं शामिल था।

यहां छवि विवरण दर्ज करें

यह केवल एक बुनियादी रूपरेखा, वास्तविक वास्तुकला दस्तावेजों से अनुकूलित और एक तरीका है कि एक जैसा दिखता में प्रस्तुत किया है ठेठ n स्तरीय दृष्टिकोण एक ठेठ के साथ संयुक्त MVC दृष्टिकोण । जैसा कि आप देख सकते हैं कि लॉजिक और डेटा टियर एक सर्विस लेयर के माध्यम से जुड़े हुए हैं, और अधिक विशेष रूप से एक REST API , जो कि अवकाश से ज्ञात PHP फ्रेमवर्क से प्रेरित था ।

पहिया को सुदृढ़ मत करो

मैं तीन रूपरेखाओं के साथ काम करता हूं:

  • Zend फ्रेमवर्क

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

  • Kohana

    कोहना कोडइग्निटर के एक कांटे के रूप में शुरू हुआ, और यही कारण था कि मुझे शुरू में इसका इस्तेमाल न करने के लिए पर्याप्त था। आजकल यह एक ठोस और सुरुचिपूर्ण ढांचे में विकसित हो गया है जो एक पदानुक्रमित एमवीसी दृष्टिकोण का पालन ​​करके हर दूसरे से खुद को अलग करता है । एचएमवीसी एमवीसी की तुलना में अधिक मात्रा में संशोधन की अनुमति देता है । आरेख में परियोजना के लिए मैंने कोहाना के HMVC को ZF के लिए अनुकूलित किया, लेकिन मैंने छोटे प्रोजेक्ट के लिए कोहना का उपयोग करना शुरू कर दिया है और इसे बड़े के लिए भी विचार कर रहा हूं।

  • CodeIgniter

    मैं केवल विरासत में मिली परियोजना के कारण इसका उपयोग करता हूं, यदि संभव हो तो बचें।

जैसा कि अन्य उत्तर बताते हैं, एक ORM हमेशा काम आता है। मैं बड़े पैमाने पर Doctrine का उपयोग करता हूं , और आपको CouchDB और MongoDB के लिए इसके ब्रांड नए मैपर्स पर एक नज़र डालनी चाहिए । स्केलेबिलिटी बड़े पैमाने पर अनुप्रयोगों के लिए जरूरी है और आपको NoSQL समाधान का मूल्यांकन करना चाहिए ।

सभी ने कहा, याद रखने वाली महत्वपूर्ण बात यह है कि बड़े अनुप्रयोगों में आमतौर पर अद्वितीय चुनौतियां होती हैं। आपको हर लोकप्रिय थर्ड पार्टी सॉल्यूशन का मूल्यांकन करना चाहिए, और आप शायद कुछ अस्पष्ट लोगों से बहुत कुछ हासिल करेंगे। जब मैंने पहली बार रेसे का मूल्यांकन किया तो यह उत्पादन के लिए तैयार था, लेकिन इसका दृष्टिकोण अनिवार्य रूप से परियोजना में था।

प्रदर्शन

विशिष्ट वेबसाइटों पर आप साधारण आउटपुट कैशिंग और ओपोड कैशिंग के साथ दूर हो सकते हैं, लेकिन बड़े पैमाने पर अनुप्रयोगों पर आपको वास्तव में मेमोरी कैशिंग पर विचार करना चाहिए, जो कि आमतौर पर मेमकेड के आसपास निर्मित होता है ।

xdebug को ज्यादातर डिबगर के रूप में जाना जाता है, लेकिन यह एक प्रोफाइलर के रूप में भी काम कर सकता है । मैंने हाल ही में Zend Server का उपयोग करना शुरू किया है और मैं इसके कोड ट्रेसिंग फीचर्स को बिल्कुल पसंद करता हूं । दुर्भाग्य से वे सामुदायिक संस्करण में उपलब्ध नहीं हैं , लेकिन xdebug एक बहुत ही अच्छा विकल्प है।

यदि आप अपाचे का उपयोग कर रहे हैं, तो सुनिश्चित करें कि इसमें से नरक का अनुकूलन करेंnginx और lighttpd हैं जाहिरा तौर पर बेहतर विकल्प , प्रदर्शन बुद्धिमान, लेकिन मैं उन्हें एक बहुत उपयोग नहीं किया है और मैं वास्तव में नहीं कह सकता।

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

अंत में PHP में एक नया कचरा संग्रह तंत्र है , जो देखने लायक है।

सुरक्षा

PHP सुरक्षा की दुनिया अराजक है, कम से कम कहने के लिए। मैं कोई विशेषज्ञ नहीं हूँ, इसलिए जेनेरिक युक्तियों के रूप में निम्नलिखित व्यवहार करें:

  • वेब एप्लिकेशन सुरक्षा परियोजना खोलें

    वहाँ में बहुत अच्छा सामान है, लेकिन एक त्वरित अवलोकन के लिए आपको शीर्ष दस सूची से शुरू करना चाहिए । और उन सामान्य कमजोरियों के लिए पीएचपी समाधानों पर शोध करें।

  • ढेर की कमजोरियाँ

    एक अच्छी आदत है समय-समय पर PHP के खुले बगों की निगरानी करना । यहां तक ​​कि अगर आप खुद कोई विशेषज्ञ नहीं हैं, तो सुरक्षा खतरों पर लगभग हमेशा वर्कअराउंड टिप्स हैं। और हां, आपको आदत को स्टैक के हर दूसरे हिस्से तक पहुंचाना चाहिए, विशेष रूप से सबसे कमजोर लोगों को, जैसे वेब सर्वर और डेटाबेस।

आईटी सिक्योरिटी स्टैक एक्सचेंज में भीड़ आपको अधिक शिक्षित जवाब देने में मदद कर सकती है।

आगे की पढाई


1
बहुत बढ़िया जवाब; शानदार प्रस्तुति; महान लेआउट ... महान काम!
डायनामिक

@ जय धन्यवाद! क्या आपने यह सब पढ़ा? : पी यह थोड़ा लंबा है, मैं सोच रहा था कि क्या मुझे इसे थोड़ा prune करना चाहिए।
यानिस २ y

हा, मैंने कोशिश की! ;-)
डायनामिक

वास्तव में Yannis, मैं तुम्हारे लिए एक सवाल है। मैंने हाल ही में PHP के साथ बहुत दिलचस्पी ली है। मैं इसे स्वयं सीखने की कोशिश कर रहा हूं, लेकिन मुझे थोड़ी परेशानी हो रही है। ऐसा भी लगता है कि आप PHP के साथ बहुत अच्छे हैं :-)। क्या आप मार्गदर्शन का एक सा हिस्सा साझा करना चाहेंगे? यदि हां, तो मैं एक चैट रूम बनाऊंगा।
डायनामिक

Thats जवाब की तरह मैं देख रहा था! इसकी जानकारी लेने के लिए बहुत सारी जानकारी का एक नरक, मुझे लगता है कि बीमार को अगले घंटे में कुछ अवशोषित और छेड़छाड़ करना पड़ता है, लेकिन आपने मुझे शुरू करने के लिए कहीं दिया है। धन्यवाद :)
ब्रैड मॉरिस

1

आईबीएम के डेवलपरवर्क की वेब साइट पर PHP लेखों का एक बड़ा ढेर है , उनमें से बहुत अच्छे हैं। उनके पास PHP वेब फ्रेमवर्क की तुलना करने वाले लेखों की एक श्रृंखला है , और CakePHP फ्रेमवर्क का उपयोग करके वेब साइटों के बारे में एक और श्रृंखला है ।

ओ 'रेली की पुरानी "ओनलैम्प" वेबसाइट में PHP में MVC के बारे में एक लेख है । उस लेख के लेखक ने एमवीसी को कुछ विस्तार से बताया

ओ'रेली लेख थोड़ा पुराना है, लेकिन वे आपको मिलेंगे। IBM developerworks सामान वास्तव में अच्छा है, और जो आप पूछ रहे हैं, उसमें बहुत कुछ शामिल है।


1

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

अब, दूसरा, आपको डेटाबेस कनेक्शन में देखना चाहिए, जो मुझे PHP, डॉक्ट्रिन और प्रोपेल के लिए दो सबसे प्रमुख ORM फ्रेमवर्क में ले जाता है । व्यक्तिगत तौर पर मैं प्रोपेल प्यार और भी पर लिखा था कि कैसे स्थापित एक साफ प्रोपेल स्थापित करने के लिए एक पर CodeIgniter आधारित एप्लिकेशन, तथापि, Symfony में अधिक है सिद्धांत है, लेकिन जाने आप या तो एक का उपयोग की। यदि आप डॉक्ट्रिन और प्रोपेल पर कुछ और जाँच करना चाहते हैं , तो इस प्रश्न पर एक नज़र डालिए जो मैंने कुछ समय पहले पूछा था।

अंत में, आप एक templating ढांचे, जैसे ध्यान देना चाहिए चतुर , Dwoo या ट्विग्गस्मार्टी सबसे पुराना है और इसलिए सबसे स्थिर है। Dwoo स्मार्टी से विरासत में मिला है और PHP 5 पर OOP का बेहतर समर्थन करने के लिए एक या दो चीज़ों को जोड़ता है। आखिरकार Twigg टेम्प्लेटिंग विकल्प है जो सिम्फनी टीम को प्रदान करता है , मैंने इसे खुद नहीं देखा है, लेकिन अगर यह सिम्फनी टीम से आता है तो यह अच्छा होना चाहिए

आशा है कि यह पूरी स्पीच कुछ समझ में आएगी, डेविड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.