2011-10-08 15 views
65

मैं इन बिल्डिंग ब्लॉक में एक विशेषज्ञ नहीं हूँ, लेकिन पहली नजर में मुझे लगता है:क्या एएसपीएनईटी एमवीसी के साथ backbone.js को एकीकृत करने के लिए यह समझ में आता है?

  • ASPNET MVC विचारों पैदा करते हैं और सर्वर साइड पर किसी ऐप के लिए मॉडल का प्रबंधन करना चाहता है। यह ब्राउज़र को कुछ हद तक गूंगा प्रस्तुति इंजन के रूप में देखता है, जो सर्वर द्वारा इसके लिए उपलब्ध विचारों का उपभोक्ता है।

  • backbone.js विचारों को उत्पन्न करना और ब्राउज़र में मॉडल प्रबंधित करना चाहते हैं। यह सर्वर-साइड को काफी गूंगा रीस्ट-आधारित दृढ़ता इंजन के रूप में देखता है।

यह एक सरल दृश्य जैसा लगता है। मुझे यकीन है कि यह पूरी कहानी नहीं है।

इन दो चीजों को एकीकृत करने के वास्तविक अवसर क्या हैं? क्या यह समझ में आता है? या समझने के लिए उनके बीच बहुत अधिक ओवरलैप है?

मुझे इसका कुछ विश्लेषण या चर्चा देखना पसंद है, अगर कोई मुझे संदर्भित कर सकता है।

+3

+1, प्रतिक्रियाओं की प्रतीक्षा कर रहा है। क्या आपने [knockout.js] (http://knockoutjs.com/) और [spine.js] (http://spinejs.com/) पर भी विचार किया है? रीढ़ की हड्डी की तुलना में रीढ़ कम ज्ञात प्रतीत होता है, लेकिन मैंने इसके बारे में अच्छी चीजें पढ़ी हैं। –

+0

हालांकि आपके प्रश्न से सीधे संबंधित नहीं है, बैकबोन और नॉकआउट के बारे में अच्छी चर्चा है: http://stackoverflow.com/questions/5112899/knockout-js-vs-backbone-js-vs उस नोट पर, मैं इस पर प्रतिक्रियाओं की भी प्रतीक्षा कर रहा हूं। – Jesse

उत्तर

58

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

तो मीठी जगह, मेरी राय में, कुछ ऐसा है जो दोनों अच्छी तरह से करता है। मेरे अनुभव में मुझे एएसपी.नेट एमवीसी दोनों में उत्कृष्टता मिली है।

क्यों ASP.NET MVC भयानक है

  • लेआउट (MasterPages)
  • उस्तरा (प्रकार सुरक्षित IntelliSense अच्छाई के साथ विचार)
  • ActionFilters (लॉगिंग की तरह सम्मेलनों लागू करने के लिए भयानक जगह है, प्रमाणन , आदि)
  • जेएसओएन क्रमशः मुक्त करने के लिए - return Json(model)
  • मॉडल-बाध्यकारी और सत्यापन
  • आईओसी और MVC सबसे अच्छे दोस्त (जीत)
  • प्रमाणीकरण + प्राधिकरण
  • अन्य सामान है कि मैं सोच भी नहीं सकते बहुत से कर रहे हैं।

व्यू पीढ़ी के लिए क्लाइंट-साइड फ्रेमवर्क का उपयोग करके वास्तव में आप जो भी खो रहे हैं वह रेजर है। आप कुछ डिग्री तक लेआउट का लाभ उठा सकते हैं।

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

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

  • क्या ActionResult ViewResult है?
    • स्वीकार्य प्रकार क्या है?
      • एचटीएमएल - एक ही नाम के साथ "_" एक ही मॉडल
      • JSON दिया पहले से जुड़ा हुआ की एक PartialViewResult लौटें - एक JsonResult लौटें एक ही मॉडल
  • ActionResult एक RedirectToRoute परिणाम है दी ?
    • वापसी EmptyResult (या वैकल्पिक रूप से आप एक JsonResult में URL वापस कर सकता है)
इस दृष्टिकोण आप नियंत्रकों में कोड की एक पंक्ति को बदले बिना AJAX कार्यक्षमता जोड़ सकते हैं के साथ

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

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

+4

हालांकि यह एक आकर्षक उत्तर है, फिर भी मैं ठोस उदाहरणों के कुछ लिंक के साथ विशेष रूप से बैकबोन से संबंधित एक उत्तर देखना चाहता हूं। –

2

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

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

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