معرفی و بررسی Frameworkهای Server-Side Swift (قسمت دوم Kitura)

فریمورک بعدی که به معرفی آن میپردازم Kitura هستIBM Kitura2- Kituraشرکت IBM در سال ۲۰۱۶ فریمورک Kitura را معرفی کرد که درحال حاضر سومین فریمورک پر طرفدار Swift با حدود ۷۰۰۰ ستاره در گیت‌هاب است. بین ۳ شرکت کننده اصلی سوم شده! ;) مهمترین نقطه قوت این فریمورک وجود غولی به نام IBM در کنار آن است. اگر دنبال فریمورکی با پشتیبانی کامل و ۲۴ ساعته هستین IBM این امکان را به شما میدهد و میتونین با خیال راحت توسعه پروژه خود با این فریمورک را شروع کنید و از بر خوردن به مشکل در طول کار ترسی نداشته باشین. از طرفی با استفاده از سرویس IBM Cloud به راحتی میتونین پروژه‌ Kitura ی خودتون رو به سرورهای ابری IBM منتقل کنین و دردسر نصب و راه اندازی روی سرور خودتون رو نداشته باشین. قطعا کسانی که برنامه نویسی Server-side انجام داده اند با مشکلات deploy کردن پروژه خود بر روی سرور آشنا هستند و میدونن که وجود سرویسی که پروژه رو به راحتی و بدون دردسر به سرور منتقل رو راه اندازی کنه نعمت بزرگیه!تعدادی از امکاناتی که IBM Cloud به پروژه های Kitura میده:Health (API)یک API کامل برای بررسی وضعیت برنامه‌های موجود در سرورCloudEnvironmentامکان دسترسی ساده و راحت به Environmental Variables به فرمت JSONSwiftMetricsابزاری برای بررسی و مدیریت وضعیت کارایی برنامه‌های روی سرور که هم به صورت پنل مدیریتی و هم به صورت API در اختیار شما قرار داده میشه.Kitura-OpenAPIبه راحتی API های نوشته شده در Kitura را به فرمت Swagger تبدیل میکندSwiftyRequestکتابخانه HTTP Networking برای فرستادن درخواست ها (Requests) توسط Swiftعلاوه بر آن IBM ابزار جدیدی به نام KituraStudio معرفی کرده است که البته در حال حاضرنسخه بتای آن منتشر شده است. KituraStudio یک IDE کامل برای زبان Swift و استفاده از Kitura است. اگر بر روی لینوکس برنامه نویسی میکنین و به همین دلیل امکان استفاده از XCode رو ندارین حتما از این ابزار استفاده کنین.فریمورک Kitura از نسخه 2.5.0 به بعد، از Swift-NIO استفاده میکنه که البته به صورت دلخواه میتونین استفاده از آن رو در پروژه روشن یا خاموش کنین. (برای آشنایی بیشتر با Swift-NIO). کتابخانه های از پیش نوشته شده در این فریمورک :Credentials (Kitura, HTTP, Facebook, Twitter, Dropbox, GitHub, Google) Template Engine (Mustache, Stencil, Markdown) JSON Encoding/Decoding (via Swift's Codable)LoggerJWTCache and CompressionProcess ManagementSessions (Web, Redis)URL RoutingWebsocketsاز لحاظ ارتباط با دیتابیس از اکثر دیتابیس های معمول بازار پشتیبانی میکنه.MySQL PostgreSQL MongoDB SQLite Redis CouchDBکیتورا ابزاری ساده ای برای مدیریت پروژه از طریق Command Line دارد که فعلا بیش از چند دستور ساده ندارد ولی برای ساختن پروژه خالی، کامپایل و deploy کردن به IBM Cloud کفایت میکنه. کتابخانه ORM این فریمورک Kuery نام داره و همین طور که در بالا اشاره شد از تعداد خوبی از دیتابیس ها پشتیبانی میکنه و از تقریبا از تمامی دستورات SQL پشتیبانی میکنه. استفاده از Kuery نیاز شما رو از نوشتن دستورات به صورت Raw SQL Query واقعا بی نیاز میکنه. اگر در هنگام توسعه یک پروژه یا پس از اتمام آن مجبور به تغییر دیتابیس مورد استفاده در پروژه تون شده باشین، میدونین که بزرگترین مشکل شما تغییر تمامی کوئری هایی هست که به صورت Raw نوشته شده باشن و از ORM استفاده نشده باشه. پس وجود یک کتابخانه ORM کامل، فوق العاده بدرد بخوره. برای تولید محتوای HTML کیتورا از فرمت های Mustache, Stencile و Markdown پشتیبانی میکند و خودش اقدام به تولید سیستم Template جدیدی نزده. از اونجایی که این فرمت ها بسیار شناخته شده هستن کار شما برای تولید محتوای HTML ساده است. نقاط قوتمهم ترین نقطه قوت Kitura وجود سرویس IBM Cloud است. وجود اینچنین سرویسی زحمت‌های راه‌اندازی و نگهداری سرور را از روی دوش شما بر میدارد و تمام انرژی تون رو میتونین صرف نوشتن کد‌های اصلی پروژه بکنین. (البته این مورد در ایران خیلی نقطه قوت محسوب نمیشه چون IBM این سرویس‌ها رو به ایران نمیده!)وجود پشتیبانی کامل توسط تیم Kitura و IBM-Swift به صورت ۲۴ ساعته. (با پرداخت هزینه)از انجایی که Kitura توسط IBM توسعه داده شده و مثل بسیاری از پروژه های متن باز مشکل پیدا کردن حامی (Sponsor) رو نداره، آینده روشنی براش پیش بینی میشه. و میتونین با خیال راحت پروژه‌ها تون رو با این فریمورک شروع کنین.نقاط ضعفدر بین تمام فریمورک های Swift ، باید گفت که Kitura کوچکترین Community رو داره. گروه مربوط به این فریمورک در Slack کمتر از ۳۰۰۰ عضو دارد و به همین دلیل سوالهای شما در این گروه ها به سرعت پاسخ داده نخواهد شد. به همین دلیل شروع به کار با کیتورا برای اشخصاصی که امکان پرداخت هزینه پشتیبانی IBM رو ندارن مشکل هست.