ruby on rails 3 - ActiveResource और ActiveModel के बीच अंतर क्या है?




ruby-on-rails-3 activerecord (2)

मैं इसे एक कोशिश दे दूँगा, और उम्मीद है कि अन्य लोग आएंगे और उसे सही करेंगे (या जोड़), इसलिए एक बेहतर तस्वीर मौजूद होगी ...

मैं दोनों के बीच निम्नलिखित मुख्य अंतर देखता हूं:

  • ActiceResource एक संसाधन के लिए एक इंटरफ़ेस प्रदान करता है (सामान्य रूप से) (रेल) रीस्टाइन एपीआई द्वारा दूरस्थ रूप से पहुंच योग्य है। इसे स्थानीय रूप से रखा नहीं रखा जाता है, लेकिन केवल एपीआई द्वारा पढ़ा, अद्यतित, बनाया और हटा दिया गया है। जैसा रयान बैट्स बताता है: "एक्टिव रिसोर्स आपको कई रेल एप्लिकेशन के बीच आसानी से संवाद करने की अनुमति देता है।"
  • ActiveRecord (या आजकल एक्टिवमोडेल) स्थानीय रूप से एक डाटाबेस में अपना रिकॉर्ड (या मॉडल) को स्टोर करता है, और अन्य लोगों को वेब इंटरफेस द्वारा इसे दूरस्थ रूप से एक्सेस करने देता है
    • पृष्ठ दिखाए जा रहे हैं
    • JSON नक्शे लौटाना या
    • XML संरचनाओं को लौटाना

फायदे और नुकसान

ActiveResource का उपयोग करने के लिए, आपको यह देखना होगा कि आपका स्थानीय रेल ऐप दूरस्थ अनुप्रयोग से बात कर सकता है, ताकि रीस्टाल्ट एपीआई संगत हो।

यदि दोनों विकल्प चुनने के लिए स्वतंत्र हैं, तो यहां कुछ तर्क दिए गए हैं:

  • ActiveMesel की तुलना में सामान्य रूप से अधिकतर महंगा होता है (कम से कम एक रिमोट सिस्टम लागत को कम कर देता है)
  • एक्टिवमोडेल को अपने स्वयं के संसाधनों (कम से कम डेटाबेस के सेटअप) खर्च होंगे, लेकिन यह आमतौर पर बोझ नहीं है

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

इस प्रश्न का प्रस्तावना के रूप में: मैं रेल विकास (और सामान्य में वेब विकास) के लिए नया हूँ, और मेरी कुछ चिंताएं निराधार हो सकती हैं, इसलिए कोई भी प्रतिक्रिया बहुत उपयोगी होगी

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

यह मुझे स्पष्ट नहीं है कि प्रत्येक के फायदे / नुकसान, और फ्रैंक होने के लिए, मैं अभी तक एक्टिवमोडल और एक्टिव रिसोर्स के बीच के अंतर को पूरी तरह से नहीं समझता हूं। क्या कोई मुझे इन तीन विकल्पों के बारे में अंतर्दृष्टि प्रदान करता है और क्या किसी रोर के संदर्भ में सबसे अधिक 'समझ' करता है? धन्यवाद!

सबसे अच्छा जवाब सिर्फ ऐसा नहीं कहता "सक्रिय मॉोडेल का उपयोग करें", या "सक्रिय संसाधनों का उपयोग करें" ऐसा करने के निर्देशों के साथ, हालांकि यह उपयोगी भी होगा मैं सचमुच एक जवाब की सराहना करता हूं कि मुझे उस चीज़ का उपयोग क्यों करना चाहिए, आदि।

कुछ बाधाओं के साथ मैं काम कर रहा हूं कि जब मैं एपीआई कॉल करता हूं, तब मुझे कुंजी का उपयोग करने की आवश्यकता होती है, और एपीआई कॉल की एक अच्छी संख्या में अतिरिक्त पैरामीटर शामिल होंगे I


इसलिए यह चुनने की कुंजी है कि यहां किस पैकेज का उपयोग किया जाए या नहीं:

  1. आप वेब एपीआई से डेटा पुनर्प्राप्त कर रहे हैं और अपने सर्वर पर स्टोर / हेरफेर करना चाहते हैं, या
  2. आप वेब एपीआई के माध्यम से डेटा को विनियमित कर रहे हैं और अपने सर्वर पर कुछ भी भंडारण करने का इरादा नहीं करते हैं

यदि # 1 , आपको एक्टिवक्रॉर्ड की आवश्यकता होगी, क्योंकि यह आपके पोस्टग्रेएस / मायएसक्यूएल / आदि डाटाबेस के डेटा के हेरफेर और भंडारण के लिए रेल का पैकेज है।

यदि # 2 , तो आप केवल ActiveResource का उपयोग कर सकते हैं, जो आपको वेब एपीआई से डेटा को पुनर्प्राप्त करने देगा, रनटाइम पर इसके साथ काम करें, और फिर वेब एपीआई पर वापस पोस्ट करके परिवर्तन करें।

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

आपको एक उदाहरण देने के लिए, जिस सेवा पर मैं काम कर रहा था, मैं एक सार्वजनिक स्रोत (ज़िपोड के लिए निर्देशांक की तलाश में) से जियोलोकेशन डेटा को पकड़ा था, तब मैंने उस डेटा को एक्टिविक रिकार्ड का प्रयोग करके स्थानीय स्थान ऑब्जेक्ट्स में सहेज लिया था ताकि मैं उन्हें देरी के बिना बार-बार देख सकूं वेब एपीआई कॉल की (यदि आप स्मार्ट हैं, तो आप समय-समय पर वेब एपीआई से इस डेटा को रीफ्रेश करेंगे)

निर्धारित करना कि क्या ActiveResource आपके लिए काम करेगा

क्या सेवा अनुरोध दस्तावेज़ प्रोटोकॉल के अनुरूप हैं? देखो विधि में ढूँढें विधि में ब्लॉक की प्रतिक्रिया , उदाहरण के लिए। यदि हां, तो आपको अतिरिक्त काम के बिना जाना अच्छा होगा।

नोट: प्रोजेक्ट्स को चैंजलॉग के साथ सिंक्रनाइज़ेशन से कुछ कम है- रेल 3.1 के रूप में:

डिफ़ॉल्ट प्रारूप को सभी अनुरोधों के लिए JSON में बदल दिया गया है। यदि आप एक्सएमएल का इस्तेमाल करना जारी रखना चाहते हैं तो आपको कक्षा में self.format =: xml सेट करना होगा। जैसे।

साथ ही, ActiveResource को रेल 4.0 की शाखा से पूरी तरह से हटा दिया गया है, इसलिए यदि आप एक नए रेल आवेदन को शुरू करने और नवीनतम और महानतम चाहते हैं, तो यह बिल्कुल एक विकल्प नहीं है - लेकिन सभी आशाएं खोई नहीं हैं बहुत सारे जवाहें हैं जो फैशने की तरह सरल इंटरफेस के साथ बातचीत कर रही हैं, ( फैलाने की पूर्ण प्रकटीकरण: मैंने अपने खुद का उपयोग नहीं किया है, इसलिए वास्तव में इसकी प्रभावकारिता पर टिप्पणी कर सकते हैं, लेकिन मैं इसे यहां स्थित करता हूं, और कई अन्य विकल्प हैं

नोट (उपरोक्त समान लिंक से): HTTP पर संसाधनों का अनुरोध करने और सबमिट करने के लिए सक्रिय संसाधन एक मानक XML प्रारूप पर बनाया गया है। यह एक्शन कंट्रोलर में निर्मित रसीला रूटिंग का दर्पण करता है, लेकिन यह किसी अन्य बाकी सेवा के साथ भी काम करेगा जो कि प्रोटोकॉल को ठीक से लागू करता है REST HTTP का उपयोग करता है, लेकिन "विशिष्ट" वेब अनुप्रयोगों के विपरीत, यह HTTP विनिर्देश में उपलब्ध सभी क्रियाओं का उपयोग करता है।

यदि ऊपर दिए गए उत्तर का उत्तर नहीं है (यह अनुरूप नहीं है) आपको एक आवरण वर्ग लिखने की ज़रूरत है, इस बारे में एक उदाहरण के लिए फेसबुकर देखें कि यह सक्रिय रूप से बनाए रखा मणि में कैसे किया जाता है।

संदर्भ: एक्टिव रिसोर्स पर महान ट्यूटोरियल

ActiveRecord के साथ प्रारंभ करना

ध्यान रखें कि यदि आप केवल वेब डेवलपमेंट शुरू कर रहे हैं, तो आपको डेटाबेस और मॉडल मूल बातें भी समझने की आवश्यकता होगी - आपने अपना काम अपने लिए निकाल दिया है। :)





activemodel