ASP.net core web api
354 subscribers
37 photos
3 videos
3 files
32 links
قناة  تليجرام عربية متخصصة في بناء API بواسطة  ASP.net core و sql server

يمكنك بناء اي مشروع بأي فكرة كانت وعلى اي لغة بناء واجهات بواسطتها

ويمكن ربطها معا Flutter وغيرها بكل سهولة
Download Telegram
أولاً: JWT (JSON Web Token)

JWT هو معيار مفتوح لنقل المعلومات بين طرفين (Client Server) بشكل آمن نسبيًا.
الـ JWT يتكون من ثلاثة أجزاء:

Header: يحدد نوع التوكن وطريقة التشفير (مثل HS256).

Payload: يحتوي البيانات (Claims) مثل: userId, email, exp.

Signature: توقيع للتحقق أن التوكن لم يتم التلاعب به.

كيف يشتغل؟

المستخدم يسجل دخول بإسم المستخدم وكلمة المرور.

السيرفر يتأكد من صحة البيانات ويولد JWT موقّع.

التوكن يُرسل للعميل ويُخزن عادة في LocalStorage أو Cookies.

عند كل طلب جديد، العميل يرسل JWT في الـ Authorization Header.

السيرفر يتحقق من التوقيع ويقرر قبول أو رفض الطلب.

ميزة JWT: إنه "stateless" يعني السيرفر ما يحتاج يخزن جلسة لكل مستخدم.
مثال واقعي:

في تطبيقات مثل Netflix أو Spotify، بعد ما تسجل دخول، التوكن يحملك معك في كل طلب (تشغيل فيلم/أغنية).

ثانياً: PASETO (Platform-Agnostic Security Tokens)

PASETO هو بديل حديث لـ JWT، صمم لحل مشاكله. فكرته الأساسية: فرض استخدام خوارزميات آمنة بشكل افتراضي.
مكوناته الرئيسية:

Version (V1 أو V2).

Purpose (Public أو Local).

Payload (مشفر أو نص عادي).

أنواع PASETO:

Public PASETO: موقع (Signed) بمفتاح خاص/عام → يضمن سلامة البيانات لكن ليس سريتها.

Local PASETO: مشفر (Encrypted) بمفتاح سري → يضمن سرية البيانات.

كيف يشتغل؟

المستخدم يرسل بياناته.

السيرفر يولد PASETO بالتشفير المناسب.

العميل يرسل التوكن عند الطلبات.

السيرفر يفتح التوكن ويتحقق منه باستخدام المفتاح الصحيح.

ميزة PASETO: ما يسمح باستخدام خوارزميات ضعيفة مثل HS256، بل يفرض خوارزميات حديثة (ChaCha20-Poly1305, Ed25519).
مثال واقعي:

في تطبيقات البنوك أو أنظمة الدفع مثل PayPal أو Stripe، حيث أمان البيانات أهم من كل شيء، PASETO يوفر تشفير افتراضي أقوى.

الميزات والعيوب

ميزات JWT:

سهل الاستخدام ومدعوم في كل اللغات والأطر (Node.js, ASP.NET, Django...).

مناسب للتطبيقات الكبيرة (API, Microservices).

واسع الانتشار وموثق بشكل ضخم.

عيوب JWT:

يسمح باستخدام خوارزميات غير آمنة (مثل none, HS256 إذا أسيء استخدامها).

لا يشفر البيانات، فقط يوقعها → أي شخص معه التوكن يقدر يقرأ الـ Payload.

إذا تسرب التوكن، ما تقدر تبطله إلا بتغيير الـ secret أو عمل Blacklist.

ميزات PASETO:

أمان أفضل بخيارات افتراضية قوية (secure by default).

يدعم التوقيع والتشفير معًا (Integrity + Confidentiality).

يقلل من الأخطاء الأمنية الناتجة عن سوء اختيار الخوارزميات.

عيوب PASETO:

جديد نسبيًا → أقل انتشارًا وأدواته أقل من JWT.

بعض المكتبات والأنظمة لا تدعمه بشكل مباشر.

التعلم عليه أصعب شوية للمطورين الجدد.

تشبيه واقعي مبسط

JWT زي مفتاح إلكتروني لباب الفندق: يفتح لك الباب لكن أي شخص يشوف المفتاح يعرف رقم غرفتك وتاريخ صلاحيتك.

PASETO زي مفتاح مشفر: حتى لو أحد سرقه، ما يعرف التفاصيل لأنه التوكن نفسه مشفر ومبني بخوارزميات أقوى.
مشهد بروتوكولات الـAPI اليوم — شرح عملي ومفصّل
مشهد بروتوكولات الـAPI اليوم — شرح عملي ومفصّل

هناك ستة بروتوكولات/أنماط هي الأكثر حضورًا عند بناء تكاملات وخدمات حديثة: REST، Webhooks، GraphQL، SOAP، WebSocket، gRPC. تحتها تظهر تقنيات مكملة مثل SSE، MQTT، AMQP وأنماط معمارية مثل EDA، ومعايير تبادل أعمال قديمة مثل EDI. فيما يلي شرح مركز مع متى تستخدم كل خيار ولماذا.

1) REST

ما هو؟ أسلوب معماري فوق HTTP (GET/POST/PUT/DELETE…) للتعامل مع “موارد” لها عناوين URL وتمثيلات JSON.
يناسب عندما:

CRUD على بيانات واضحة الكيانات: Users, Orders, Invoices…

واجهات عامة/شركاء يسهل عليهم الاستهلاك.

الحاجة للتخزين المؤقت (caching) وسياسات HTTP القياسية.

المزايا: بسيط، واسع التبني، أدوات غنية (OpenAPI/Swagger)، يسهل نسخه عبر المتصفّح وPostman.
التحديات: تجميع بيانات متعددة في طلب واحد قد يتطلب عدة مكالمات؛ التحميل الزائد/الناقص (over/under-fetch).
ملاحظات تصميم مهمة: ترقيم الإصدارات، معرّفات ثابتة، Idempotency-Key للعمليات الحسّاسة (مثل الدفع)، واستخدام ETag وCache-Control.

2) Webhooks

ما هو؟ نداء عكسي ترسله خدمتُك إلى URL يملكه الطرف الآخر عند وقوع حدث (payment.succeeded مثلًا).
يناسب عندما:

إعلام الأنظمة الشريكة بالأحداث فورًا بدون polling.

تكاملات ماركت بليس/بوابات دفع/مستودعات.

المزايا: آني، يقلّل الاستعلامات المتكررة.
التحديات: الاعتمادية (إعادة المحاولة مع backoff)، الأمن (توقيع HMAC وسرّ مشترك)، ترتيب الرسائل.
أفضل الممارسات:

توقيع كل رسالة وإرفاق timestamp لمنع إعادة التشغيل.

Retry-After + DLQ عند الفشل.

صفحة لإدارة الاشتراكات وHealth checks.

3) GraphQL

ما هو؟ طبقة استعلام تتيح للعميل طلب “بالضبط” الحقول التي يريدها عبر مخطط (Schema) موحّد.
يناسب عندما:

واجهات غنية (ويب/موبايل) تحتاج جمع بيانات من خدمات متعددة بكفاءة.

تقليل عدد الطلبات وتكييف الاستجابة بحسب شاشة العميل.

المزايا: تحكم دقيق في البيانات، نوعية قوية (strongly-typed schema)، introspection، توحيد بوابة بيانات.
التحديات: الحماية من الاستعلامات المكلفة (كسارة/عمق/تعقيد)، التخزين المؤقت أصعب من REST، أدوات رصد خاصة.
ملاحظات: استخدم حدودًا (limits) وquery cost، وPersisted Queries، وDataLoader لتجميع الاستدعاءات.

4) SOAP

ما هو؟ بروتوكول XML صارم مع WSDL وعمليات محددة، شائع في الأنظمة المؤسسية القديمة والجهات الحكومية.
يناسب عندما:

التكامل مع أنظمة قديمة/جهات رسمية لا تدعم إلا SOAP.

احتياج لميزات معيارية مثل WS-Security وTransactions.

المزايا: مواصفات أمنية وتعاملات قوية تاريخيًا.
التحديات: ثقل XML، صعوبة على فرق حديثة، بطء التطوير مقارنةً بـ REST/JSON.

5) WebSocket

ما هو؟ قناة ثنائية الاتجاه طويلة العمر فوق TCP (تبدأ عبر Handshake HTTP)، مناسبة للتحديث الفوري.
يناسب عندما:

محادثة فورية، لوحات حيّة، تعقّب مواقع، ألعاب.

الحاجة لبث من الخادم للعميل والعكس دون فتح طلبات متكررة.

المزايا: زمن كمون منخفض، ثنائية الاتجاه حقيقية.
التحديات: التوسّع والأمان (جلسات طويلة)، التوافق مع شبكات/Proxies، السقوط والعودة (reconnect) مع استئناف الحالة.
بدائل أخف: SSE عندما تحتاج بثًا من الخادم للعميل فقط.

6) gRPC

ما هو؟ إطار RPC عالي الأداء يعتمد HTTP/2 وProtocol Buffers للتسلسل (binary).
يناسب عندما:

اتصالات خدمة-إلى-خدمة (microservices) داخل الشبكة.

حاجات أداء عالية وبث ثنائي الاتجاه، وتعريف واجهات بنوعية صارمة.

المزايا: سريع جدًا، مخططات مُولِّدة للشيفرة، Streams، ضغط فعّال.
التحديات: أقل ملاءمة للمتصفح مباشرة (يُستخدم gRPC-Web)، أدوات تصحيح أقل بساطة من REST.
ملاحظات: أبقه داخليًا، وقدّم بوابة REST/GraphQL خارجية للاستهلاك العام.

تقنيات مُكمِّلة مذكورة في الرسم

SSE (Server-Sent Events): بث أحادي الاتجاه من الخادم للمتصفح عبر HTTP عادي؛ ممتاز للتحديثات الحيّة البسيطة والتنبيهات ولوحات الرصد عندما لا تحتاج قنوات ثنائية الاتجاه كاملة مثل WebSocket.

MQTT: بروتوكول Pub/Sub خفيف للشبكات غير المستقرة وIoT.

AMQP (مثل RabbitMQ): معيار رسائل للمؤسسات (صفوف، تبادل، توجيه) لتكامل غير متزامن وإزالة الازدحام عن الـAPI.

EDA (Event-Driven Architecture): نمط معماري يبني النظام حول أحداث ونواقل رسائل؛ غالبًا يستخدم AMQP/Kafka وWebhooks.

EDI: معايير قديمة لتبادل مستندات الأعمال (فواتير، أوامر شراء) بين مؤسسات؛ ما يزال موجودًا في سلاسل الإمداد.

كيف تختار؟ (دليل قرار سريع)

CRUD قياسي وواجهة للعامة → REST.

تجميع بيانات من خدمات متعددة وتقليل عدد الطلبات لواجهات غنية → GraphQL.

تنبيه الأطراف الخارجية عند وقوع حدث → Webhooks (+ توقيع HMAC وإعادة المحاولة).
1
بث فوري أحادي الاتجاه للمتصفح (تنبيهات/لوحات) → SSE، وإن احتجت محادثة/تفاعل ثنائي الاتجاه → WebSocket.

تواصل داخلي عالي الأداء بين الميكروسيرفس → gRPC.

تكاملات حكومية/قديمة تُلزِم XML/WSDL → SOAP.

أنظمة IoT أو شبكات ضعيفة → MQTT.

مهام غير متزامنة مرتّبة وضمان التسليم → AMQP مع طوابير ورسائل معاد محاولة.

اعتبارات أمان وأداء مشتركة

المصادقة والتفويض: OAuth2/OIDC للواجهات العامة، مفاتيح خدمة + mTLS بين الخدمات، وتوقيع Webhooks.

الاعتمادية: Idempotency في العمليات الحساسة، سياسات Retry مع Backoff، ورسائل “مرة واحدة على الأكثر/الأقل”.

الرصد: تتبّع موزّع (Trace/Span IDs)، قياسات Latency/Throughput/Error Rate، وسجلات غنية.

التوافق والتخزين المؤقت: REST يستفيد من Cache طبقة HTTP؛ GraphQL يحتاج إستراتيجيات خاصة؛ gRPC يعتمد عادةً على Cache طبقة التطبيق.

الإصدارات: حافظ على توافق خلفي؛ استخدم Versioning للـREST وSemVer لملفات proto وGraphQL deprecations.

توصية تطبيقية لنظام مثل Genius Link (محاسبي متعدد المستأجرين)

واجهة عامة للمطورين والعملاء: REST موثّق بـ OpenAPI.

لوحات داخلية غنيّة/تجميع بيانات متعددة: GraphQL Gateway داخلي للواجهات.

تنبيهات فورية (سند قُبِض/فاتورة دفعت): Webhooks للشركاء + SSE/WebSocket لتطبيقات الويب.

تكاملات حكومية/بنكية قديمة: SOAP/EDI عند الاضطرار.

بين الخدمات (حسابات/مدفوعات/تحليلات): gRPC داخل الشبكة + AMQP لطوابير المهام.

موبايل وشبكات ضعيفة: فكّر في مزج REST مع تخزين محلي ومزامنة، وMQTT إذا ظهرت سيناريوهات اتصال متقطع.
التحكّم في الوصول يحدّد من يدخل ومن يُمنع — لكن القواعد تختلف:

التحكّم المستند للأدوار (RBAC): الوصول مبني على أدوار (مثل: Maintainer, Viewer). بسيط وقابل للتوسّع.

التحكّم المستند للسمات (ABAC): الوصول مبني على سمات/خصائص (مستخدم، مورد، بيئة). مرن جدًا، لكنه أعقد.

قوائم التحكم بالوصول (ACL): أذونات صريحة لكل مستخدم أو مجموعة. مباشر، لكن يصعب إدارته على نطاق واسع.


RBAC = أدوار.
ABAC = سمات.
ACL = أذونات صريحة.

سؤال للتفكير: هل اضطررت يومًا للانتقال من نموذج لآخر؟ ما الذي دفعك للتغيير؟
2
لبنات بناء الشبكات الحديثة
كل شبكة حديثة — من واي-فاي المنزل إلى بنية السحابة العالمية — تُبنى على عدد قليل من المكوّنات الأساسية. إليك لمحة سريعة عنها:

الشبكات الأساسية (Core Networking):
المحوّل (Switch) يَصل الأجهزة داخل نفس الشبكة المحلية. كل مكتب يضم العشرات منه.
الموجّه (Router) يُمرّر الحزم بين الشبكات المختلفة. هو بوابتك للإنترنت وما بعده.
SD-WAN هي طريقة الشركات الحديثة لربط الفروع. معرفة بالبرمجيات، مرنة، وأقل تكلفة بكثير.