2010-05-27 20 views
25

हो सकता है कि एक अजीब और हरे रंग सवाल है, लेकिनजावास्क्रिप्ट वी.एस. सी #

वहाँ है कुछ भी सी # क्या जावास्क्रिप्ट कर सकते हैं ... और JQuery पर विचार नहीं कर सकते?

इस तथ्य को छोड़कर कि कोई ग्राहक है, और अन्य सर्वरसाइड? या क्या मैं अब एक बहुत बेवकूफ सवाल पूछ रहा हूं?

संपादित करें: अधिक विशिष्ट: मैं वेब प्रोग्रामिंग मतलब है, और वास्तव में हो सकता है एक अधिक उपयोगी सवाल यह है:

> क्या मैं ग्राहक के पक्ष है कि मैं सर्वर साइड ऐसा नहीं कर सकते कर सकते हैं, और विपरीतता से?

> यदि आप "सर्वर/क्लाइंटसाइड" को दायरे से बाहर रखते हैं तो दोनों भाषाओं का उपयोग करने के और कारण हैं?

> कुछ डेवलपर जावास्क्रिप्ट से बचें। क्यूं कर?

+3

आप सिल्वरलाइट के माध्यम से क्लाइंट साइड सी # लिख सकते हैं (यदि आप लोगों को प्लगइन इंस्टॉल करते हैं, तो यूजर) और जेएस सर्वर की तरफ चलाने के लिए काफी खुश है (http://en.wikipedia.org/wiki/Server- side_JavaScript)। "मैं क्लाइंट पक्ष क्या कर सकता हूं कि मैं सर्वर की तरफ नहीं कर सकता, और इसके विपरीत?" सी # बनाम के लिए एक पूरी तरह से अलग सवाल है जावास्क्रिप्ट। आपको स्पष्ट करने के लिए शायद प्रश्न संपादित करना चाहिए। – Quentin

+0

यदि आप अधिक संदर्भ प्रदान करते हैं तो इससे मदद मिलेगी; सवाल का जवाब जानने में आपकी मदद कैसे होगी? आप किस परियोजना पर विचार कर रहे हैं? – Pointy

उत्तर

22

मैं क्लाइंट पक्ष क्या कर सकता हूं कि मैं सर्वर पक्ष नहीं कर सकता, और इसके विपरीत?

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

सर्वर-साइड: चूंकि आप इस मशीन को नियंत्रित करते हैं, आप जो भी चाहें कर सकते हैं - फाइलें पढ़ सकते हैं, फाइलें लिख सकते हैं, सीधे डेटाबेस से बात कर सकते हैं। ध्यान रखें कि जावास्क्रिप्ट सर्वर-साइड चलाने से आपको कुछ भी रोक नहीं है। node.js देखें।

वहाँ अधिक कारणों यदि आप क्षेत्र से बाहर "सर्वर/clientside" रखने के दोनों भाषाओं का उपयोग करने के हैं?

मैं आपके विश्लेषण से निष्पादन पर्यावरण को नहीं छोड़ूंगा। यदि आपको पूरी तरह से क्लाइंट-साइड इंटरैक्शन की आवश्यकता है और यह गारंटी नहीं दे सकता कि सी # क्लाइंट पर निष्पादित होगा, सी # व्यावहारिक नहीं है। इसी तरह, यदि आपकी कंपनी विंडोज सर्वर चलाती है और जावास्क्रिप्ट रनटाइम्स/कंपाइलर्स स्थापित नहीं करना चाहती है, तो आप सर्वर पर जावास्क्रिप्ट का उपयोग करने में सक्षम नहीं होंगे।

कुछ डेवलपर जावास्क्रिप्ट से बचते हैं। क्यूं कर?

ब्राउज़र में जावास्क्रिप्ट के साथ समस्याएं डीबग करने के लिए बिल्कुल भयानक हैं। आप एक मशीन पर चल रहे हैं जो आपके नियंत्रण से बाहर है - उपयोगकर्ता एक अस्पष्ट या प्राचीन ब्राउज़र चला रहा है, हो सकता है कि वे एंटी-वायरस सॉफ़्टवेयर का उपयोग कर रहे हों जो आपके जावास्क्रिप्ट के साथ मिल जाए, उनके ब्राउज़र प्लगइन्स आपके जावास्क्रिप्ट के साथ मिल जाएंगे। यह मुश्किल है।

हालांकि, किसी और की मशीन पर व्यवसाय करने की लागत है। यदि यह आसान था, तो एक सुंदर ग्राहक-पक्ष का अनुभव कम होगा। कठोर समस्याओं को हल करना हर किसी के लिए नहीं है, लेकिन यह अच्छी तरह से किया जाने पर निश्चित रूप से सराहना की जाती है।

1

तकनीकी रूप से, नहीं।

यदि आप चाहते थे तो आप जावास्क्रिप्ट सर्वर-साइड का उपयोग भी कर सकते हैं (या क्लाइंट-साइड सी # विभिन्न तंत्र के माध्यम से)।

वे वास्तव में एक ही काम करने के दो तरीके हैं।

+0

जब लोग सी # के बारे में बात कर रहे हैं तो वे आम तौर पर वास्तव में सी # + बीसीएल का मतलब रखते हैं, लेकिन ऑफ-द-द-बॉक्स जावास्क्रिप्ट की लाइब्रेरी खराब है। – Andrey

+1

@ एंड्री जावास्क्रिप्ट बॉक्स कार्यक्षमता से बाहर थोड़ा कमजोर हो सकता है, लेकिन यह आपके कोड को विस्तारित और पुन: उपयोग करना इतना आसान है कि इससे कोई फर्क नहीं पड़ता। किसी भी तरह से, आप अभी भी काम पूरा कर सकते हैं। –

+0

मुझे लगता है कि वहां सबसे लोकप्रिय सर्वर साइड समाधान node.js. है। यह Azure मंच का हिस्सा नहीं है। http://windowsazure.com/en-us/develop/nodejs –

1

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

+1

"आप क्लाइंट पर सी # निष्पादित नहीं कर सकते हैं।" तकनीकी रूप से आप कर सकते हैं, लेकिन आप इसके लिए सिल्वरलाइट प्लगइन। – Powerlord

+0

@ आर। Bemrosei - मैं जेनेरिक ब्राउज़र के बारे में बात की। – Andrey

4

दोनों भाषाएं एपीआई पर भारी निर्भर करती हैं जो विभिन्न डोमेन के लिए डिज़ाइन की गई थीं।

जावास्क्रिप्ट मूल रूप से ब्राउज़र के अंदर चलाने का इरादा था, इसलिए यह डीओएम एपीआई के साथ-साथ अन्य इन-ब्राउजर ऑपरेशंस जैसे AJAX का भारी उपयोग करता है। सी # शायद इस तरह के एपीआई के लिए अच्छा समर्थन नहीं है क्योंकि इसे ब्राउज़र के अंदर सीधे निष्पादित करने का इरादा नहीं था - हालांकि सिल्वरलाइट ऐसे ऑपरेशन प्रदान कर सकता है क्योंकि यह एक ब्राउज़र के अंदर "सी # सैंडबॉक्स" है। आप अंदाजा हो ...

12

मैं इसे ले -

दूसरी ओर, सी # एक सामान्य प्रयोजन भाषा है कि सेवाओं के लिए क्लाइंट अनुप्रयोग के लिए मूल रूप से किसी भी आवेदन के निर्माण के लिए डिजाइन किया गया था, सर्वर साइड इंजन से है आपका असली सवाल यह है कि, यदि सी # सबकुछ कर सकता है, तो आपको जावास्क्रिप्ट का उपयोग क्यों करना चाहिए? यहां जवाब प्रदर्शन और वास्तविक दोनों प्रदर्शन है। यहां चाल यह है कि सामान्य रूप से जावास्क्रिप्ट से जुड़े डोम मैनिपुलेशन करने के लिए सी # का उपयोग करने के लिए, ब्राउज़र को सर्वर पर एक अतिरिक्त http अनुरोध वापस पोस्ट करना होगा और सी # कोड को क्या करना है। उन अतिरिक्त अनुरोधों के बारे में बात करते हैं। बहुत से उपयोगकर्ताओं के आसपास फैलते हैं, वे बहुत जल्दी जोड़ते हैं और आपके सर्वर आधारभूत संरचना पर विनाश खेलते हैं। "वास्तविक" प्रदर्शन मुद्दा यह है कि अब आपके उपयोगकर्ताओं के ब्राउज़र में पर सर्वर (ओं) पर बहुत अधिक काम होना है। "कथित" प्रदर्शन समस्या यह है कि, यदि आपके पास सभी अतिरिक्त http अनुरोधों को आसानी से प्रबंधित करने के लिए सर्वर संसाधन हैं, तो भी आपको उपयोगकर्ता को उन http राउंड ट्रिप द्वारा विलंबता के लिए अतिरिक्त समय बिताना पड़ता है।

+1

मैं इसमें जोड़ दूंगा कि आपके ब्राउज़र में सख्ती से "दृश्य" कोड डालने से आपके सर्वर-साइड कोड क्लीनर और पढ़ने में आसान हो जाता है। –

2

मैंने एक सी # प्रोजेक्ट देखा है जहां जावास्क्रिप्ट एम्बेडेड है और सी # कोड के भीतर जावास्क्रिप्ट निष्पादित कर सकता है। CodeProject पर यह देखने के लिए यहां देखें कि यह कैसे प्राप्त किया जाता है।

+0

मुझे लगता है कि आयरन जेएस की जांच करना उचित है। यह .NET DLR पर चलता है, इसलिए यह आयरन पायथन और रूबी के समान है। http://github.com/fholm/IronJS –

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