रस्ट के एक्टिक्स या रॉकेट पैकेज का उपयोग करके कस्टम HTTP वेब सर्वर बनाना सीखें।
HTTP सूचना और डेटा ट्रांसफर के लिए क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करता है। रस्ट जैसी सर्वर-साइड प्रोग्रामिंग भाषाओं की एक विशेषता HTTP-आधारित सेवाओं के साथ इंटरैक्ट करने के लिए सर्वर और क्लाइंट ऐप विकसित करना है।
रस्ट अपनी सुरक्षा, प्रदर्शन और विश्वसनीयता सुविधाओं के कारण HTTP सर्वर बनाने के लिए उपयुक्त है। एक्टिक्स और रॉकेट जैसे रस्ट के तीसरे पक्ष के क्रेट परिष्कृत वेब सर्वर बनाने के लिए लोकप्रिय हैं जो उच्च ट्रैफ़िक को संभाल सकते हैं।
HTTP वेब सर्वर डेवलपमेंट के लिए आपको रस्ट का उपयोग क्यों करना चाहिए?
रस्ट ने वेब सर्वर के विकास के लिए लोकप्रियता हासिल की है क्योंकि अधिकांश वेब सर्वर के निर्माण के लिए भाषा की कुछ विशेषताएं सटीक आवश्यकताएं हैं।
रस्ट का उपयोग आपके एप्लिकेशन के पैमाने को कुशलता से सुनिश्चित करता है, जिससे भाषा उच्च-प्रदर्शन वाले ऐप बनाने के लिए आदर्श बन जाती है। आपके वेब सर्वर और अन्य सर्वर-साइड एप्लिकेशन के लिए रस्ट का उपयोग करने पर विचार करने के विशिष्ट कारण यहां दिए गए हैं।
जंग का उच्च प्रदर्शन
उच्च प्रदर्शन एक कारण है कि रस्ट HTTP वेब सर्वर के निर्माण के लिए एक उत्कृष्ट विकल्प है। रस्ट मेमोरी और सीपीयू सहित सिस्टम संसाधनों तक निम्न-स्तरीय पहुंच प्रदान करता है, जिससे आप कोड लिखने में सक्षम होते हैं जो अन्य सर्वर-साइड भाषाओं की तुलना में कम संसाधनों के साथ तेजी से चलता है।
इसके अतिरिक्त, रस्ट की स्वामित्व प्रणाली संकलन समय पर कचरा संग्रहण की आवश्यकता को समाप्त करती है, जो कि कुछ सर्वर-साइड भाषाओं के धीमे होने के कारणों में से एक है।
बचाव और सुरक्षा
रस्ट की स्मृति प्रबंधन की स्वामित्व प्रणाली वेब सर्वर विकास के लिए भाषा को सुरक्षित बनाती है। आप अशक्त या झूलने वाले सूचक संदर्भों का अनुभव नहीं करते हैं जो मेमोरी लीक और अन्य सुरक्षा कमजोरियों का कारण बन सकते हैं।
जंग की स्वामित्व प्रणाली आपके सर्वर और ऐप्स को सुरक्षित रखने के लिए इन सामान्य त्रुटियों को रोकता है। रस्ट बफर ओवरफ्लो और मेमोरी से संबंधित अन्य त्रुटियों को रोकने पर भी ध्यान केंद्रित करता है।
संगामिति
संगामिति एक प्रोग्राम की कई इकाइयों को आउटपुट को प्रभावित किए बिना आउट-ऑफ-ऑर्डर फैशन में चलाने की क्षमता है। एक समवर्ती प्रोग्राम का आउटपुट एसिंक्रोनस प्रोग्राम के आउटपुट के समान होना चाहिए।
संगामिति आपके एप्लिकेशन के प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकती है क्योंकि सर्वर को एक साथ कई अनुरोधों को संभालने की आवश्यकता होती है। जंग हल्के थ्रेडिंग मॉडल के साथ सह-अस्तित्व के लिए समर्थन प्रदान करता है।
रस्ट में समवर्ती प्रोग्रामिंग की चटनी यह है कि स्वामित्व प्रणाली आपको ताले और अन्य तुल्यकालन आदिम की आवश्यकता के बिना थ्रेड-सुरक्षित कोड लिखने की अनुमति देती है।
जंग मानक पुस्तकालय और रस्ट इकोसिस्टम में थर्ड-पार्टी पैकेज प्रभावी के लिए आधुनिक टूलींग प्रदान करें वेब सर्वर विकास.
कार्गो, रस्ट का पैकेज मैनेजर, निर्भरता प्रबंधन को सरल करता है और प्रक्रियाओं का निर्माण करता है। इसके अतिरिक्त, रस्ट में रस्ट एनालाइज़र जैसे टूल के साथ उत्कृष्ट आईडीई समर्थन है जो सहज कोड पूर्णता, त्रुटि हाइलाइटिंग और अन्य सुविधाएँ प्रदान करता है।
एक्टिक्स और रॉकेट लाइब्रेरी का अवलोकन
रस्ट की मानक लाइब्रेरी में अधिकांश उपयोगिताएँ हैं जिनकी आपको वेब सर्वर बनाने के लिए आवश्यकता होगी। तृतीय-पक्ष पुस्तकालय जैसे राकेट और एक्टिक्स रस्ट के साथ सर्वर-साइड एप्लिकेशन बनाना आसान बनाएं।
एक्टिक्स और राकेट लोकप्रिय रस्ट वेब फ्रेमवर्क हैं, लेकिन लाइब्रेरी डिजाइन और सुविधाओं में भिन्न हैं।
रॉकेट उत्पादकता और उपयोग में आसानी को प्राथमिकता देने वाला एक उच्च-स्तरीय वेब ढांचा है। रस्ट में वेब ऐप बनाने के लिए रॉकेट बहुत सारे सार और सिंटैक्स चीनी प्रदान करता है। रॉकेट अपनी मजबूत टाइपिंग और सहज एपीआई डिजाइन के लिए भी लोकप्रिय है।
आप अपने में प्रोजेक्ट डिपेंडेंसी के रूप में रॉकेट जोड़ सकते हैं कार्गो.टोमल रस्ट में वेब ऐप बनाना शुरू करने के लिए फ़ाइल:
[निर्भरता]
राकेट = "0.4.11"
दूसरी ओर, एक्टिक्स-वेब एक निम्न-स्तरीय ढांचा है जो प्रदर्शन और मापनीयता को प्राथमिकता देता है। एक्टिक्स एक अभिनेता-आधारित संगामिति मॉडल का लाभ उठाता है और गैर-अवरुद्ध I/O प्रदान करता है जो प्रदर्शनकारी वेब अनुप्रयोगों के निर्माण के लिए पैकेज को आदर्श बनाता है।
एक परियोजना निर्भरता के रूप में Actix जोड़ें निर्भरता आपका खंड कार्गो.टोमल फ़ाइल:
[निर्भरता]
एक्टिक्स-वेब = "4.3.1"
आपके प्रोजेक्ट के लिए लाइब्रेरी चुनना आपके प्रोजेक्ट के विनिर्देशों, लाइब्रेरी की सुविधाओं और रस्ट और एचटीटीपी के साथ आपके अनुभव पर निर्भर करेगा।
जंग में एक साधारण वेब सर्वर का निर्माण
रस्ट प्रोजेक्ट बनाने के बाद और अपने प्रोजेक्ट की निर्भरता में किसी भी रॉकेट या एक्टिक्स फ्रेमवर्क को जोड़ने के बाद कार्गो.टोमल फ़ाइल, आप रस्ट में एक वेब सर्वर का निर्माण शुरू करने के लिए तैयार हैं।
एक्टिक्स के साथ एक साधारण वेब सर्वर बनाना
रस्ट में वेब सेवाओं का निर्माण करते समय आप अनुरोधों के लिए एक सीरिएलाइज़र का उपयोग कर सकते हैं।
Serde, JSON, YAML, और TOML जैसे जंग प्रकारों और डेटा स्वरूपों के बीच डेटा को क्रमबद्ध और डिसेरलाइज़ करने के लिए एक लोकप्रिय रस्ट लाइब्रेरी है। Serde रस्ट डेटा संरचनाओं और अन्य डेटा स्वरूपों में संबंधित अभ्यावेदन के बीच डेटा रूपांतरण को परिभाषित करने के लिए एक रूपरेखा प्रदान करता है।
यहां आपके प्रोजेक्ट के लिए तीसरे पक्ष के पैकेज के रूप में Serde को जोड़ने का निर्देश दिया गया है।
[निर्भरता]
सेर्डे = {संस्करण = "1.0.159", सुविधाएँ = ["व्युत्पन्न"] }
एक बार जब आप Serde और Actix को परियोजना निर्भरता के रूप में जोड़ लेते हैं, तो आप Rust के साथ एक मूल वेब सर्वर बना सकते हैं। यहां बताया गया है कि आप एक साधारण कैसे सेट कर सकते हैं हैलो वर्ल्ड! वेब सर्वर जो क्लाइंट को एक्टिक्स के साथ एक स्ट्रिंग लिखता है:
सबसे पहले, आवश्यक मॉड्यूल और प्रकारों को actix_web और सेर्डे बक्से:
उपयोग actix_web::{get, web, App, HttpResponse, HttpServer, Responder};
उपयोग सेर्डे:: {डेसेरियलाइज़, सीरियलाइज़};
आप प्रयोग करेंगे सेर्डे क्लाइंट को एक संरचना के साथ एक संदेश क्रमबद्ध करने के लिए। Serde क्लाइंट के लिए स्ट्रक्चर को JSON में बदल देगा। यहाँ संदेश के लिए संरचना है:
# [व्युत्पन्न (डीबग, सीरियलाइज़, डीसेरियलाइज़)]
structसंदेश {
संदेश: डोरी,
}
अब आप एंडपॉइंट के लिए हैंडलर फ़ंक्शन को परिभाषित कर सकते हैं। अपने हैंडलर फ़ंक्शन के शीर्ष पर, आप कस्टम व्यवहार के लिए सज्जाकार जोड़ सकते हैं:
#[पाना("/")]
asyncfnनमस्ते() -> प्रत्यय उत्तरदाता {
एचटीपी प्रतिक्रिया ::ठीक().json (संदेश {
संदेश: "हैलो वर्ल्ड!".to_ownership (),
})
}
नमस्ते हैंडलर फ़ंक्शन GET अनुरोधों को संभालता है। फ़ंक्शन एक प्रकार देता है जो लागू करता है प्रत्युत्तर से विशेषता एक्टिक्स पैकेट।
json की विधि एचटीपी प्रतिक्रिया:: ठीक है () प्रकार एक संरचना उदाहरण में लेता है सर्दे हुड के नीचे संभालता है और ग्राहक को प्रतिक्रिया देता है।
एंडपॉइंट को परिभाषित करने के बाद, आप सर्वर इंस्टेंस शुरू कर सकते हैं और रूट पर एंडपॉइंट को माउंट कर सकते हैं।
#[actix_web:: main]
asyncfnमुख्य() -> एसटीडी:: आईओ ::परिणाम {
HttpServer:: नया (|| ऐप:: नया ()। सेवा (हैलो))
।बाँधना("127.0.0.1:8080")?
।दौड़ना()
.इंतजार
}
एचटीपी सर्वर:: नया फ़ंक्शन एक नया सर्वर उदाहरण है। मुख्य फ़ंक्शन प्रारंभ होता है, और सर्वर माउंट करता है नमस्ते नए ऐप इंस्टेंस के साथ हैंडलर फ़ंक्शन। बाँधना विधि सर्वर को निर्दिष्ट यूआरएल से बांधती है, और दौड़ना समारोह सर्वर चलाता है।
रॉकेट के साथ एक साधारण वेब सर्वर बनाना
रॉकेट अतिसूक्ष्म है, इसलिए आप इसके अलावा किसी अन्य निर्भरता के बिना एक साधारण वेब सर्वर सेट कर सकते हैं राकेट टोकरा।
यहां बताया गया है कि एक साधारण सर्वर कैसे सेट किया जाए हैलो वर्ल्ड! रॉकेट का उपयोग कर समापन बिंदु:
सबसे पहले, अपने सर्वर के लिए आवश्यक निर्भरताओं को आयात करें।
#![फीचर (proc_macro_hygiene, decl_macro)]
#[मैक्रो_उपयोग]
बाहरीटोकरा रॉकेट;
// रॉकेट क्रेट से आयात
उपयोग रॉकेट:: प्रतिक्रिया:: सामग्री;
उपयोग रॉकेट:: राज्य;
#![फीचर (proc_macro_hygiene, decl_macro)] विशेषता रॉकेट ढांचे के लिए जंग प्रयोगात्मक सुविधाओं को सक्षम करती है। #[मैक्रो_उपयोग] विशेषता आयात मैक्रोज़ से राकेट मापांक।
यहां एक हैंडलर फ़ंक्शन है जो अनुरोध पर HTML परोसता है:
#[पाना("/")]
fnहैलो वर्ल्ड() -> सामग्री:: एचटीएमएल स्थिरएसटीआर> {
सामग्री:: एचटीएमएल ("हैलो वर्ल्ड!
")
}
हैलो वर्ल्ड समारोह के साथ एक HTML स्थिर स्ट्रिंग देता है सामग्री:: एचटीएमएल समारोह।
यहां सर्वर के लिए कॉन्फ़िगरेशन स्ट्रक्चर डिक्लेरेशन (रॉकेट फ्रेमवर्क कन्वेंशन) है:
structकॉन्फ़िग {
पत्तन: यू 16,
}
#[पाना("/पत्तन")]
fnपत्तन(कॉन्फ़िगरेशन: राज्य) -> डोरी {
प्रारूप!("सर्वर पोर्ट {} पर चल रहा है", कॉन्फ़िग.पोर्ट)
}
जब आप सर्वर चलाते हैं, तो आप से अनुरोध कर सकते हैं /port बंदरगाह की स्थिति के लिए समापन बिंदु।
अंत में, आप के साथ एक सर्वर उदाहरण बनाएंगे आग लगना समारोह। कॉन्फ़िगरेशन जोड़ें, रूट माउंट करें और सर्वर लॉन्च करें:
fnमुख्य() {
होने देना कॉन्फिग = कॉन्फिग {पोर्ट: 8000 };
रॉकेट:: प्रज्वलित ()
प्रबंधन (विन्यास)
माउंट ("/", मार्ग! [हैलो_वर्ल्ड, पोर्ट])
।शुरू करना();
}
कॉन्फ़िग चर का एक उदाहरण है कॉन्फ़िग संरचना। आग लगना फ़ंक्शन एक सर्वर उदाहरण प्रारंभ करता है, प्रबंधित करना विधि सर्वर में कॉन्फ़िगरेशन जोड़ती है, और पर्वत विधि आधार मार्गों पर हैंडलर फ़ंक्शन को आरोहित करती है। अंततः शुरू करना विधि निर्दिष्ट पोर्ट पर सुनने के लिए सर्वर को लॉन्च करती है।
आप WASM के साथ रस्ट में शक्तिशाली वेब एप्लिकेशन बना सकते हैं
WebAssembly (WASM) एक बाइनरी निर्देश प्रारूप है जिसे ब्राउज़रों और अन्य उपकरणों पर निष्पादन के लिए डिज़ाइन किया गया है। WASM एक निम्न-स्तरीय बायटेकोड प्रारूप प्रदान करता है जिसे उच्च-स्तरीय प्रोग्रामिंग भाषा जैसे रस्ट संकलन लक्ष्य के रूप में उपयोग कर सकते हैं।
WASM के साथ, आप अपने रस्ट कोड को एक बाइनरी प्रारूप में संकलित कर सकते हैं जिसे अधिकांश लोकप्रिय ब्राउज़र निष्पादित कर सकते हैं। WASM रस्ट में मजबूत वेब एप्लिकेशन बनाने के लिए संभावनाओं की दुनिया खोलता है, जिसमें फुल-स्टैक वेब ऐप्स भी शामिल हैं।