मैं एमवीसी में एक परियोजना पर काम कर रहा हूं जिसमें मोबाइल एप्लिकेशन है इसलिए एक बात स्पष्ट है कि हमें वेब एपीआई का उपयोग करना होगा इसलिए इसका उपयोग मोबाइल एप्लिकेशन में किया जा सकता है।
एपीआई बनाने के बाद जब हमने वेब साइट को विकसित करना शुरू किया तो हम भ्रमित हैं और इस बात पर चर्चा हुई कि एपीआई का उपयोग करें या सीधे व्यावसायिक वस्तु तक पहुंच। और हमने बिजनेस ऑब्जेक्ट को सीधे उपयोग करने के बजाय वेब एपीआई का उपभोग करने के लिए अधिक अनुभवी डेवलपर के रूप में विचार करने के बाद समाप्त कर दिया।
मुझे इस समाधान संरचना के बारे में भ्रम हो रहा है।
1) हमें वेब एपीआई का उपयोग क्यों करना चाहिए और सीधे व्यावसायिक वस्तु के बजाय डेटा प्राप्त करने या लगाने के लिए HTTP अनुरोध (जो कि समय लेने वाला है) बनाना चाहिए जो उसी समाधान में है।
2) बहस होने के बाद उन्होंने कहा कि यदि ग्राहक एपीआई और वेब को अलग-अलग क्लाउड सर्वर पर होस्ट करना चाहता है और केवल एपीआई पर स्केलिंग लागू करता है या हो सकता है कि वह एपीआई और वेब तक पहुंचने के लिए अलग-अलग यूआरएल चाहता है (जो कि कुछ तार्किक है)। तो क्या उस मामले में हमें उसी समाधान में एमवीसी एप्लिकेशन से वेब एपीआई को कॉल करना चाहिए?
3) यदि हम अलग-अलग होस्टिंग पर एपीआई और वेब की मेजबानी कर रहे हैं तो इसका मतलब है कि हमारा वेब वेबक्लाइंट का उपयोग करेगा और प्रत्येक नेविगेशन पर HTTP कॉल करेगा। क्या यह सही है?
4) यदि हम व्यापार वस्तु को अलग-अलग सर्वर पर एपीआई और वेब होस्टिंग दोनों बनाते हैं तो यदि बीएल में कुछ बदलाव के लिए दोनों सर्वर पर बिल्ड अपडेट करना होगा।
5) या हमें एपीआई के लिए केवल एक प्रोजेक्ट बनाना चाहिए और वेब इंटरफेस विकसित करने के लिए विचार या HTML पेज जोड़ सकते हैं ताकि इस तरह से हम सीधे अजाक्स से एपीआई कॉल कर सकें।
मेरे ज्ञान के अनुसार # 5 सबसे अच्छा समाधान है या एपीआई केवल 3 पार्टी एक्सेस के लिए है। अगर हमारे पास DB, EF, डेटा लेयर और बिज़नेस लेयर एक ही सॉल्यूशन में हैं, तो हमें HTTP कॉल्स करने और सीधे बिज़नेस ऑब्जेक्ट को एक्सेस करने के लिए API का उपयोग नहीं करना चाहिए। (मुझे सही करें अगर मैं गलत हूं) मोबाइल एप्लिकेशन या डेस्कटॉप या किसी एक को एप्लिकेशन एक्सेस करने की आवश्यकता होने पर एपीआई की आवश्यकता होती है ताकि हमारे पास समान रिपॉजिटरी और डेटा लेयर हो सके।
मेरे परिदृश्य में मुझे एपीआई बनाना है क्योंकि हमारे पास मोबाइल एप्लिकेशन भी है, और प्रोजेक्ट एपीआई पक्ष में हमने व्यावसायिक परत (अलग परियोजना) और व्यावसायिक परत को डेटा एक्सेस लेयर (अलग परियोजना) के लिए संवाद किया है। तो मेरा प्रश्न यह है कि अगर हम अपने एपीआई और वेब को अलग-अलग सर्वरों में होस्ट करते हैं तो एपीआई को कॉल करना जो एक HTTP अनुरोध है, व्यवसाय परत से विधि का उपयोग करने के बजाय अधिक समय ले सकता है क्योंकि हम परियोजना बनाते हैं और हम व्यापार परत की .dll करते हैं। API कंट्रोलर में हम अपने व्यवसाय के पुट को json फॉर्मेट में बदल देते हैं।
मैंने इंटरनेट पर खोज की है, लेकिन ठोस जवाब नहीं मिला। मैंने एक ब्लॉग http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx पर एक ही बिंदु पर चर्चा करते हुए पाया है उस ब्लॉग में मेरा प्रश्न यह है कि हमें परिदृश्य # 3 पर विचार करने की आवश्यकता क्यों है?
अद्यतन: हमारे पास अलग-अलग एपीआई परियोजना और एमवीसी परियोजना हो सकती है और हम जावास्क्रिप्ट का उपयोग करके वेब से एपीआई कॉल कर सकते हैं या एमवीवीएम पैटर्न का उपयोग कर सकते हैं।