2012-07-13 11 views
6

मैंने माइक्रोसॉफ्ट को एक आरईएसटी इंटरफ़ेस + क्लाइंट-साइड जावास्क्रिप्ट-आधारित एमवीवीएम विकास के लिए वेब अनुप्रयोगों के लिए आगे बढ़ने के बारे में एक दिलचस्प लेख पढ़ा है।पारंपरिक एएसपी से आगे बढ़ना। नेट एमवीसी से वेबएपी + नॉकआउट

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

तो, किसी को पारंपरिक ASP.NET MVC से WebAPI + KO में जाने के लिए, निम्न प्रश्नों उठता:

  • वहाँ विनीत या लगभग विनीत (यानी कम से कम कोड) मान्यता MVC का उपयोग कर के लिए एक रास्ता है + केओ?
  • कोई व्यक्ति अपने यूआई कोड का परीक्षण करने के बारे में कैसे जाता है?
  • क्या ब्राउज़र संगतता केओ के साथ पीड़ित है?
  • क्या किसी और चीज को किसी मॉडल से दूसरे स्थान पर जाने पर विचार करना है?
+0

अब * मैं थोड़ा उलझन में हूं: .NET MVC और WebAPI के पास अलग-अलग उद्देश्य नहीं हैं? मेरा मतलब है, एमवीसी वेबपैप्स और साइटों के लिए है, जबकि वेबएपीआई, एपीआई (और सेवाएं आदि) के लिए है। तो, कोई एमवीसी से एपीआई में क्यों माइग्रेट करेगा? मैं क्या खो रहा हूँ? –

+0

यह जरूरी नहीं है कि यह सच है। यह चीजों को करने का एक अलग तरीका है। आपके पास एक वेब एपीआई हो सकती है जिसे किसी भी ग्राहक द्वारा उपभोग किया जाता है - जिसमें आपकी वेबसाइट भी शामिल है, लेकिन इतनी ही सीमित नहीं है! – georgiosd

+0

लेकिन, उस स्थिति में, आपको अभी भी वेबसाइट के सामने की आवश्यकता होगी, है ना? यही है, वेबएपीआई परियोजना * सेवा परत * के रूप में कार्य करेगी, मैं देखता हूं। –

उत्तर

5

आप Microsoft इस "एक पृष्ठ वेब अनुप्रयोग" बात पुश करने के लिए आंशिक रूप से, क्योंकि यह एक बेहतर उपयोगकर्ता अनुभव प्रदान कर सकते हैं लेकिन मोटे तौर पर, क्योंकि यह यह बहुत बहुत आसान Windows 8 देशी आवेदन किया जा रहा है के लिए अपने वेब एप्लिकेशन विस्थापित करने के लिए बनाता है शुरू करने को देखने के ।

पुन: प्रमाणीकरण के लिए अविभाज्य जावास्क्रिप्ट ... मैं कहूंगा कि यदि आप नॉकआउट का उपयोग कर रहे हैं, तो आप यूआई हैं और आपकी स्क्रिप्ट इतनी कड़ी मेहनत की जा रही हैं कि बुनियादी सामग्री के लिए भी अविश्वसनीयता वास्तव में एक वैध लक्ष्य नहीं है। आप नॉकआउट (उदाहरण के लिए https://github.com/ericmbarnard/Knockout-Validation#readme देखें) में सत्यापन कर सकते हैं, लेकिन यह ASP.NET MVC

पुन रूप में एक ही परिभाषा से विनीत नहीं है: इकाई परीक्षण ... https://stackoverflow.com/questions/6331789/knockoutjs-unit-testing-with-qunit

पुन पर एक नज़र डालें: ब्राउज़र compat। .. मुझे किसी भी आधुनिक ब्राउज़र के साथ किसी भी संगतता के मुद्दों से अवगत नहीं है जब तक कि आपके पास पागल उपयोगकर्ता हैं जिन्होंने जावास्क्रिप्ट को

5

पाया है, मैंने this को "अविभाज्य" होने की कोशिश करने के पेशेवरों और विपक्ष की वास्तव में अच्छी चर्चा करने के लिए पाया एक नॉकआउट साइट।

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

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

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

यह आपके प्रश्न के अविभाज्य पहलू पर मेरा 2 सेंट है, और यदि आपका अनुभव एमवीवीएम जावास्क्रिप्ट पर जा रहा है, तो मेरा कुछ भी पिछले कुछ महीनों में रहा है, आप वापस नहीं देखेंगे।

+0

महान जवाब, धन्यवाद! क्या आप उन चीजों पर विस्तार कर सकते हैं जिन्हें आपने केओ सर्वोत्तम प्रथाओं के बारे में सीखा है? – georgiosd

+0

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

+0

@ टॉमहॉल: अपने अनुभव के बारे में पढ़ने के लिए अच्छा है! यह बहुत अच्छा और बहुत उपयोगी होगा यदि आप तकनीकों के सेट (knockout.js + ASP.NET वेब एपीआई) के साथ विशिष्ट इकाई सीआरयूडी सुविधाओं को निष्पादित करने के उदाहरणों के साथ किसी भी संसाधन को पोस्ट कर सकते हैं! बहुत बहुत धन्यवाद – superjos

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