2012-10-26 30 views
5

पृष्ठभूमि के लिए सर्वर साइड वस्तुओं के साथ दो तरह से संचारवेब अनुप्रयोग विकास

मेरी पृष्ठभूमि सी के साथ ++ एम्बेडेड उपकरणों और डेस्कटॉप के लिए उच्च पैमाने वस्तु उन्मुख मिडलवेयर और अनुप्रयोग विकास है। अब हमें अपने स्टार्टअप के लिए एक उच्च स्तरीय वेब-ऐप बनाना होगा।


प्रश्न

अनुरोध-प्रतिक्रिया पर आधारित है और निरंतर मतदान आधारित वर्तमान वेब विकास चौखटे बहुत आदिम, अक्षम लग रहा है।

मैं पूरी तरह से सर्वर-साइड ऑब्जेक्ट उन्मुख और ईवेंट आधारित प्रोग्रामिंग की तलाश में हूं। यहाँ एक यह उदाहरण है,

एक लगातार वस्तु employeeManager सर्वर पर नामित,

इस वस्तु की

तरीकों,

empList getAllEmployeeList(); 
empList getEmployeeOfDepartment(string strDept); 
/*Some more */ 

इस वस्तु की घटनाओं है

employeeAdded(empID); 
employeeEdited(empID); 
employeeRemoved(empID); 
/*Some more */ 

अब, क्लाइंट साइड जावास्क्रिप्ट इस (सर्वर-साइड) ऑब्जेक्ट के तरीकों को कॉल करने में सक्षम होना चाहिए और इस ऑब्जेक्ट की घटनाओं को प्राप्त करने में सक्षम होना चाहिए। हम एसिंक्रोनस मोड में विधि कॉल के परिणाम प्राप्त कर सकते हैं। फ्रेमवर्क को एक तरीका भी प्रदान करना चाहिए ताकि दृश्य (या एचटीएमएल-जेएस पेज) आवश्यक सर्वर साइड इवेंट्स के लिए पंजीकरण कर सके।

क्या कोई ढांचा है जो इस पद्धति पर काम करता है। सॉकेटियो के शीर्ष पर ऐसा कुछ भी? कोई भी ढांचा जो क्लाइंट जावास्क्रिप्ट और अलग-अलग पक्ष वस्तुओं के बीच एक अच्छा दो तरह का आरपीसी प्रदान करता है?

+0

अगर आपने कहा कि किस तरह का सर्वर स्टैक आप काम कर रहे हैं, तो इसका जवाब देना आसान हो सकता है - उदाहरण के लिए https://github.com/SignalR/SignalR जेएस क्लाइंट (दूसरों के बीच) में सर्वर साइड इवेंट को धक्का देता है। नेट आधारित ढेर। – JcFx

+0

@ जेसीएफएक्स, आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। नहीं .net कृपया, मैं सर्वर प्रोग्रामिंग के लिए या तो जावा या जावास्क्रिप्ट के साथ जाऊंगा। – SunnyShah

+0

आधा मजा सिस्टम के उस हिस्से को खरोंच से बना रहा है - या शायद यह सिर्फ मुझे है :) मुझे डर है कि मैं जो भी पूछता हूं उसके लिए मुझे पूर्व-निर्मित सिस्टम के बारे में पता नहीं है, लेकिन यह देखने के लिए देख रहा हूं कि क्या लोग आगे बढ़ते हैं - एक अच्छा सवाल है। Xyu को +1 करने के लिए +1 जो मैंने शुरू किया होगा। – Pebbl

उत्तर

2

निम्नलिखित कॉम्बो की कोशिश करो।

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

यहां एक लेख है जो मुझे बहुत दिलचस्प लगता है, और शायद आप वर्णित तकनीक का उपयोग कर सकते हैं?

लेख:

http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/

2

NodeJS और sockets.io। ये वांछित प्रभाव प्राप्त करने में मदद कर सकते हैं।

नोड + socket.io + Backbone.Model + एक कल्पना की बिट:

+0

हां, लेकिन समस्या यह है कि हम इसके लिए बॉयलरप्लेट की अच्छी मात्रा लिखना समाप्त कर देंगे। क्या यह एक तरीका प्रदान करता है ताकि आप क्लाइंट साइड जावास्क्रिप्ट पर एक स्टब बना सकें जो आंतरिक रूप से सभी सर्वर साइड ऑब्जेक्ट संचार को संभालता है? – SunnyShah

+0

शायद जेएस क्लास में प्रत्येक प्रकार के सर्वर-साइड ऑब्जेक्ट के लिए कार्यक्षमता को परिभाषित करना कुछ समान कर सकता है, लेकिन सभी प्रकार के लिए एक वैश्विक हैंडलर - मुझे नहीं पता। आवश्यक कार्यक्षमता पर निर्भर करता है – undefined

2

Meteor एक Node.js आधारित ढांचे एक डेटाबेस है जो क्षैतिज स्केलेबल क्षुधा के लिए उन्मुख है के लिए WebSocket संचार और MongoDB के लिए sock.js उपयोग करता है। जब ग्राहक-सर्वर सिंक्रनाइज़ेशन की बात आती है तो उल्का आपके लिए भारी भारोत्तोलन करेगा - आपको डेटाबेस समन्वयन के लिए कोई कोड लिखना नहीं होगा। परिणाम मुख्य रूप से आपके अनुप्रयोग के तर्क के साथ req/resp ओवर ओवरहेड के बजाय एक न्यूनतम कोडबेस है।आप यहां उदाहरणों पर एक नज़र डाल सकते हैं: http://meteor.com/examples/leaderboard

1

यदि आप सी ++ से परिचित हैं, तो आप G-WAN देख सकते हैं। धूमकेतु (जो आप खोज रहे हैं) का उपयोग करके उनके पास एक शानदार उदाहरण है, और नोड.जेएस रैपर भी हैं।

जी-वैन क्लाइंट-साइड एप्लेट्स को भी जो भी भाषा चाहिए, उसमें लिखा गया है। तो, आपके लिए, सी ++, बस वही हो सकता है जो आप खोज रहे हैं।

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

लेकिन कुंजी (मेरे लिए) सर्वर के अनावश्यक मतदान पर कटौती करने के लिए धूमकेतु का उपयोग कर रहा था।

1

यदि आप क्रॉस-भाषा आरपीसी चाहते हैं तो आपको Apache Thrift उपयोगी मिल सकता है। मेरा मानना ​​है कि एक जावास्क्रिप्ट क्लाइंट है (लेकिन इसका कभी भी उपयोग नहीं किया है)। आप सॉकेट.आईओ के शीर्ष पर एक आरपीसी ढांचा बना सकते हैं जैसा कि कई अन्य ने इंगित किया है, लेकिन ऐसा लगता है कि एक बिल्ली को गाय की तरह दिखने की तरह लग रहा है ... यानी मजेदार, लेकिन विशेष उत्पादक

मुझे यकीन है कि आप पहले से ही है, या कुछ विरासत बाधा है, लेकिन यदि आप नहीं सोचते हैं कि आरपीसी वास्तव में वह मॉडल है जिसका आप उपयोग करना चाहते हैं या नहीं। आरपीसी नेटवर्क विलंबता के अस्तित्व को स्पष्ट रूप से सारणीबद्ध करता है, और इस तरह आपके ऐप की नींव में कुछ कमजोर धारणाओं को झुकाता है। सामान्य रूप से काफी कम और पठनीय critique of RPC है (AST कम नहीं) जो पढ़ने के लायक हो सकता है।

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