क्या C ++ और MySQL के साथ वेब ऐप बनाने के लिए कोई वैचारिक कमियां हैं?


10

मुझे एक बहुत ही रोचक प्रोजेक्ट विरासत में मिला है जहाँ एक मौजूदा सॉफ्टवेयर को लेने और सास वेब ऐप में बदलने का अच्छा मौका है। जैसा कि परियोजना विरासत में मिली है, कोड आधार / रूपरेखा पहले से ही C ++ और MySQL के रूप में परिभाषित है। एप्लिकेशन को ही संकलित किया गया है और विंडोज सर्वर पर एक एक्सई के रूप में चलाया जाता है। यूआई वेब आधारित है और ऐप एक तरह के सर्वर के रूप में काम करता है। मुझे आधुनिक वेब ऐप्स के बारे में क्या पता है, यह शायद एक असामान्य विकल्प है। इन दिनों, ज्यादातर लोग एक PHP फ्रेमवर्क या रूबी ऑन रेल्स का विकल्प चुनते हैं। निश्चित रूप से यह धारणा है कि मुझे इस विषय पर ब्लॉग पढ़ने से मिलता है। इसलिए, मुझे यह जानने में बहुत दिलचस्पी है कि क्या MySQL द्वारा समर्थित C ++ EXE वेब ऐप के लिए एक ठोस आधार है, या क्या हमें दूसरे तरीके से निर्माण करना चाहिए?


आप जो वर्णन करते हैं, वह सर्वर प्रक्रिया की तरह लगता है और वेबएप नहीं। और सर्वर प्रक्रियाओं के लिए PHP या RoR निश्चित रूप से असामान्य विकल्प हैं। वास्तव में आपको किस तरह की समस्या है?
बेंजामिन बैनियर

क्या exe शायद नए Hostable Web Core ( Awesomeideas.net/page/IIS7-Hostable-WebCore.aspx ) का उपयोग करता है या क्या यह वास्तव में इसे खरोंच से खुद का HTTP सर्वर लागू करता है? यदि पूर्व, तो शायद वे वास्तव में C ++ का उपयोग करके और क्लाइंट मशीनों के लिए पोर्टेबिलिटी के लिए स्वयं की मेजबानी करके एक बहुत तेज़ ऐप बनाने की कोशिश कर रहे थे ..
जिमी होफा

बेशक कोई भी sane किसी भी तरह के POCO के नेट :: HTTPServer का उपयोग करेगा जैसे कि एक HTTP सर्वर को खरोंच से लिखने के बजाय। लेकिन यह RoR या जैसे Python चौखटे कुछ वेबसर्वर पैक नहीं है।
बेंजामिन बैनियर

4
यह एक वेब एप्लिकेशन के बैकएंड के रूप में सी ++ के लिए असामान्य नहीं है। Google खोज c ++ में लिखा गया है। Yahoo के कई ऐप्स c ++ हैं। लाखों लोगों द्वारा उपयोग किए जाने वाले हर AAA वेब ऐप को c ++ में लिखा जाता है।
लॉर्ड टाइडस

हां, ऐप को एक कस्टम वेब सर्वर के रूप में डिज़ाइन किया गया था। तो इसका वेब ऐप साइड HTML एडमिन UI और फीचर सेट से आता है।
jnthnclrk

जवाबों:


20

C ++ का उपयोग करके वेब एप्लिकेशन बनाना ठीक है, यदि लाभ लागत को स्पष्ट करता है, तो जाहिर है। Google, Amazon, Facebook सभी C ++ के साथ स्पीड, मेमोरी और एनर्जी - aka सर्वर की लागत में दक्षता के लिए बनाए गए हैं।

हालाँकि जैसा कि आपने अनुमान लगाया है, इसके लिए C ++ का उपयोग करने में कमियां हैं। यह आपके उपकरणों पर निर्भर करता है।

पहले मुझे इस पर cppcms वेबसाइट का हवाला देते हैं :

जब CppCMS का उपयोग किया जाना चाहिए।

C ++ भाषा कई कारणों से वेब विकास के लिए लोकप्रिय होने से दूर है: उपयुक्त उपकरण, डेवलपर्स के कौशल और कई और अधिक की कमी।

हालांकि, ऐसे क्षेत्र हैं जहां C ++CMS के साथ C ++ वेब प्रोग्रामिंग बहुत उपयोगी और कुशल हो जाती है, और कुछ जहां यह केवल समय की बर्बादी है।

CppCMS कब या इस्तेमाल किया जाना चाहिए?

1. उच्च लोड वेब साइटों और आवेदन प्रति सेकंड सैकड़ों और हजारों हिट के साथ, जहां उच्च प्रदर्शन, दक्षता और स्केलेबिलिटी की आवश्यकता होती है।

2. स्केलेबल धूमकेतु / सर्वर पुश प्रौद्योगिकियों की आवश्यकता वाले आवेदन --- CppCMS कुशलतापूर्वक न्यूनतम उपयोग के साथ सैकड़ों और हजारों युगपत HTTP कनेक्शन को कुशलतापूर्वक संभाल सकते हैं।

3. अतिरिक्त पुस्तकालय की एक छोटी सी लागत के साथ मौजूदा सी ++ अनुप्रयोगों / सेवाओं में वेब इंटरफेस का उपयोग करना।

4.Embedded कम शक्ति वाले डिवाइस - CppCMS हार्डवेयर की अपेक्षाकृत कम लागत के साथ समृद्ध अनुप्रयोगों के निर्माण की अनुमति देता है जो यथोचित तेजी से प्रदर्शन करेंगे।

जब उपयोग करने के लिए नहीं?

यदि आप छोटे वेब एप्लिकेशन बनाते हैं जिन्हें उच्च लोड की आवश्यकता नहीं होती है और बहुत कम समय-से-बाज़ार अवधि की आवश्यकता होती है - शायद Django या RoR जैसे उपकरण ऐसे कार्यों के लिए अधिक उपयुक्त होंगे।

C ++ के लिए विशिष्ट कमियां हैं:

  • अन्य भाषाओं की तुलना में संकलन समय बहुत बहुत धीमा हो सकता है। यह पुनरावृत्तियों को प्रभावित कर सकता है, अंतराल जारी कर सकता है लेकिन साथ ही विकासकर्ता का नैतिक भी। सुनिश्चित करें कि यह इसके लायक है।
  • अधिकांश समय, आपको परिवर्तनों को संकलित करने की आवश्यकता होती है। इसे टाला जा सकता है लेकिन यह सामान्य है।
  • आधुनिक C ++ लिखना आसान बनाता है (सीखना, पढ़ना, लिखना, डिबग करना आदि), लेकिन बहुत से C ++ डेवलपर्स को पता नहीं है कि आधुनिक C ++ क्या है। इसलिए यदि आप टीम में काम करते हैं, तो आपको पूरी टीम से मॉडर्न C ++ का अच्छा ज्ञान होना चाहिए। यदि नहीं, तो आप आसानी से बहुत जटिल बग में पहुंच जाएंगे। इसने कहा, यह भाषा की समस्या से ज्यादा लोगों की समस्या है। यह सिर्फ इतना है कि सी ++ इतिहास ने इसे आसान बनाने में मदद नहीं की। अच्छा शिक्षण अधिक आधुनिक (ऐतिहासिक) भाषाओं में उतना सामान्य नहीं है।
  • यूनिकोड अभी भी कोर सी ++ भाषा द्वारा खराब रूप से समर्थित है, जिससे यह महान दर्द का संभावित स्रोत बन गया है। इसे प्रबंधित करने के लिए बस हर जगह UTF-8 और कुछ पुस्तकालयों (बूस्ट में देखें) का उपयोग करें।
  • C ++ मानक को नहीं पता है कि एक पुस्तकालय क्या है। इसलिए हम विभिन्न संकलक / लिंकर / ओएस पर उन्हें प्रबंधित करने के लिए पारंपरिक तरीकों का उपयोग करते हैं। यह एक समस्या हो सकती है यदि आप क्रॉस-प्लेटफ़ॉर्म कोड में जाना शुरू करते हैं जो कि "कुछ मॉड्यूल" फ्लाई पर लोड / अनलोड करने की आवश्यकता होती है।

शायद CPPCMS पर एक नज़र डालें? या हो सकता है कि यदि आप एक GUI शैली की वेबसाइट बनाना चाहते हैं?

इन प्रश्नों की भी जाँच करें:


3
मेरी समझ यह है कि फेसबुक को PHP में क्रमादेशित किया गया है, लेकिन उन्होंने लिनक्स के लिए C ++ में PHP के लिए अपना स्वयं का मूल संकलक भी बनाया है। फेसबुक ने संकलक को विकसित करने का मुख्य कारण ऑपरेटिंग सर्वरों के लिए उनकी विद्युत लागत को कम करना था। यह वास्तव में गति नहीं थी (यह तेज है) लेकिन यह तथ्य है कि इसे प्रति अनुरोध कम सीपीयू उपयोग की आवश्यकता होती है। यह एक ओपन सोर्स प्रोजेक्ट है जो यहां पाया जा सकता है। Developers.facebook.com/blog/post/2010/02/02/…
Reactgular

1
हां, कारण भिन्न होते हैं, इसीलिए मैंने ऊर्जा और सर्वर लागत का उल्लेख किया है। यह कहा जा रहा है, अलेक्जेंड्रेस्कु ने हाल ही में एक साक्षात्कार में कहा, मेरा मानना ​​है, कि अधिक से अधिक फेसबुक कोड सीधे C ++ में लिखा जाता है, लेकिन उन्होंने उल्लेख नहीं किया है, अगर मेरी स्मृति सही है। वे C ++ उपयोगिता / एल्गोरिदम से भरा एक खुला स्रोत पुस्तकालय भी प्रदान करते हैं: Folly facebook.com/notes/facebook-engineering/…
Kलेम

यह भी ध्यान दें कि यहां तक ​​कि अगर कोड को पहले PHP में लिखा गया है, तब भी C ++ में परिवर्तित किया गया है, मैंने जो कमियां बताई हैं उनमें से 3 अभी भी सच हैं।
स्लेम

2
एक और C ++ वेब फ्रेमवर्क: wt (witty)। यह उन लोगों के लिए है जो हुड के तहत डेस्कटॉप ऐप की तरह काम करने वाले वेब ऐप बनाना चाहते हैं। पोर्टिंग के लिए, यह एक अच्छा विकल्प है।
सफ़ेफ़

मुझे लगता है कि उन सभी साइटों में कई भाषाओं में लिखे गए घटक हैं। C ++ कोड के वर्गों के लिए एक अनुकूलन के रूप में सबसे अधिक संभावना है जो ठीक-ठीक मेमोरी प्रबंधन की आवश्यकता होती है।
जिग्गी सेप

3

कुछ प्लगइन्स के साथ PHP में चलने वाले वर्डप्रेस मेरे विंडर्स सर्वर को घुटनों पर लाते हैं। इसलिए मुझे C ++ में वेब एप्लिकेशन को लागू करने के विचार से कोई समस्या नहीं है। गति वेब अनुभव का एक महत्वपूर्ण हिस्सा है।

अधिकांश वेब परियोजनाओं को चलाने के लिए ग्राफिक डिज़ाइन टेंट। PHP एक अस्पष्ट स्क्रिप्टिंग भाषा है जो HTML के अंदर चलती है। HTML से बाहर और बाहर निकलने के लिए PHP लेखकों को अनुमति देना। परिणामस्वरूप HTML के साथ काम करने के कई लाभ हैं।

फिर भी, आप C ++ में किसी भी HTML टेम्पलेट समाधान को लागू कर सकते हैं।

कोई आपको पायथन और PHP फ्रेमवर्क की एक लंबी सूची प्रदान कर सकता है जो तेजी से विकास के लिए बनाते हैं, लेकिन अगर आपके पास बहुत समय है तो C ++ निश्चित रूप से संभव है।

मुझे समझ में नहीं आता कि विंडोज पर C ++ करने का आपका निर्णय क्या है। जबरदस्त हंसी


1
क्लासिक स्ट्रॉ मैन तर्क, वर्डप्रेस / php के लिए कई बेहतर तेज विकल्प हैं जो C ++ नहीं हैं। मैं यह नहीं कह रहा हूं कि सी ++ एक प्रासंगिक विकल्प नहीं है, बस आपके तर्क को वास्तव में बहुत अच्छी तरह से तैयार नहीं किया गया है।
जिम्मी हॉफा

मैं आपसे सहमत हुँ। मुझे नहीं लगता कि मैं वर्डप्रेस को एक विकल्प बनाने की कोशिश कर रहा था। यह सिर्फ इतना है कि मेरे अनुभव को हाल ही में दिखाया गया है क्योंकि लोकप्रिय रूपरेखाओं से अच्छा प्रदर्शन प्राप्त करना मुश्किल है।
रिएक्टगुलर

1
StackExchange ASP.NET MVC फ्रेमवर्क पर चलता है। Node.Js कम वजन वाला उच्च प्रदर्शन है और यदि आप वास्तव में कुछ हास्यास्पद प्रदर्शन चाहते हैं तो स्नैप या यसोद हास्केल फ्रेमवर्क Yesodweb.com/blog/2011/03/… , हास्केल, जावास्क्रिप्ट और C # सभी उच्च स्तर का कचरा एकत्र होने वाली भाषाएँ हैं।
जिमी होफा

1
ध्यान रखें कि कई मामलों में सर्वर पर कोड निष्पादन की गति एक वेब ऐप में सीमित कारक नहीं है। समय का बड़ा हिस्सा किसी चीज़ (डेटाबेस) या यहाँ तक कि सामने के छोर (सीएसएस, चित्र, जावास्क्रिप्ट चीजें करते हुए, HTML रेंडरिंग) के इंतजार में बिताया जाता है
johannes

1

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

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

उस ने कहा, यदि आपके पास पहले से लिखा हुआ अधिकांश कोडबेस है, तो C ++ अभी भी एक व्यवहार्य विकल्प हो सकता है। आपको सभी प्रकार की वेब चीजों को कवर करने के लिए कुछ पुस्तकालयों को खोजने की आवश्यकता होगी (सबसे विशेष रूप से, आप अपने प्रोग्राम में एक स्टैंडअलोन HTTP वेब सर्वर को एकीकृत करने में सक्षम होना चाहते हैं, या Apache, FastCGI के माध्यम से या संकलन के माध्यम से कह सकते हैं। एक मॉड्यूल; आप HTML दस्तावेज़ों को दर्द रहित बनाने के लिए कुछ प्रकार की टेम्प्लेटिंग लाइब्रेरी भी चाहेंगे)।

अंत में, डेवलपर बाज़ार का मुद्दा है। सी ++ डेवलपर्स के बहुत सारे उपलब्ध हैं, और यहां तक ​​कि अधिक वेब डेवलपर्स भी हैं, लेकिन ओवरलैप शायद इतना बड़ा नहीं है, इसलिए यदि आपको कभी भी इस चीज़ पर काम करने के लिए लोगों को काम पर रखने की आवश्यकता होती है, तो आपके पास कुछ कठिन समय होगा, जैसे, पीएचपी।


1

जैसा कि दूसरों ने कहा है, वैचारिक रूप से, C ++ एक वेब सर्वर विकास के लिए एक अच्छा वातावरण है। हालाँकि, कई निर्णय हैं क्योंकि आप यह निर्णय लेते हैं।

वेब सर्वर डिजाइन के लिए स्क्रिप्टिंग भाषाओं की लोकप्रियता समय के साथ बारी है। लगभग तत्काल परिणाम के प्रदर्शन के साथ सरल परिवर्तन आसानी से किए जा सकते हैं। आप पाएंगे कि कोई भी अच्छा वेब सर्वर डिज़ाइन समान क्षमताओं की पेशकश करेगा। वास्तव में, C ++ उस लक्ष्य को प्राप्त करने के लिए एक उत्कृष्ट वातावरण है।

एक अच्छा वेब सर्वर एप्लिकेशन सिस्टम बनाने की कुंजी कोड से UI का पृथक्करण है। एक वेब अनुप्रयोग वातावरण बनाने का एक लक्ष्य है "आपका यूआई मेरे कोड में है और आपका कोड मेरे यूआई में है।"

मैं cppcms जैसे सिस्टम पर ध्यान से चाहूंगा। मुझे उम्मीद है कि यह कुछ इसी तरह की पेशकश करेगा।

लचीलापन और प्रदर्शन की पेशकश करने के लिए आपको स्क्रिप्टिंग भाषा की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.