स्विफ्ट - एक परिष्कृत सर्वर साइड भाषा

स्विफ्ट - एक परिष्कृत सर्वर साइड भाषा

चूंकि ऐप्पल ने मूल रूप से स्विफ्ट को ऑब्जेक्टिव-सी के उत्तराधिकारी के रूप में परिचित कराया था, इसने बदल दिया है कि नेटवर्क आईओएस, मैकओएस, वॉचओएस और टीवीओएस अनुप्रयोगों को कैसे कोड करता है।

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

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

इस लेख के लक्ष्य

इस लेख में, आप सर्वर-साइड स्विफ्ट के बारे में जानेंगे। पहले मैं स्पष्ट करता हूँ कि सर्वर-साइड स्विफ्ट कैसे कार्य करता है, और उसके बाद मैं आपको किटुरा, वाष्प और परफेक्ट सिस्टम के साथ शुरू करने के लिए सर्वोत्तम अभ्यास दिखाऊंगा।

सर्वर साइड स्विफ्ट का परिचय

स्विफ्ट की पहली बार 2014 में ऐप्पल द्वारा घोषणा की गई थी और तेजी से विकासशील प्रोग्रामिंग भाषा में से एक को तेजी से खत्म कर दिया। स्विफ्ट बड़ी संख्या में सर्वश्रेष्ठ समकालीन भाषाओं से आकर्षित होती है, उदाहरण के लिए, पायथन, जो लालित्य और उपयोग में आसानी की अनुमति देता है। यह तेजी से तरल और सहज कार्य की अनुमति देते हुए, उद्देश्य-सी के विशेष बंधनों से इंजीनियरों को मुक्त करता है।

दिसंबर 2015 में, ऐप्पल ने एक और शानदार घोषणा की और अपने सहायक पुस्तकालयों, डीबगर और पैकेज मैनेजर के साथ स्विफ्ट भाषा को अपाचे 2.0 लाइसेंस के तहत एक ओपन-सोर्स प्रोजेक्ट बना दिया, जिससे आम तौर पर लोगों को पुल अनुरोध करने और योगदान करने के लिए मंच खुल गया। ऑब्जेक्टिव-सी से दूर कदम ने न केवल ऐप स्टोर में योगदान करने वाले कई ऑब्जेक्टिव-सी डेवलपर्स को लुभाया है, बल्कि इसने सभी कौशल और नींव के डेवलपर्स के लिए स्विफ्ट के साथ ऐप्पल इकोसिस्टम में प्रवेश करना आसान बना दिया है।

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

हालांकि बैक-एंड-ए-ए-सर्विस (बीएएएस) ने बिना कोड वाले बैक-एंड समाधानों के साथ आईओएस डेवलपर्स के नायक की भूमिका निभाई है, उदाहरण के लिए, Google का फायरबेस और ऐप्पल का अपना विशेष क्लाउडकिट जो बैक-एंड की जटिलताओं को कम करता है, कई समूह और उद्यम अधिक अनुरोध करते हैं। यह वह जगह है जहां सर्वर-साइड स्विफ्ट आती है, जो आपको पूरी तरह से बहु-थ्रेडेड बैक-एंड सर्वर बनाने में सक्षम बनाती है जो ओपन सोर्स और अंतःस्थापित रूप से कॉन्फ़िगर करने योग्य है।

सर्वर-साइड स्विफ्ट आपको यह चुनने का मौका देती है कि आपका बैक-एंड सर्वर कैसा है, चाहे वह AWS, रैकस्पेस, या अपने स्वयं के भौतिक सर्वर के साथ हो। आप अपने सर्वर को संतुलित करने का तरीका भी चुन सकते हैं (उदाहरण के लिए प्रमुख सर्वर समाधानों के माध्यम से, उदाहरण के लिए, एनजीआईएनएक्स) और डेटाबेस में अपनी जानकारी कैसे जारी रखें (उदाहरण के लिए, नोएसक्यूएल व्यवस्थाएं, उदाहरण के लिए, मोंगोडीबी, या पारंपरिक डेटाबेस, उदाहरण के लिए) , पोस्टग्रेज, MySQL, या Oracle)। वह, साथ ही आप कभी भी एक हिस्से की व्यवस्था से जुड़े नहीं होते हैं, आप अपने पूरे एप्लिकेशन कोडबेस को प्रभावित किए बिना स्विच कर सकते हैं।

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

सर्वर-साइड स्विफ्ट बिल्कुल ठोस लगता है, हालांकि आपके लिए कौन सी संरचना आदर्श है? आगे हम इस प्रकार प्रत्येक की जाँच करते हैं, कितुरा से आरंभ करते हुए।

Kitura . के साथ शुरुआत

कितुरा से शुरुआत करते हुए, आपके पास एक ऐसा चरण है जिसे पहली बार फरवरी 2016 में जारी किया गया था और इसके तुरंत बाद Apple के WWDC में अचूक गुणवत्ता प्राप्त की, स्विफ्ट के साथ सर्वर-साइड वेब का समर्थन करने में IBM के आक्रमण की बात करते हुए, जिसे तब Apple के हाथों से संक्रमण के लिए सेट किया गया था। खुला स्त्रोत।

एक नियम के रूप में, किटुरा विन्यास पर परंपरा के आसपास केंद्रित है। यह आपके अंतर्निहित प्रोजेक्ट को स्टब्स के साथ तैयार करता है, इससे पहले कि आप उन स्पष्ट ढांचे और पुस्तकालयों का चयन करें जिन्हें आप बनाने की उम्मीद कर रहे हैं। कितुरा की प्रमाणीकरण प्रक्रिया को इसके अपने स्वयं के किटुरा-क्रेडेंशियल्स मिडलवेयर फ्रेमवर्क द्वारा बरकरार रखा गया है, जो आपको पारंपरिक उपयोगकर्ता नाम/पासवर्ड से ऑनलाइन नेटवर्किंग लॉगिन और एकीकृत सत्यापन के लिए सत्यापन प्रणाली के बुफे को देखने में सक्षम बनाता है, ओपनआईडी का उपयोग करता है जो JSON वेब टोकन (JWT) को संभालता है .

Kitura के डेटाबेस ORM व्यवस्था को Kuery द्वारा नियंत्रित किया जाता है, विशेष रूप से SQL के प्रबंधन की जटिलताओं को हल करने के लिए, बुनियादी तर्कसंगत डेटाबेस का समर्थन करता है, उदाहरण के लिए, MySQL, SQLite और PostgreSQL स्थानीय रूप से, और इसके अलावा अन्य डेटाबेस व्यवस्था, जिसमें NoSQL डेटाबेस शामिल हैं, विभिन्न अन्य प्लगइन्स के माध्यम से।

किटुरा चीजों के लिए अन्य मूल्यवान प्लगइन्स भी देता है, उदाहरण के लिए, एचटीएमएल टेम्प्लेटिंग, प्रसिद्ध प्लगइन्स का उपयोग करना, उदाहरण के लिए, स्टैंसिल और मार्कडाउन। आईबीएम से उत्पन्न, सर्वर-साइड सिस्टम अतिरिक्त रूप से आईबीएम वाटसन एपीआई के साथ कनेक्टिविटी से लाभान्वित होता है और इसके अलावा अपने ब्लूमिक्स क्लाउड प्लेटफॉर्म में सीधे समन्वय के लिए मैकओएस समर्थन देता है। यह आपके लिए एक अतिरिक्त विकल्प उपलब्ध कराता है, साथ ही आपके अन्य पारंपरिक परिनियोजन विकल्पों के साथ-साथ Linux/Unix और macOS सर्वर पर क्रॉसवाइज करता है।

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

किटुरा को स्थापित करना और चलाना

शुरू करने के लिए सबसे तेज़ तरीका कितुरा की दिशा रेखा इंटरफ़ेस (सीएलआई) का उपयोग करना है, जो मैकओएस और लिनक्स दोनों पर समर्थित है। प्रसिद्ध पैकेज प्रबंधन उपयोगिता Homebrew का उपयोग करते हुए, Kitura और Kitura CLI को निम्नलिखित दर्ज करके स्थापित करें:

$ ब्रू टैप आईबीएम-स्विफ्ट/कितुरा

$ काढ़ा इंस्टॉलकितुरा

एक अधूरे आयोजक के अंदर जिसे आप अपने उद्यम के रूप में उपयोग करेंगे, अपने उपक्रम को स्थापित करने के लिए साथ में चलाएँ:

$ Kitura init

जब यह आपके कंकाल एप्लिकेशन का निर्माण समाप्त कर लेता है, तो आपको HelloKitura.xcodeproject नामक एक और प्रोजेक्ट दिखाई देगा। आप Kitura के दस्तावेज़ीकरण का हवाला देकर परियोजना निर्माण के बारे में अधिक जानकारी प्राप्त कर सकते हैं। आप Xcode में हाल ही में बनाए गए प्रोजेक्ट को खोल सकते हैं और अपने सर्वर के रूट https://localhost:8080/URL पर सभी कॉल्स से निपटने के लिए आवश्यक एप्लिकेशन क्लास, Application.swift को बदल सकते हैं:

// HTTP GET अनुरोधों को "/" पर हैंडल करें

राउटर.गेट ("/") {अनुरोध, प्रतिक्रिया, अगला में

response.send ("हैलो, वर्ल्ड!")

अगला()

}

उपरोक्त कोड टुकड़ा अनुकरणीय हैलो, वर्ल्ड को पुनर्स्थापित करके प्रतिक्रिया करता है! . इससे पहले कि आप अंततः प्रोजेक्ट चला सकें, अपनी Xcode योजना को HelloKitura (आपकी सक्रिय परियोजना) को इंगित करने के लिए बदलें, और Command-R दबाकर अपना उपक्रम शुरू करें। जब आपका सर्वर चल रहा हो, तो अपनी पसंद के ब्राउज़र में, https://localhost:8080 पर जाएं और आपको अपने ब्राउज़र में हैलो वर्ल्ड देखना चाहिए।

वाष्प के साथ शुरुआत

सितंबर 2016 में किटुरा के कुछ महीनों बाद जारी किया गया, क्यूथरी द्वारा वाष्प को आम तौर पर समुदाय के आकार और मॉड्यूल की संख्या के संबंध में सबसे प्रमुख माना जाता है। यह Apple के Swift-nio ढांचे के शीर्ष पर बनाया गया है, जो इसे एक वास्तविक निष्पादन पावरहाउस बनाता है। किटुरा और विभिन्न चरणों की तरह बिल्कुल नहीं, जो केवल स्विफ्ट में नहीं बल्कि Node.js या अन्य मध्यम व्यक्ति पार्सर्स पर गढ़े गए हैं, एक स्विफ्ट पार्सर देने और स्पष्ट और सुसंगत एपीआई देने के लिए वाष्प खुद को उनमें से किसी भी निर्भरता से अलग करता है।

वाष्प SQL विक्रेताओं को डेटाबेस की पूरी तरह से मदद देता है, उदाहरण के लिए, MySQL और PostgreSQL, और NoSQL विक्रेताओं, उदाहरण के लिए, Redis और MongoDB, Kitura के रूप में। हालांकि Kitura के अपने Kuery ORM समाधान हैं, वाष्प फ़्लुएंट ORM का उपयोग मेरे द्वारा अभी संदर्भित डेटाबेस का समर्थन करने के लिए करता है, जिससे ORM को अन्य तृतीय पक्ष डेटाबेस प्रदाताओं तक फैलाना सामान्य रूप से सरल हो जाता है। मूल रूप से ऐप्पल की पुश अधिसूचना सेवा का समर्थन करने में वाष्प खुद को वैकल्पिक ढांचे से अलग करता है, और ईमेल अधिसूचनाओं को आगे बढ़ाने के लिए एसएमटीपी का भी समर्थन करता है।

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

स्थापित करना और चलाना

वाष्प के साथ शुरू करने के लिए, आप वाष्प उपकरण किट को स्थापित करके शुरू करते हैं, जिसमें सभी पुस्तकालय निर्भरताएं और सीएलआई टूलबॉक्स शामिल हैं। टर्मिनल में निम्नलिखित दर्ज करके इसे Homebrew के साथ स्थापित करें:

$ काढ़ा स्थापनावाष्प/नल/वाष्प

जब स्थापना समाप्त हो गई है, तो आप पुष्टि कर सकते हैं कि वाष्प-सहायता टाइप करके वाष्प सफलतापूर्वक स्थापित हो गया है। एक प्रोजेक्ट बनाने के लिए, निम्नलिखित में टाइप करें, अपने स्वयं के प्रोजेक्ट नाम के साथ प्रतिस्थापित करें:

$ वाष्प नया

वाष्प इंजन निम्नलिखित के समान एक फ़ोल्डर संरचना का निर्माण करेगा:

जनता

स्रोत

ऐप

नियंत्रक

मॉडल

boot.स्विफ्ट

config.swift

मार्ग.स्विफ्ट

भागो

main.swift

टेस्ट

ऐप टेस्ट

└── पैकेज.स्विफ्ट

वास्तव में एक एक्सकोड प्रोजेक्ट बनाने के लिए, आपको प्रोजेक्ट फ़ोल्डर के भीतर से निम्न कमांड को स्पष्ट रूप से दर्ज करने की आवश्यकता होगी:

$ वाष्प xcode

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

सर्वर https://localhost:8080 . पर शुरू हो रहा है

आगे बढ़ो और उस यूआरएल को किसी भी ब्राउज़र में दर्ज करें, और आपको अपना एप्लिकेशन चलाना चाहिए।

परफेक्ट के साथ शुरुआत

अंत में, हम परफेक्ट बाय परफेक्टली सॉफ्ट पर एक नज़र डालते हैं, जो एक सुविधा संपन्न सर्वर-साइड प्लेटफॉर्म जैसे वाष्प और किटुरा है। परफेक्ट में एक समान मानक घंटियाँ और सीटी शामिल हैं जो आप पिछले विक्रेताओं पर पाएंगे, मूंछ या मार्कडाउन के साथ टेम्प्लेट से लेकर वेब सॉकेट्स के साथ नेटवर्किंग तक, और साथ ही ऐप्पल पुश नोटिफिकेशन और एसएमटीपी।

अन्य सर्वर-साइड प्लेटफॉर्म की तरह, परफेक्ट का अपना ओआरएम कार्यान्वयन है, स्टॉर्म प्लेटफॉर्म (परफेक्ट स्टॉर्म), जो MySQL, PostgreSQL और अन्य प्रमुख रिलेशनल डेटाबेस के लिए मूल समर्थन देता है, और इसके अलावा MongoDB, Redis, और अन्य NoSQL समाधान। परफेक्ट से एक प्रमुख बहिष्करण एक सीएलआई है, लेकिन फ्रेमवर्क इसके लिए एक देशी मैकओएस एप्लिकेशन के साथ बनाता है।

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

स्थापित करना और चलाना

परफेक्ट के साथ उठना और दौड़ना बेहद सीधा है। प्रारंभ में, निम्नलिखित दर्ज करके, PerfectlySoft रेपो को क्लोन करें:

$ git क्लोन https://github.com/PerfectlySoft/PerfectTemplate.git

क्लोन किए गए फ़ोल्डर के अंदर से, प्रोजेक्ट बनाएं:

$ स्विफ्ट बिल्ड

अंत में, प्रोजेक्ट चलाएं, जो 0.0.0.0:8181 पते पर एक स्थानीय सर्वर चलाएगा

.बिल्ड/डीबग/परफेक्ट टेम्पलेट

आप पहले एक नया प्रोजेक्ट बनाकर Xcode पर अपना प्रोजेक्ट भी चला सकते हैं, जो इस प्रकार है:

$ स्विफ्ट पैकेज जनरेट-xcodeproj

Xcode के भीतर, सुनिश्चित करें कि प्रोजेक्ट बनाने और चलाने से पहले आपका निष्पादन योग्य लक्ष्य My Mac पर इंगित किया गया है।

निष्कर्ष

ओपन-सोर्स नेटवर्क में स्विफ्ट के आगमन ने क्लाइंट अनुप्रयोगों से परे स्विफ्ट समाधानों के लिए एक धक्का दिया है, जिसमें बैक-एंड सर्वर फ्रेमवर्क निम्नलिखित बाहरी इलाकों में बदल गया है। तीन प्रमुख परियोजनाओं - कुथरी द्वारा वाष्प, आईबीएम के किटुरा, और परफेक्ट द्वारा प्रेरित। सर्वर-साइड स्विफ्ट ने आईओएस (और मैकओएस) डेवलपर्स को पूर्ण-स्टैक डेवलपर बनने का अधिकार दिया है। यह Node.js, PHP या .NET बैक-एंड डेवलपर्स पर निर्भरता को नकार सकता है। सर्वर-साइड स्विफ्ट अतिरिक्त रूप से समूहों को फायरबेस या क्लाउडकिट जैसे मोबाइल बैक-एंड-ए-ए-सर्वर समाधान पर भरोसा किए बिना अपने बैक-एंड को नियंत्रित करने में सक्षम बनाता है।

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