WebAssembly وC#: لماذا يحتاجها المطور الحديث

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

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

ابدأ الدورة

عندما يلتقي C# مع WebAssembly: عصر جديد لتطوير الويب

\n\n

تخيل عالماً حيث يمكنك أخذ لغة C# المفضلة لديك، كتابة خوارزمية معقدة لمعالجة الصور، ترجمتها وتشغيلها مباشرة في المتصفح - بأداء قريب من الأداء الأصلي. هل يبدو هذا كخيال علمي؟ لا، ليس كذلك. هذه هي WebAssembly (أو Wasm ببساطة) - تقنية تقلب المفاهيم حول ما يمكن فعله على الويب.

\n\n

كنت متشككاً بنفسي حتى جربتها. لفترة طويلة، بدا أن JavaScript هي اللغة الوحيدة للمتصفح. لكن الأوقات تتغير. اليوم، نحن كمطوري C# يمكننا تجاوز حدود الخادم وبناء تطبيقات عميل كاملة بلغتنا الأم. في هذه المقالة، سأريكم كيف يعمل هذا، ولماذا هو مهم، وسأقدم أمثلة كود حقيقية.

\n\n

ما هو WebAssembly بلغة بسيطة

\n\n

دعنا نتجنب المصطلحات المعقدة. WebAssembly هو تنسيق ثنائي منخفض المستوى للتعليمات يتم تنفيذه في المتصفح بسرعة شبه أصلية. على عكس JavaScript الذي يتم تفسيره، يتم ترجمة Wasm مسبقاً. الأمر أشبه بتشغيل برنامج بلغة C++ مباشرة في المتصفح، ولكن مع بيئة آمنة معزولة.

\n\n

كيف يرتبط هذا بـ C#؟

\n\n

يمكن ترجمة كود C# الخاص بك إلى WebAssembly. تكتب بلغتك المألوفة، تستخدم مكتبات .NET، وتحصل في النهاية على ملف .wasm ينفذه المتصفح. هناك عدة طرق لذلك، لكن أشهرها هو Blazor WebAssembly.

\n\n
    \n
  • Blazor WebAssembly - إطار عمل من Microsoft يشغل .NET في المتصفح.
  • \n
  • Mono Wasm Runtime - بيئة تشغيل .NET مترجمة إلى Wasm.
  • \n
  • NativeAOT-ot - وضع تجريبي لترجمة C# مباشرة إلى Wasm بدون بيئة تشغيل.
  • \n
\n\n

لماذا نستخدم C# في المتصفح أصلاً؟

\n\n

سؤال جيد. فهناك JavaScript و TypeScript في النهاية. لماذا نحتاج C#؟ الإجابة تكمن في ثلاثة أشياء: الأداء، الأمان، والنظام البيئي.

\n\n

1. الأداء للحسابات الثقيلة

\n

JavaScript جيد، لكنه أبطأ في معالجة الفيديو، التشفير، المحاكاة، أو تحليل البيانات الكبيرة. يمكن أن يكون WebAssembly بلغة C# أسرع بمقدار 10-20 مرة لبعض المهام. على سبيل المثال، إذا كنت تكتب محرر صور بلغة C#، فسيعمل في المتصفح بنفس سرعة تطبيق سطح المكتب.

\n\n

2. إعادة استخدام الكود

\n

هل لديك مكتبة بلغة C# للتحقق من صحة البيانات على الخادم؟ فقط خذها واستخدمها على العميل. لا حاجة لتكرار المنطق بلغة JavaScript. هذا يقلل من عدد الأخطاء ويسرع التطوير.

\n\n

3. أمان الأنواع

\n

C# هي لغة ذات أنواع صارمة. العديد من الأخطاء التي تُكتشف في وقت التشغيل في JavaScript، تُكتشف في C# في وقت الترجمة. بالنسبة لتطبيقات الأعمال المعقدة، هذا أمر بالغ الأهمية.

\n\n

مثال عملي: ترجمة C# إلى WebAssembly

\n\n

دعنا نكتب برنامجاً بسيطاً بلغة C# يحسب المضروب (factorial) ونشغله في المتصفح. سنستخدم Blazor WebAssembly لهذا الغرض.

\n\n

الخطوة 1: إنشاء المشروع

\n
dotnet new blazorwasm -o WasmFactorial\ncd WasmFactorial
\n\n

سينشئ هذا قالب Blazor WebAssembly القياسي. يحتوي بالفعل على كل ما هو ضروري: بيئة تشغيل .NET مترجمة إلى Wasm، وجسر للتفاعل مع JavaScript.

\n\n

الخطوة 2: كتابة كود C# للحسابات

\n

سنضيف خدمة لحساب المضروب. لننشئ ملف Services/FactorialService.cs:

\n\n
namespace WasmFactorial.Services;\n\npublic class FactorialService\n{\n    public long Calculate(int n)\n    {\n        if (n < 0) throw new ArgumentException("يجب أن يكون الرقم غير سالب");\n        if (n == 0) return 1;\n        \n        long result = 1;\n        for (int i = 1; i <= n; i++)\n        {\n            result *= i;\n        }\n                

المدونات

توصيات الكتب