मेरे पास एक पूर्ण आर्किटेक्चर विचार के बारे में अलग-अलग प्रश्न हैं। मुझे आशा है कि महान अनुभव वाला कोई व्यक्ति मेरी मदद कर सकता है क्योंकि मैं सभी संभावनाओं में फंस गया हूं।एपीआई एक वेबसाइट और मोबाइल ऐप के लिए कोर के रूप में
मैं एक समुदाय वेबसाइट को फिर से लिखने की योजना बना रहा हूं। हमारा ग्राहक भविष्य में देशी मोबाइल ऐप्स का उपयोग करना चाहता है। तो मुझे इसे ध्यान में रखना होगा। इस वजह से मैंने PHP फ्रेमवर्क कोहाना के आधार पर 100% आरईएसटी एपीआई आर्किटेक्चर बनाने का फैसला किया है। मैंने कोहाना का चयन किया है क्योंकि यह आंतरिक एपीआई को अन्य सर्वर पर बहुत अधिक प्रयास किए बिना आसानी से स्केल कर देता है। (कोहाना आंतरिक यूआरएल अनुरोधों को HTTP के रूप में नहीं धमकी देता है, इसलिए शुरुआत में बहुत अधिक उपर नहीं है और कुछ मामूली कोड परिवर्तनों के साथ HTTP में स्केल कर सकते हैं)।
पहले एपीआई निजी होगा, लेकिन बाद में हम इसे अधिक आसानी से कनेक्ट करने के लिए सार्वजनिक कर सकते हैं।
डी बुनियादी बाकी संरचना इस प्रकार है:
- /बिल्लियों
- /बिल्लियों/1
- /बिल्लियों/1/कस्टम
'कस्टम' हो सकता है 'बच्चे' उदाहरण के लिए।
ही चला जाता है के लिए:
- /विज्ञापन
- /बोलियों
- /उपयोगकर्ताओं
- /बैनर
- आदि ..
एपीआई के लिए ये हैं सही संस्थाओं क्योंकि मोबाइल ऐप निश्चित रूप से इस कार्यक्षमता का उपयोग करेगा।
तो हम निष्कर्ष निकाल सकते हैं कि वेबसाइट का मूल REST है। इसलिए मूल रूप से मैं वेबसाइट को भविष्य में मूल ऐप की तरह एपीआई का क्लाइंट बनाना चाहता हूं। इस तरह रखरखाव बहुत आसान लगता है।
मुझे क्या चिंता है हालांकि यह तथ्य है कि इस से कहीं अधिक है (अपलोड की गई फाइलों का प्रबंधन, चालान, चालान के लिए ऑटोमेल्स, विज्ञापनों के लिए automails और इसी तरह)। फ़ाइलों को अपलोड करने के लिए वेबसाइट के माध्यम से एपीआई में जाना होगा। क्या यह सामान्य अभ्यास है? यदि मैं ऐसा नहीं करता हूं, तो वेबसाइट अपलोड तर्क करेगा, जो साइट को अब क्लाइंट नहीं बनाता है और ऐप स्वयं ही करता है। इसलिए मोबाइल ऐप भी अपलोड नहीं हो सकता है और एपीआई और वेबसाइट दोनों को अपलोड फ़ोल्डर (डुप्लिकेट तर्क) जानने की जरूरत है।
मैं निम्नलिखित मॉड्यूल बनाने के बारे में सोचा:
- समुदाय-api
- समुदाय वेबसाइट
API मुख्य तो हो रहा है। लेकिन .... cronjobs आदि के बारे में क्या? दरअसल वे वेबसाइट का हिस्सा नहीं बनना चाहिए, क्योंकि यह सिर्फ 'ग्राहक' है। मुझे लगता है कि उन्हें सीधे मॉडल या एपीआई के साथ बातचीत करनी चाहिए।तो मूल रूप से एपीआई अधिक कोर लिए एक प्रवेश द्वार की तरह हो जाता है और मैं इस की जरूरत है सोचा:
- समुदाय कोर
- मॉडल
- cronjobs
- ऑटो चिट्ठियाँ (cronjobs का हिस्सा)
- चालान आदि
- समुदाय-api
- HTTP
- समुदाय वेबसाइट
- वेबसाइट
- व्यवस्थापक
कोर cronjob के माध्यम से कोर में मॉडलों के साथ सहभागिता एसईएसटी संरचना के लिए अपवाद हैं। वे अकेले हैं जो एपीआई के बिना डेटा बदल सकते हैं। कम से कम यह मेरा विचार था क्योंकि वे कोर में हैं और एपीआई कोर के शीर्ष पर है।
लेकिन डिज़ाइन द्वारा जो कि गलत लगता है। मैनिपुलेटिंग केवल एपीआई के माध्यम से जाना चाहिए!
वैकल्पिक:
- समुदाय कोर
- मॉडल
- समुदाय-api
- HTTP के माध्यम से कोर में मॉडलों के साथ सहभागिता
- समुदाय व्यापार
- cronjobs
- ऑटो चिट्ठियाँ (cronjobs का हिस्सा)
- चालान आदि
- समुदाय वेबसाइट
- वेबसाइट
- व्यवस्थापक
यह मेरे लिए डिजाइन द्वारा बेहतर दिखती हैं। Mindmap illustration http://mauserrifle.nl/mindmap.jpg
मुख्य प्रश्न
1)
एपीआई या कोर मॉडलों के माध्यम से हेरफेर cronjobs चाहिए?
2)
मेरे चालान cronjob एक टेम्पलेट काफी निश्चित रूप से मुख्य वेबसाइट की शैली की जरूरत है। लेकिन अगर मेरा क्रोनबॉज व्यवसाय या कोर का हिस्सा है तो उसे मेरी मुख्य वेबसाइट का ज्ञान नहीं होगा। इसे हल करने के लिए क्या समझ में आता है?
3)
मेरी वेबसाइट में एक टेम्पलेट इंजन के रूप में मूंछ का उपयोग किया जाएगा। (दोनों PHP और जावास्क्रिप्ट इन टेम्पलेट्स को पार्स कर सकते हैं)। मैंने एजेक्स कॉल के लिए सीधे एपीआई का उपयोग करने का सोचा लेकिन फिर एहसास हुआ:
साइट एपीआई से डेटा प्राप्त करती है, टेम्पलेट के लिए दिनांक टाइममैंप (वाई-एम-डी) स्वरूपित करती है और फिर प्रस्तुत करती है। अगर मैंने जावास्क्रिप्ट को सीधे एपीआई कॉल करने दिया है, तो जावास्क्रिप्ट में भी तर्क होना चाहिए (स्वरूपण)। यह डुप्लिकेट कोड है! ऐसा लगता है कि एकमात्र समाधान वेबसाइट को AJAX के लिए बुला रहा है (जो एपीआई और प्रारूपों को कॉल करता है) और स्वरूपित जेसन लौटाता है। क्या मैं सही हू?
लेकिन .... एक विज्ञापन API सीधे के माध्यम से जा सकते हैं हटाने जैसे सरल कॉल (जैसे हटाएँ:/विज्ञापन/1
मैं कॉल का मिश्रण मिलता है ....
किसी भी बेहतर समाधान इस के लिए
4)
कुल मिलाकर: मेरी वास्तुकला बहुत जटिल है? मुझे किसी भी विकल्प पर विचार करना चाहिए?
मुझे आपकी प्रतिक्रिया सुनना अच्छा लगेगा!
मुझे लगता है कि आपकी आखिरी वाक्य सकारात्मक है? (तथ्य यह है कि आपके पास एपीआई-सेंट्रिक का निर्माण करके पहले से ही एक सार्वजनिक एपीआई है?) उस लेख के लिए धन्यवाद, यह ट्विटर ब्लॉग को संदर्भित करता है जिसने मुझे इमारत के इस तरीके का उपयोग करने के लिए प्रेरित किया, इसलिए निश्चित रूप से उसे भी पढ़ना और वापस आना बाद में यह विषय :) – mauserrifle
ठीक है लेख में से अधिकांश मैं पहले ही लागू कर चुका हूं (कोहाना मार्ग)। मुझे एपीआई के क्लाइंट के रूप में वेबसाइट बनाने के बारे में अच्छी भावना है। अभी भी अनिश्चित है कि cronjobs आदि कहां रखना है (जो आंतरिक तर्क है)। मुझे सभी अतिरिक्त इकाइयों को प्रबंधित करने के लिए एक व्यवस्थापक (वेबसाइट का हिस्सा) भी बनाना है, यह काम के ऊपरी हिस्से की तरह लगता है:/फिर फिर, एक बार निर्माण ... भविष्य में बहुत सारी संभावनाएं। इसके लिए सुझाव? – mauserrifle
यह बिल्कुल मेरा मुद्दा है। लगभग 100% मामलों में, विशिष्ट अनुप्रयोग से संबंधित विशेषताओं जैसे क्रोनबॉज की आवश्यकता है, जो वास्तव में एपीआई-केंद्रित दृष्टिकोण के लिए उपयुक्त नहीं है। इसका मतलब है कि, मेरे दृष्टिकोण में, वेब अनुप्रयोगों को मुख्य अनुप्रयोग से डीकॉप्ल किया जाना चाहिए, जैसे wsdl's। –