ميكروسيرفيسات بلغة Kotlin: خارطة طريق للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا Kotlin هو الخيار الأفضل للميكروسيرفيسات في 2024؟

\n\n

هل سبق لك أن كتبت ميكروسيرفيس بلغة Python، ثم فكرت: "ماذا لو كان يعمل بشكل أسرع، ويستهلك ذاكرة أقل، مع بقاء الكود بنفس الوضوح؟" مألوف؟ إذن مرحبًا بك في عالم Kotlin - اللغة التي اختارتها Google لنظام Android، واختارها مجتمع مطوري الواجهة الخلفية لبناء ميكروسيرفيسات خفيفة وعالية الأداء.

\n\n

تتناسب Kotlin بشكل مثالي مع بنية الميكروسيرفيسات: فهي لغة ثابتة الأنواع (statically typed)، وتُترجم إلى كود بايت JVM (أو كود أصلي عبر Kotlin/Native)، ولكنها لا تتطلب قدرًا هائلاً من الكود التكراري (boilerplate) مثل Java. والأهم من ذلك - أن coroutines الخاصة بها تسمح بمعالجة آلاف الطلبات على خيط واحد دون ألم callback hell.

\n\n

في هذه المقالة، لن نلقي محاضرات نظرية. سنقوم بكتابة ميكروسيرفيسين: User Service (REST API) و Notification Service (محاكاة إرسال البريد الإلكتروني). كل ذلك بلغة Kotlin الخالصة + Ktor. هيا بنا!

\n\n

1. الأدوات: ما يجب تثبيته قبل البدء

\n\n

قبل كتابة الكود، دعنا نتأكد من أن جهاز الكمبيوتر الخاص بك جاهز للعمل.

\n\n

ما يجب تثبيته:

\n
    \n
  • JDK 17+ - يعمل Kotlin على JVM، لذا لا مفر من Java. يمكن التنزيل من Adoptium.
  • \n
  • IntelliJ IDEA Community Edition - أفضل بيئة تطوير متكاملة (IDE) لـ Kotlin (نعم، هي من JetBrains، ونعم، هي مجانية).
  • \n
  • Gradle (أو Maven) - نظام بناء. في IntelliJ، هو مدمج بالفعل، ولكن إذا كنت تريد تثبيته بشكل منفصل - gradle.org.
  • \n
  • Docker (اختياري، لكنه سيبسط النشر بشكل كبير).
  • \n
\n\n

إذا كان لديك macOS أو Linux - فأنت بالفعل في منتصف الطريق نحو النجاح. على Windows، أوصي باستخدام WSL2.

\n\n

2. إنشاء أول ميكروسيرفيس: User Service على Ktor

\n\n

Ktor هو إطار عمل من مبتكري Kotlin. إنه خفيف الوزن للغاية: أنت تقرر أي الوحدات (modules) تريد إضافتها (التوجيه، التسلسل، التسجيل). لا يوجد سحر - فقط كود نقي.

\n\n

2.1. توليد المشروع

\n

أسرع طريقة هي استخدام Ktor Project Generator. اختر:

\n
    \n
  • نظام البناء: Gradle Kotlin DSL
  • \n
  • المحرك: Netty (الأكثر شيوعًا)
  • \n
  • الإضافات: Routing, Content Negotiation (JSON), Status Pages
  • \n
\n

قم بتنزيل الأرشيف، وافتحه في IntelliJ - وبعد دقيقتين سيكون لديك هيكل عظمي جاهز.

\n\n

2.2. كتابة REST API: الحصول على المستخدمين

\n

سننشئ نموذجًا بسيطًا ونقطة نهاية (endpoint). سيكون الكود واضحًا قدر الإمكان:

\n\n
// Model.kt\ndata class User(\n    val id: Int,\n    val name: String,\n    val email: String\n)\n\n// UserRepository.kt\nobject UserRepository {\n    private val users = mutableListOf(\n        User(1, "Alice", "alice@example.com"),\n        User(2, "Bob", "bob@example.com")\n    )\n\n    fun findAll(): List<User> = users\n    fun findById(id: Int): User? = users.find { it.id == id }\n}\n\n// Application.kt (نقطة الدخول)\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        configureSerialization()\n        configureRouting()\n    }.start(wait = true)\n}\n\n// Routing.kt\nfun Application.configureRouting() {\n    routing {\n        route("/api/v1/users") {\n            get {\n                call.respond(UserRepository.findAll())\n            }\n            get("/{id}") {\n                val id = call.parameters["id"]?.toIntOrNull()\n                if (id == null) {\n                    call.respond(HttpStatusCode.BadRequest, "Invalid ID")\n                    return@get\n                }\n                val user = UserRepository.findById(id)\n                if (user != null) {\n                    call.respond(user)\n                } else {\n                    call.respond(HttpStatusCode.NotFound, "User not found")\n                

المدونات

توصيات الكتب