منذ أن عرفت Apple في الأصل Swift على أنها خليفة لـ Objective-C ، فقد غيرت كيفية رموز الشبكة لتطبيقات iOS و macOS و watchOS و tvOS.
في الوقت الذي تحولت فيه Swift إلى مرحلة مفتوحة المصدر ، فتحت نتائج جديدة يمكن تصورها للغة تتجاوز تطبيقات الهاتف المحمول والعميل. تحولت Swift إلى لغة جانب الخادم أيضًا. في هذا التمرين التعليمي ، ستدرك ماهية Swift من جانب الخادم ولماذا ستحتاج إلى وجود Swift في النهاية الخلفية.
يتم دفع نشاط Swift من جانب الخادم من خلال ثلاثة مشاريع بارزة هي Vapor بواسطة Qutheory و Kitura من IBM و Perfect ، بهدف منح مطوري Swift فرصة لإنشاء إدارات خلفية كاملة. سيؤدي هذا ، بشكل أساسي ، إلى تغيير هؤلاء المهندسين إلى مطورين مكدسين ، مما يؤدي إلى إبطال شرط الاعتماد على Node أو PHP أو توفير التحكم في مرحلة BaaS ، على سبيل المثال ، Firebase من Google.
أهداف هذه المادة
في هذه المقالة ، ستتعرف على Swift من جانب الخادم. سأوضح أولاً كيفية عمل Swift من جانب الخادم ، وبعد ذلك سأوضح لك أفضل الممارسات لتبدأ بأنظمة Kitura و Vapor و Perfect.
مقدمة من جانب الخادم Swift
تم الإعلان عن Swift لأول مرة بواسطة Apple في عام 2014 وسرعان ما انتهى بها المطاف بواحدة من أسرع لغات البرمجة تطوراً. تستمد Swift من أعداد هائلة من أفضل اللغات المعاصرة ، على سبيل المثال ، Python ، مما يتيح الأناقة وسهولة الاستخدام. إنه يحرر المهندسين من القيود المتخصصة في Objective-C ، مما يسمح بالعمل الغريزي والسيولة بشكل متزايد.
في ديسمبر 2015 ، أصدرت شركة Apple إعلانًا رائعًا آخر وجعلت لغة Swift جنبًا إلى جنب مع المكتبات الداعمة ومصحح الأخطاء ومدير الحزم مشروعًا مفتوح المصدر بموجب ترخيص Apache 2.0 ، مما أدى إلى فتح النظام الأساسي للأشخاص بشكل عام لتقديم طلب السحب والمساهمة. إن الانتقال بعيدًا عن Objective-C لم يغري فقط العديد من مطوري Objective-C الذين يساهمون في App Store ، ولكنه جعل الأمر أسهل للمطورين من جميع المهارات والأسس لدخول نظام Apple البيئي باستخدام Swift.
على أي حال ، في حين أن أجهزة التقدم من Apple قد سهّلت بشكل يمكن التحقق منه للمطورين تطوير تطبيقات مقنعة وجذابة خارجيًا لمتجر App Store ، كانت إحدى العقبات البارزة هي أن المشاريع لا تزال تتطلب مطورين متخصصين للجهة الخلفية لتطوير تطبيقات معقدة تعتمد على المعلومات. لذلك سيحتاج مطورو iOS و macOS إما إلى الاستفادة من مطوري Python أو PHP أو Node لإنشاء قاعدة بياناتهم الخلفية أو الحصول على القدرة بأنفسهم ، مما يؤدي إلى مهمة متبقية أثقل تمامًا في متناول اليد لإنهاء أهداف التعهد الخاصة بهم.
على الرغم من أن Back-end as-a-service (BaaS) قد لعبت دور البطل لمطوري iOS ، مع حلول خلفية لا تحتوي على كود ، على سبيل المثال ، Firebase من Google و CloudKit الخاص بشركة Apple والذي يخفف من تعقيدات الواجهة الخلفية ، العديد من المجموعات والمشاريع تطلب المزيد. هذا هو المكان الذي يأتي فيه Swift من جانب الخادم ، مما يتيح لك إنشاء خادم خلفية متعدد الخيوط بالكامل مفتوح المصدر وقابل للتكوين بشكل لا نهائي.
يمنحك Swift من جانب الخادم فرصة لاختيار كيفية حصولك على خادمك الخلفي ، بغض النظر عما إذا كان مع AWS أو RackSpace أو الخوادم الفعلية الخاصة بك. يمكنك أيضًا اختيار كيفية تحميل موازنة الخوادم (على سبيل المثال عن طريق حلول الخادم البارزة ، على سبيل المثال ، NGINX) وكيفية متابعة معلوماتك في قاعدة بيانات (سواء كانت ترتيبات NoSQL ، على سبيل المثال ، MongoDB ، أو قواعد البيانات التقليدية ، على سبيل المثال أو Postgres أو MySQL أو Oracle). هذا ، بالإضافة إلى أنك غير مرتبط مطلقًا بترتيب جزء واحد ، يمكنك التبديل دون التأثير على قاعدة رموز التطبيق بالكامل.
حقيقة الأمر هي أنه من خلال اتخاذ قرار بشأن ترتيب Swift مفتوح المصدر من جانب الخادم ، على سبيل المثال ، Vapor by Qutheory أو Kitura من IBM أو Perfect ، فإنك تستغل مجموعة كبيرة من الوحدات النمطية التي تمكنك من تصميم الواجهة الخلفية الخاصة بك فقط بالطريقة التي تحتاجها ، والاستفادة من نطاق قدرات مجموعتك الحالية في Swift للقيام بذلك.
يبدو Swift من جانب الخادم مقنعًا تمامًا ، ولكن ما هي البنية المثالية بالنسبة لك؟ بعد ذلك نقوم بالتحقيق في كل واحد ، بدءًا من Kitura.
تبدأ مع كيتورا
بدءًا من Kitura ، لديك مرحلة تم تفريغها لأول مرة في فبراير 2016 واكتسبت جودة لا لبس فيها بعد ذلك بوقت قصير في WWDC من Apple ، وتحدث عن غزو IBM لدعم الويب من جانب الخادم باستخدام Swift ، والذي تم تعيينه بعد ذلك للانتقال من أيدي Apple إلى المصدر المفتوح.
كقاعدة عامة ، يتمحور Kitura حول التقاليد على التكوين. يقوم ببناء مشروعك الأساسي باستخدام بذرة ، قبل تحديد الأطر والمكتبات الصريحة التي تأمل في بنائها. يتم دعم عملية مصادقة Kitura من خلال إطار عمل البرنامج الوسيط Kitura-Credentials الخاص بها بشكل استثنائي ، مما يتيح لك إلقاء نظرة على مجموعة من أنظمة التحقق ، من اسم المستخدم / كلمة المرور التقليدية إلى تسجيل الدخول إلى الشبكات عبر الإنترنت والتحقق الموحد ، باستخدام OpenID الذي يتعامل مع رموز ويب JSON (JWT) .
يتم التحكم في ترتيب ORM لقاعدة بيانات Kitura بواسطة Kuery لخلط تعقيدات إدارة SQL على وجه التحديد ، ودعم قواعد البيانات المنطقية الأساسية ، على سبيل المثال ، MySQL و SQLite و PostgreSQL محليًا ، بالإضافة إلى ترتيبات قواعد البيانات الأخرى ، بما في ذلك قواعد بيانات NoSQL ، من خلال المكونات الإضافية الأخرى المختلفة.
يوفر Kitura أيضًا إضافات قيمة أخرى للأشياء ، على سبيل المثال ، قوالب HTML ، باستخدام المكونات الإضافية المعروفة ، على سبيل المثال ، Stencil و Markdown. نظرًا لأن النظام من جانب الخادم ، الذي نشأ من شركة IBM ، يحقق أرباحًا إضافية من خلال الاتصال بواجهات برمجة تطبيقات IBM Watson API ، بالإضافة إلى منح دعم macOS للتنسيق المباشر في نظام Bluemix السحابي الخاص بهم. يمنحك هذا خيارًا إضافيًا متاحًا لك ، جنبًا إلى جنب مع بدائل النشر التقليدية الأخرى الخاصة بك بالعرض عبر خوادم Linux / Unix و macOS.
بينما يوفر النظام الأساسي مجموعة غير عادية من الميزات من Kuery إلى القدرة على الدمج مع مكتبات IBM API المختلفة. ليس لديها نفوذ الشبكة الذي يمتلكه Vapor. يتطلب تلقي Kitura الاعتراف بأساليبها غير المعتادة الخاصة بها وإدراكها ، من كيفية عمل Kuery إلى آلية المصادقة الخاصة بها. على أي حال ، نظرًا لأنه ترعاه منظمة واسعة النطاق مع التركيز على المسعى ، فهناك بعض التأكيدات التي تعمل على ختم المستقبل.
تركيب وتشغيل كيتورا
أسهل طريقة للبدء هي استخدام واجهة خط اتجاه Kitura (CLI) ، المدعومة على كل من macOS و Linux. باستخدام أداة Homebrew المعروفة لإدارة الحزم ، قم بتثبيت Kitura و Kitura CLI عن طريق إدخال ما يلي:
المشروب اضغط ibm-swift / kitura المشروب $ installkitura |
داخل منظم شاغر ستستخدمه كمشروعك ، قم بتشغيل المصاحب لتأسيس تعهدك:
الحرف الأول كيتورا $
عند الانتهاء من إنشاء تطبيق الهيكل العظمي الخاص بك ، سترى مشروعًا آخر يسمى HelloKitura.xcodeproject. يمكنك معرفة المزيد عن إنشاء المشروع من خلال مراجعة وثائق Kitura. يمكنك فتح المشروع الذي تم إنشاؤه مؤخرًا في Xcode وتغيير فئة التطبيق الأساسية ، Application.swift ، للتعامل مع جميع المكالمات إلى جذر الخادم الخاص بك https: // localhost: 8080 / URL :
// معالجة طلبات HTTP GET إلى "/"
router.get ("/") {request، response، next in
response.send ("Hello، World!")
التالي()
}
تتفاعل قطعة الكود أعلاه من خلال استعادة نموذج Hello، World! . قبل أن تتمكن من تشغيل المشروع أخيرًا ، قم بتغيير مخطط Xcode للإشارة إلى HelloKitura (مشروعك النشط) ، وابدأ تعهدك بالضغط على Command-R . أثناء تشغيل الخادم الخاص بك ، في متصفح من اختيارك ، انتقل إلى https: // localhost: 8080 وسترى عالم الترحيب في متصفحك.
نبدأ بالبخار
تم إصداره بعد شهرين من Kitura ، في سبتمبر 2016 ، يعتبر Vapor by Qutheory بشكل عام الأبرز فيما يتعلق بحجم المجتمع وعدد الوحدات. إنه مبني على إطار عمل Swift-nio من Apple ، مما يجعله قوة تنفيذ حقيقية. ليس تمامًا مثل Kitura والمراحل المختلفة ، والتي لم يتم تصنيعها ببساطة في Swift ولكن بدلاً من ذلك على Node.js أو محلل شخص متوسط آخر ، يفصل Vapor نفسه عن أي من تلك التبعية لتقديم محلل Swift وإعطاء واجهات برمجة تطبيقات واضحة ومتماسكة.
يوفر Vapor مساعدة شاملة لقواعد البيانات لبائعي SQL ، على سبيل المثال ، MySQL و PostgreSQL ، وبائعي NoSQL ، على سبيل المثال ، Redis و MongoDB ، مثل Kitura. على الرغم من أن Kitura لديها حلول Kuery ORM الخاصة بها ، إلا أن Vapor تستفيد من Fluent ORM لدعم قواعد البيانات التي أشرت إليها للتو ، مما يجعل من السهل إلى حد ما توسيع ORM لموفري قواعد البيانات الآخرين. يعزل Vapor نفسه عن الأطر البديلة في دعم خدمة الإشعارات الفورية من Apple ، كما يدعم SMTP لدفع إشعارات البريد الإلكتروني.
بينما تقوم Kitura بتحقيق إطار المصادقة الخاص بها ، تمتلك Vapor مكتبة مصادقة Stormpath's Turnstile مخبوزة في الأصل. مثل Kitura ، تدعم المنصة أيضًا إغراءات Moustache و Markdown ، بالإضافة إلى لغة النماذج التعبيرية الأصلية Swift الخاصة بها ، ترافق Vapor أيضًا محرك CLI الخاص بها مثل إطار Swift من جانب الخادم الآخر ، مع القدرة على توسيع أمر التطبيق وسيطات خطية مع أعلام مخصصة.
التثبيت والتشغيل
لتبدأ بـ Vapor ، تبدأ بتثبيت مجموعة أدوات Vapor ، والتي تتكون من جميع تبعيات المكتبة وصندوق أدوات CLI. قم بتثبيته مع Homebrew عن طريق إدخال ما يلي في الجهاز:
المشروب $ installvapor / tap / vapor
عند انتهاء التثبيت ، يمكنك تأكيد تثبيت Vapor بنجاح عن طريق كتابة vapor— help. لإنشاء مشروع ، اكتب ما يلي ، مع استبدال اسم المشروع الخاص بك:
بخار $ جديد
سيقوم محرك البخار ببناء هيكل مجلد يشبه ما يلي:
├── عام
├── المصادر
│ ├── التطبيق
│ │ ├── وحدات تحكم
│ │ ├── النماذج
│ │ ├── boot.swift
│ │ ├── config.swift
│ │ └── route.swift
│ └── تشغيل
│ └── main.swift
├── الاختبارات
│ └── AppTests
└── Package.swift
لإنشاء مشروع Xcode فعليًا ، ستحتاج أيضًا إلى إدخال الأمر التالي صراحة ، من داخل مجلد المشروع:
$ بخار xcode
أخيرًا ، لإنشاء مشروعك وتشغيله ، من Xcode ، حدد مخطط التشغيل وكذلك الجهاز المستهدف للتطوير في My Mac ، وبعد ذلك اضغط على الزر Run كما تفعل مع أي مشروع Xcode آخر. نظرًا لأن مشروع Xcode الخاص بك لا يواجه أي أخطاء ، يجب أن ترى رسالة التأكيد التالية في الجهاز:
يبدأ الخادم على https: // localhost: 8080
انطلق وأدخل عنوان URL هذا في أي متصفح ، وسترى تطبيقك قيد التشغيل.
تبدأ بالكمال
أخيرًا ، نلقي نظرة على Perfect by PerfectlySoft ، وهي منصة غنية بالميزات من جانب الخادم مثل Vapor و Kitura. يشتمل Perfect على أجراس وصفارات قياسية مماثلة قد تكتشفها على البائعين السابقين ، من القوالب باستخدام Moustache أو Markdown إلى الشبكات مع مآخذ الويب ، بالإضافة إلى Apple Push Notification و SMTP.
مثل النظام الأساسي الآخر من جانب الخادم ، تمتلك Perfect تطبيق ORM الخاص بها ، منصة StORM (Perfect StORM) ، والتي تقدم دعمًا أصليًا لـ MySQL و PostgreSQL وقواعد البيانات العلائقية البارزة الأخرى ، بالإضافة إلى MongoDB و Redis وحلول NoSQL الأخرى. أحد الاستثناءات البارزة من Perfect هو CLI ، لكن إطار العمل يعوض عن ذلك باستخدام تطبيق macOS أصلي.
مثل Vapor ، تمتلك Perfect أيضًا Turnstile لتشغيل آلية المصادقة الخاصة بها ، والتي تم تمديدها للتفاعل مع StORM بشكل أكثر حميمية. هناك مؤهل آخر يتمتع به هذا الترتيب على الآخرين وهو موجود في الكثير من مكتبات المرافق الأصلية التي يدعمها ، بما في ذلك غلاف cURL الفريد من نوعه والأدوات الإضافية للعمل مع الملفات والمجلدات. قاعدة مطوري Perfect هي ثاني أكبر قاعدة ، وتواكب تقريبًا Vapor's ، مما يعني أن لديك مجتمعًا قويًا لدعم هذه المنصة ، جنبًا إلى جنب مع مجموعة غنية من الموارد التعليمية التي تمنحك اليقين في حالة عدم اختيارك لها.
التثبيت والتشغيل
إن بدء العمل مع Perfect أمر بسيط للغاية. في البداية ، قم باستنساخ PerfectlySoft repo ، عن طريق إدخال ما يلي:
استنساخ git $ https://github.com/PerfectlySoft/PerfectTemplate.git
من داخل المجلد المستنسخ ، قم ببناء المشروع:
بناء سريع
أخيرًا ، قم بتشغيل المشروع ، والذي سيقوم بتشغيل خادم محلي على العنوان 0.0.0.0:8181
.build / debug / PerfectTemplate
يمكنك أيضًا تشغيل مشروعك على Xcode عن طريق إنشاء مشروع جديد أولاً ، على النحو التالي:
حزمة سريعة $ تولد xcodeproj
داخل Xcode ، تأكد من توجيه هدفك القابل للتنفيذ إلى My Mac ، قبل إنشاء المشروع وتشغيله.
استنتاج
دفع وصول Swift إلى الشبكة مفتوحة المصدر إلى دفع حلول Swift تتجاوز تطبيقات العميل ، مع تحول أطر الخادم الخلفية إلى الأطراف التالية. مدفوعة بثلاثة مشاريع بارزة - Vapor by Qutheory و Kitura من IBM و Perfect. لقد مكنت Swift من جانب الخادم مطوري iOS (و macOS) من أن يصبحوا مطورين متكاملين. يمكن أن يؤدي ذلك إلى إبطال الاعتماد على مطوري Node.js أو PHP أو .NET. بالإضافة إلى ذلك ، يتيح Swift من جانب الخادم للمجموعات التحكم في واجهتها الخلفية دون الحاجة إلى الاعتماد على حل خلفية الهاتف المحمول كخادم مثل Firebase أو CloudKit.
Swift من جانب الخادم ليس مناسبًا للجميع ، فأنت بحاجة إلى تسوية مقدار التحكم الذي تحتاجه للجهة الخلفية الخاصة بك ، وما إذا كان من المنطقي بالنسبة لك أن تدحرج بنفسك. بالإضافة إلى ذلك ، لم أحاول إخبارك عن حل Swift من جانب الخادم المثالي. يتلف المطورون بلا شك لاتخاذ القرار ، ويعطي كل واحد منهم تجربة فريدة وناضجة ويستحق التجربة. أود أن أحثك على اللعب مع كل رمز من الأمثلة ، وتقييم بنية اللغة ، والتواصل مع مجتمعاتهم الخاصة لمعرفة الحل الأنسب لك.