क्या यह संभव है कि इसके ढांचे के लिए एक जोड़े को शिथिल किया जाए?


14

मान लीजिए कि मैं एक वेब एप्लिकेशन विकसित कर रहा हूं। मेरी पहली पसंद PHP को फैट-फ्री फ्रेमवर्क (F3) और MVC पैटर्न के साथ उपयोग करना है। अगले साल, मैं तय कर सकता हूं कि मैं Zend फ्रेमवर्क पर स्विच करना चाहता हूं, या शायद ASP.NET MVC भी। क्या यह मेरे आवेदन को इस तरह से तैयार करने और डिजाइन करने के लिए समझ में आता है कि यह अपने ढांचे के लिए शिथिल है, या इस यथार्थवादी बनाने के लिए रूपरेखा भी अभिन्न है?

मेरे द्वारा पूछे जाने का एकमात्र कारण यह है कि यह हाल ही में एक सहकर्मी के साथ बातचीत में सामने आया, जिसने एफ 3 के लिए मेरे आवेदन को शिथिल करने के आकाश विचार में मेरी पाई की आलोचना की।


2
अपनी खुद की एप्लिकेशन अवधारणाओं को दूर करें ।
वॉन हिल्ट्स

@ विघ्नहिल्ट लोग आपसे सहमत हैं लेकिन मुझे यकीन नहीं है कि आपका क्या मतलब है। क्या आप विस्तार से समझा सकते हैं?
बिग मैकलारेग्यूज

जवाबों:


29

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

क्या यह सब मुसीबत के लायक एक रूपरेखा पर ढांचे को बदलने की क्षमता है? जैसा कि मैंने कहा, आप इसे कतई नहीं बदल पाएंगे क्योंकि आपको प्रॉक्सी फ्रेमवर्क को समायोजित करना होगा, जो सीधे आवेदन कोड को समायोजित करने की तुलना में अधिक काम हो सकता है।


4
"प्रॉक्सी फ्रेमवर्क" शब्द के आपके उपयोग ने मेरे लिए समस्या को स्पष्ट करने में मदद की।
बिग मैकलेरज्यूज

1
इस उत्तर के लिए +1। कई बार ऐसा होता है कि नए ढांचे के खिलाफ पुनरावृत्ति करना प्रॉक्सी फ्रेमवर्क निर्माण की तुलना में बहुत सस्ता हो सकता है - जो कि सट्टा भी है। यह कहा जा रहा है, मुझे लगता है कि पूरी रूपरेखा-स्विचिंग बात निश्चित रूप से संभव है और फ्रेमवर्क के लिए समझ में आता है जहां आपके पास 1 है) एपीआई के संपर्क के कुछ बिंदु और 2) अलग-अलग फ्रेमवर्क के एपीआई के बीच समानता - लेकिन मेरा तर्क है कि निश्चित रूप से नहीं है आम मामला है।
जे ट्राना

5

कोई नहीं कर सकता।

आप एक ऐसे तरीके से डिजाइन कर सकते हैं जो चौखटे के पार पोर्टेबल हो। MVC MVC है, और सिद्धांत लगभग वही हैं जो भाषा या मंच का उपयोग किया जाता है।

हालाँकि, वास्तविक कोड बहुत ही ढांचा या भाषा पर निर्भर करने वाला है। खुद को उससे अलग करने का एकमात्र तरीका एक मध्यवर्ती रूपरेखा के आधार पर कोड करना होगा। तब आप आवेदन को बदले बिना मध्यवर्ती कार्यान्वयन परिवर्तन (F3 से .NET तक?) कर सकते हैं। जो बहुत काम की है, गैर-रिसाव सार मानती है, और बस समस्या को हल किए बिना चलती है: अब आप अपने मध्यवर्ती ढांचे से बंधे हैं।

अधिक सकारात्मक नोट पर: अपने कार्यान्वयन से स्वतंत्र एक मंच में अपने कुछ परीक्षणों (BDD शैली) को व्यक्त करने पर विचार करें। वे प्रमुख पुनर्लेखन लिख सकते हैं।


जैसा कि आपने बताया कि PHP से .NET तक बदलना संभवत: यथार्थवादी नहीं है। मैं एक बहुत ही उच्च स्तर पर सोच रहा हूं, सार, संभवतः आकर्षक।
बिग मैक्लेरजैग

5

मैंने एक बार रॉबर्ट सी। मार्टिन को एक बात करते हुए देखा, जहां उन्होंने कहा था कि "आपके द्वारा किया गया पहला निर्णय बाद में बदलने के लिए सबसे कठिन है"।

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


यह वास्तव में अच्छी सलाह है!
बिग मैकलेरज्यूज

5

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

एक फ्रेमवर्क के अंदर एक एप्लिकेशन के अधिकांश विकास को गोंद कोड माना जाता है, वह सामान जो आपके ढांचे के घटकों को एक साथ बांधता है। कॉन्फ़िगरेशन फ़ाइलें कुछ सिस्टम में गोंद की एक निश्चित राशि का सार कर सकती हैं लेकिन बहुत सारे बारीक विवरण कोड में किए जाने चाहिए।

दूसरी ओर, व्यावसायिक नियमों और प्रक्रियाओं को आवेदन से अलग किया जा सकता है। अमूर्तता का कठिन हिस्सा है जब नियमों को सीधे ढांचे द्वारा लागू किया जाता है; सुरक्षा, पहुंच और प्रक्रिया अनुक्रमण आपके ढांचे द्वारा लागू किया जाता है और यह देखने में सबसे कठिन हो सकता है।

यदि आप अपने नियम के गोंद वाले हिस्से को व्यापार नियम और व्यवसाय प्रक्रिया और व्यवसाय डेटा भाग से अलग कर सकते हैं, तो आप अपने समाधान के कुछ हिस्सों को पोर्टेबल बना पाएंगे।


+1। एक (वेब) सेवा में अपने व्यावसायिक तर्क को निकालकर, आप किसी भी एप्लिकेशन को इसका उपभोग करने दे सकते हैं, PHP MVC ऐप को केवल आपके व्यवसाय तर्क के लिए एक वेब GUI को कम कर सकते हैं, जिससे इसे पूरे के रूप में बदलना आसान हो जाता है।
कोडकास्टर

अपनी खुद की रूपरेखा तैयार करने के लिए एक वेब सेवा डिजाइन करना एक समान है। इसके अलावा, आपके व्यावसायिक नियमों की एक महत्वपूर्ण संख्या, विशेष रूप से सूचना इंजीनियरिंग भाग, को जीयूआई में सन्निहित होना चाहिए।
BobDalgleish
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.