2009-02-25 7 views
5

मैं वर्तमान में मूल टाइमशीट एप्लिकेशन को लागू करने के लिए एएसपी.एनटी एमवीसी आरसी 1 का उपयोग कर रहा हूं। मैं डीआरवाई सिद्धांतों का पालन करना चाहता हूं लेकिन इसे एक विशेष मामले में मुश्किल लगाना चाहता हूं:तर्क को सी # और जावास्क्रिप्ट कार्यान्वयन की आवश्यकता होने पर DRY कैसे रहें?

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

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

तो, मैं यह कैसे कर सकता हूं? मेरे पास अब तक का एकमात्र उत्तर जावास्क्रिप्ट कोड को स्क्रैप करना है जो यूआई पर कुल की गणना करता है और इसके बजाय AJAX पोस्टबैक उस दृश्य के लिए नया "कुल" लौटाता है।

क्या अन्य दृष्टिकोण हैं?

उत्तर

1

सी # और जावास्क्रिप्ट दोनों में समय को कुल करने के लिए तर्क होने से सख्ती से डीआरवाई नहीं है, यह सच है। कोई इस तथ्य पर बाल विभाजित कर सकता है कि वे दो अलग-अलग भाषाओं में दो अलग-अलग वातावरण संचालित कर रहे हैं, लेकिन दिन के अंत में यदि आप एक बदलते हैं तो आपको दोनों को बदलना होगा।

मुझे लगता है कि यह फ़ॉर्म और फ़ंक्शन के बीच एक ट्रेडऑफ है। जावास्क्रिप्ट होना कितना महत्वपूर्ण है? अगर AJAX कॉल बहुत धीमी है (वास्तविक संभावना) तो यह महसूस करने का समय हो सकता है कि डीआरवाई सिद्धांत एक मार्गदर्शक सिद्धांत है, कानून नहीं।

+2

यह * एक मार्गदर्शक सिद्धांत है, कानून नहीं। यदि आपको दोनों जगहों पर तर्क की आवश्यकता है, और यह समान कार्यान्वयन को साझा करने के लिए तकनीकी रूप से व्यवहार्य नहीं है, तो आपको इसे दो बार लागू करना होगा। कठिन भाग्य, वह जीवन है। ;) – jalf

+0

@jalf: बिल्कुल। ए (कोई भी) दिशानिर्देश अस्तित्व का एक अटूट कानून नहीं है। – Richard

+0

ठीक है, ध्यान दिया और बदल गया;) –

0

यदि आप कोड, सर्वर और क्लाइंट दोनों पर निष्पादित करना चाहते हैं, तो आप जावास्क्रिप्ट कंपाइलर को अभिव्यक्ति वृक्ष का उपयोग/लिख सकते हैं।

सर्वरसाइड पर, आप अभिव्यक्ति का मूल्यांकन करते हैं और उसी अभिव्यक्ति को क्लाइंट में जावास्क्रिप्ट में अनुवादित करते हैं।

+0

क्या आप जावास्क्रिप्ट क्लाइंट पक्ष बनाने के लिए सी # -> जावास्क्रिप्ट अनुवादक का उपयोग करने का सुझाव दे रहे हैं? या शायद आप सर्वर पक्ष के साथ-साथ क्लाइंट साइड पर जावास्क्रिप्ट का उपयोग करना चाहते हैं? –

+0

मुझे नहीं लगता कि उसका मतलब "अभिव्यक्ति" है जिसे सी # और जावास्क्रिप्ट –

+0

दोनों द्वारा निष्पादित किया जा सकता है हां और नहीं। अभिव्यक्ति पेड़ सी #/वीबी.नेट अभिव्यक्तियों के उप-समूह के इन-मेमोरी प्रस्तुतिकरण हैं। उन्हें आसानी से सर्वर पर मूल्यांकन किया जा सकता है। हालांकि आपको ऐसे घटक को लिखना होगा जो ऐसे अभिव्यक्ति पेड़ों को जावास्क्रिप्ट में अनुवादित करे। –

3

आप Nikhil Kothari's Script# project को आजमा सकते हैं। यह एक क्रॉस-कंपाइलर है जो सी # से ब्राउज़र स्वतंत्र जावास्क्रिप्ट में संकलित और अनुवाद करता है, जो आपको तर्क साझा करने देता है। इसका उपयोग उस उद्देश्य के लिए माइक्रोसॉफ्ट के अंदर कई समूहों द्वारा किया जाता है।

अधिक, वेबसाइट से:

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

स्क्रिप्ट # माइक्रोसॉफ्ट इमारत के भीतर डेवलपर्स द्वारा बड़े पैमाने पर इस्तेमाल किया जाता है विंडोज लाइव, कार्यालय में अजाक्स अनुभवों बस कुछ नाम हैं, के साथ ही एक बाहरी डेवलपर्स और फेसबुक सहित कंपनियों द्वारा। यदि आप अजाक्स-आधारित आरआईए अनुप्रयोगों का निर्माण कर रहे हैं, तो आप इसे पर आज स्क्रिप्ट # आजमाएं और देखें कि क्या यह आपके स्वयं के अजाक्स विकास को बेहतर बनाने में मदद कर सकता है!

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