2012-05-15 6 views
6

के साथ एसिंक प्रोग्रामिंग करने का सबसे अच्छा तरीका एएसपीनेट के साथ एसिंक/पुश-स्टाइल प्रोग्रामिंग करने के लिए इस समय कई विकल्प उपलब्ध हैं। लेकिन मैं थोड़ा उलझन में हूं कि सबसे अच्छा क्या है और सबसे डेवलपर अनुकूल दृष्टिकोण प्रदान करता है। हालात मैं पहले से ही सामना करना पड़ा है,Asp.Net

NodeJS

SignalR

Using PushStreamContent (Web API) and something like KnockoutJS

हालांकि SignalR is deemed to make it to asp.net 4.5, मैं NodeJS within MS पर ब्याज (विशेष रूप से Azure के आसपास) के एक बहुत देखते हैं। क्या कोई अंतर (कम से कम नोडजे और सिग्नलआर) पर कुछ प्रकाश डाल सकता है?

उत्तर

15

सिग्नलआर ".NET के लिए क्लाइंट और सर्वर साइड लाइब्रेरी है जो लगातार कनेक्शन पर मैसेजिंग और एक अमूर्तता प्रदान करता है।" यह जादुई रूप से आपके कोड async नहीं बनाता है - यह सिर्फ आपके सर्वर को ग्राहकों को कॉल करने की अनुमति देता है (आपके उपयोगकर्ताओं के ब्राउज़र में चल रहे जावास्क्रिप्ट सहित) असीमित रूप से।

हालांकि, सी # 5.0 .NET 4.5 & विजुअल स्टूडियो 2012 (के साथ-साथ Mono 2.11+ में) में जो जहाजों आप लिखते हैं/नई async & await कीवर्ड के उपयोग के माध्यम async होने के लिए कोड को संशोधित करने की अनुमति देता है।

यदि आप पहले से ही .NET डेवलपर हैं, तो सी # async & प्रतीक्षा करें और साइनलर को चुनने, सीखने और चलाने के लिए बहुत आसान है, जिससे आप अत्यधिक स्केलेबल, बहुत उच्च प्रदर्शन प्रणाली बना सकते हैं।

Node.js आपको जावास्क्रिप्ट में अपना कोड लिखने और इसे ऐप सर्वर में होस्ट करने में सक्षम बनाता है।

नोड पल में ध्यान का एक बहुत हो रही है, लेकिन यदि आप एक .NET विकास पृष्ठभूमि से आ रहे हैं, यह चीजें हैं जो हैरान कर सकते हैं में से कुछ ध्यान देने योग्य है/आपको परेशान जब सर्वर पर जावास्क्रिप्ट में जाने:

  1. जावास्क्रिप्ट एक बहुत ही शक्तिशाली और अत्यंत लचीली गतिशील रूप से टाइप की गई भाषा है। हालांकि, यह लचीलापन बहुत खतरनाक और समस्याग्रस्त हो सकता है जब तक कि आपने अपनी कई त्रुटियों और उन्हें कैसे दूर किया है। यदि आपको जावास्क्रिप्ट कोड निष्पादित करना होगा, तो TypeScript और CoffeeScript जैसी भाषाओं में अपना स्रोत लिखने पर विचार करें जो जावास्क्रिप्ट को संकलित करता है लेकिन आपको कई जावास्क्रिप्ट के खतरों से प्रेरित करता है।

  2. जबकि नोड महान एसिंक प्रेषण क्षमताओं की पेशकश करता है, इसके कोड निष्पादन प्रदर्शन सी # निष्पादित करने से FAR धीमा हो सकता है। यदि आपका कोड डेटा की कम/कोई प्रसंस्करण नहीं करता है, तो आप इस समस्या को नोटिस नहीं कर सकते हैं। यदि, हालांकि, आपका कोड डेटा प्रोसेसिंग/गणना/विश्लेषण/इत्यादि की उचित मात्रा में है, तो आपको नोड की जावास्क्रिप्ट प्रदर्शन-हिट अस्वीकार्य मिल सकती है।

  3. नोड एकल-थ्रेडेड है! यदि आपके कोड को कुछ भारी प्रसंस्करण करना है, उदाहरण के लिए, बड़ी मात्रा में डेटा पर जटिल गणना करना, यह एक एकल नोड इंस्टेंस को अन्य आने वाले अनुरोधों की सेवा करने से रोक देगा जब तक कि प्रत्येक प्रोसेसिंग ऑपरेशन पूरा न हो जाए। इस प्रकार, आप यदि आप Windows पर नोड की मेजबानी node clustering (वर्तमान में एक प्रायोगिक सुविधा) या, को सक्षम करने पर योजना की आवश्यकता होगी, उपयोग & IISNode] 4 जो का उपयोग कर (भयानक) नोड उदाहरण प्रबंधन IIS & विंडोज प्रक्रिया सक्रियण बुनियादी सुविधाओं संभालती IIS।

  4. सामान्य की तुलना में।नेट डेवलपर के डिबगिंग अनुभव, नोड के नीचे चल रहे डीबगिंग कोड अभी धीमी और बोझिल प्रक्रिया है। ऐसा करने के लिए आपको कोड डीबग करने के लिए नोड-इंस्पेक्टर और क्रोम वेब ब्राउजर का उपयोग करने की आवश्यकता है, लेकिन अनुभव खराब है: ब्रेकपॉइंट रनों में संरक्षित नहीं हैं; सशर्त ब्रेकपॉइंट्स समर्थित नहीं हैं; प्रदर्शित कॉल स्टैक उथला है; आदि

+1

कमेंट सूची, लेकिन कुछ चमकदार समस्याएं हैं। वी 8 जावास्क्रिप्ट इंजन तेज है। यह वास्तव में बहुत तेज़ है। कुछ उपयोग मामले हैं जहां सी # तेज़ है, और विश्वास करो या नहीं, कुछ जहां जावास्क्रिप्ट एक्सेल (रेगेक्स) है। भले ही, इनमें से कोई भी वेब अनुप्रयोग में किसी एक तरह से या किसी अन्य समस्या के रूप में किसी भी भाषा के लिए कोड निष्पादन के रूप में होने की संभावना नहीं है, इन दिनों * पर्याप्त तेज़ * है। दूसरा मुद्दा जावास्क्रिप्ट काम करने के बारे में बात कर रहा है। हालांकि यह सच है, यदि आप सिग्नल एक एसिंक का उपयोग कर रहे हैं तो भी सी # में एक कार्यात्मक तरीके से कोड लिखना बेहतर होगा। –

+0

और हाँ, मैं सहमत हूं ... जावास्क्रिप्ट टूल अभी चूसते हैं, खासकर जब आप विजुअल स्टूडियो में उपयोग करते हैं। –

+0

मैं ऐसा लगता है कि सिग्नल के साथ चिपकने वाला हूं। फिर भी, कभी नोड कोशिश करें। विस्तृत उत्तर के लिए टीएक्सएक्स! – Illuminati