2014-06-27 3 views
10

में मैं एक मोबाइल आवेदन मैं निर्माण कर रहा हूँ के लिए एक समाधान है - अब तक इस दो परियोजनाओं के होते हैं:विभाजन अप WebAPI परियोजना और फ़्रंटएंड परियोजना समाधान

1) WebAPI for API/DAL/SQL etc 
    2) Web for single-page front-end 

वेब परियोजना वेबएपीआई परियोजना के लिए कॉल करता है। योजना विंडोज 8 एप्लिकेशन के लिए एक और प्रोजेक्ट बनाना है, दूसरा एक WP8 ऐप आदि के लिए,

यह विकास के दौरान ठीक काम करता है, लेकिन यह सीओआरएस, तैनाती आदि के साथ काफी जटिल हो गया है (वेब ​​से सेवा की जाती है वेबएपीआई की तुलना में एक अलग अंतराल - दो Azure वेब साइटें)। मेरा सवाल यह है कि - एक समाधान को आर्किटेक्ट करते समय जो आरईएसटी-आईएसआई एपीआई द्वारा समर्थित है, कई परियोजनाओं में समाधान को विभाजित करने के लिए बुद्धिमान/मूर्खतापूर्ण कब होता है?

उत्तर

14

मैं हमेशा कुछ कारणों से अलग परियोजनाओं में एपीआई और सामने के अंत विभाजित:

मोर्चा के अंत निर्भरता (jQuery, नॉकआउट, कोणीय ....) एपीआई आवश्यक से भारी हैं। "अन्य" परियोजना प्रकार के लिए कोड के माध्यम से स्थानांतरण से विकास धीमा हो सकता है।

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

परियोजनाओं को एक साथ रखकर, आपको एक बार में साझा निर्भरताओं को अपडेट करना होगा (.NET के नए संस्करण में अपग्रेड करें)। यदि आपके एपीआई के लिए आपके कोड में गिरावट वाले कोड पर निर्भरता है, तो उन्नयन करना मुश्किल हो सकता है और आपकी वेबसाइट अपग्रेड वापस हो सकती है (या इसके विपरीत)।

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

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

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

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

अंत में, एमवीसी स्वयं चिंताओं और स्वच्छ विकास को अलग करने के बारे में है। मैं कहूंगा कि परियोजना प्रकारों को अलग करना इस तर्क का पालन करता है।

+0

इसके लिए धन्यवाद। तो मुझे लगता है कि मेजबान और स्थानीय रूप से दोनों स्थानीय अंतराल के सिरदर्द (लोकलहोस्ट: 2020 और लोकलहोस्ट: 2021) और सीओआरएस आपकी राय में चिंताओं को अलग करने के लायक है? – SB2055

+0

हां बिल्कुल। जैसे-जैसे परियोजना बड़ी हो जाती है, अलगाव जल्दी से भुगतान करेगा। इसके अलावा, अलग-अलग अंतराल के साथ, आपके उपभोक्ता अन्य अंतराल के बारे में ज्ञान के बिना सीधे (एपीआई या फ्रंट एंड) चाहते हैं। – vesuvious

+0

इसके अलावा, हालांकि सीओआरएस हमेशा सिरदर्द है, वेबपै में एक हैंडलर लिखना काफी सीधे है। सीओआरएस हैंडलर लिखने के लिए ऑनलाइन दस्तावेज का एक टन है जो आपको कुछ होस्ट, सभी होस्ट इत्यादि द्वारा एक्सेस निर्दिष्ट करने की अनुमति देता है। – vesuvious

0

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

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