2015-12-08 6 views
9

मेरे पास एएसपी.नेट एमवीसी प्रोजेक्ट है जिसे दो अलग-अलग सर्वरों पर होस्ट करने की आवश्यकता है। मुझे पता है कि यह अजीब लगता है लेकिन यह मेरे ग्राहक से आवश्यकता है।दो भौतिक सर्वरों में होस्ट एएसपी.नेट एमवीसी प्रोजेक्ट

विवरण में, मैं होगा 2 लोड संतुलित सर्वर

  • वेब सर्वर - जनता के लिए बेनकाब
  • अनुप्रयोग सर्वर (डोमेन इस सर्वर के सार्वजनिक आईपी को इंगित करेगा) - आंतरिक के साथ संवाद आधारभूत संरचनाओं (सक्रिय निर्देशिका, डाटाबेस, सुरक्षा, आदि)

Simple diagram

,210

मैं एक और परत (ASP.NET वेब एपीआई) बनाने के बारे में सोच रहा हूँ, ताकि वेबसर्वर केवल HTML पृष्ठों की सेवा, अनुप्रयोग सर्वर इच्छा व्यापार लॉजिक्स होता है और सभी ग्राहकों (वेब, मोबाइल) के लिए अंतिम बिंदु का पर्दाफाश कहते हैं। वेब सर्वर रीस्टफुल सेवाओं के माध्यम से ऐप सर्वर के साथ संवाद करेगा।

क्या कोई बेहतर तरीका है? किसी भी समाधान की सराहना की जाएगी।

अग्रिम धन्यवाद,

उत्तर

5

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

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

संपादित

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

एक बार ऐसा करने के बाद, आपके सभी एमवीसी नियंत्रक दूसरे सर्वर पर चल रहे वेब एपीआई पर कॉल कर सकते हैं। एमवीसी नियंत्रकों को अपने डेटा पर किसी भी प्रकार की प्रसंस्करण नहीं करनी चाहिए ताकि इसे अच्छे लगने के लिए बुनियादी बदलावों से परे (अपने नियंत्रकों को साफ रखना अच्छा अभ्यास है)।

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

+0

मैं इस वास्तुकला का लाभ समझता हूं, लेकिन इस स्थिति में, एएसपी.नेट एमवीसी काम नहीं करेगा (देखें और नियंत्रक कसकर युग्मित हैं)। क्या एमवीसी परियोजना को सब कुछ संशोधित किए बिना अलग करने के लिए वैसे भी है? –

+1

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

+0

जब मैं एमवीसी नियंत्रकों से वेबपी नियंत्रकों को कॉल करता हूं, तो क्या मुझे आंतरिक कॉल या वेब सेवा कॉल करना चाहिए? मुझे फॉर्म प्रमाणीकरण के साथ भी परेशानी हो रही है क्योंकि वर्तमान प्रमाणीकरण तर्क एमवीसी परत में लिखा जा रहा है, इसे वेबएपीआई परत में स्थानांतरित करने के लिए कई प्रयास किए जाएंगे। इसके अलावा, मुझे इसे अधिक मजबूत बनाने के लिए पुनः प्रयास तर्क को कार्यान्वित करने के साथ-साथ API को सुरक्षित करने की आवश्यकता होगी (भरोसेमंद ऐप को कनेक्ट करने की अनुमति दें)। क्या कोई विचार है? धन्यवाद –

4

हम अपनी परियोजना में एक समान संरचना का उपयोग कर रहे हैं। एक सेवा परत आरईएसटी एपीआई का पर्दाफाश कर रही है जिसे कई वेबसाइटों और मोबाइल ऐप्स द्वारा उपभोग किया जा रहा है। इस वास्तुकला की सुंदरता यह है कि सभी व्यावसायिक जटिलताओं को एपीआई के पीछे छिपाया जाता है जबकि फ्रंट एंड ज्यादातर प्रस्तुति आवश्यकताओं से संबंधित है।

लेकिन आप दो चीजों के बारे में सावधान रहने की जरूरत है, जबकि इस संरचना के विकास:

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

2. Serializing और deserializing पर चैलेंज: के बाद से बाकी आंकड़ा अंतरण का एक मानक प्रारूप के रूप में JSON का उपयोग करता है और JSON दृढ़ता से टाइप किया है, चुनौती दोनों सिरों पर उपयुक्त मॉडल के लिए डेटा को मैप करने के लिए है। इसे हल करने के लिए हमने मॉडल के लिए एक आम परियोजना बनाई और दोनों (एपीआई और वेब) परियोजनाओं में जोड़ा। जब एपीआई के अंत में हमने एक मॉडल को क्रमबद्ध किया, तो हमने इसे वेब प्रोजेक्ट पर उसी मॉडल में बेकार कर दिया। वे हिचकी के बिना पूरी तरह से मैप किया।

आशा है कि ऊपर दी गई युक्तियां आपकी मदद करेंगी।

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