تصحيح وتشغيل C#: VPS، Docker أو Cloud — أيهما تختار؟

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

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

ابدأ الدورة

لماذا نشر C# ليس مخيفًا بل مربحًا

\n\n

تخيل: لقد كتبت تطبيق C# رائعًا — سواء كان بوت Telegram على .NET 8، أو واجهة برمجة تطبيقات ويب لمتجر إلكتروني، أو خدمة مصغرة لمعالجة المدفوعات. الكود مُصحح، الاختبارات ناجحة، كل شيء يعمل بسرعة محليًا. تبقى الخطوة الأخيرة — نشر هذا التطبيق على الإنترنت ليستخدمه أشخاص حقيقيون.

\n\n

وهنا تبدأ المتعة الحقيقية. أين تنشر؟ على VPS، في حاويات Docker، أم مباشرة في السحابة؟ لكل خيار مزاياه وعيوبه ومخاطره. في هذه المقالة، سنستعرض جميع الأساليب الثلاثة مع أمثلة حقيقية لكود C#، لتتمكن من اتخاذ قرار مدروس.

\n\n

الخيار 1: VPS — الكلاسيكية لمن يحب السيطرة الكاملة

\n\n

الخادم الخاص الافتراضي (VPS) يشبه استئجار شقة في "بيت رقمي". لديك وصول root، تقوم بتثبيت نظام التشغيل بنفسك، وتضبط جدار الحماية، وتثبت .NET Runtime. مثالي لمن يريد سيطرة كاملة أو لديه متطلبات خاصة.

\n\n

كيف تنشر C# على VPS: خطوة بخطوة

\n\n

لنفترض أن لديك ASP.NET Core Web API. إليك الحد الأدنى من الإجراءات:

\n\n
    \n
  1. اتصل عبر SSH بالخادم (Ubuntu 22.04).
  2. \n
  3. قم بتثبيت .NET Runtime:
  4. \n
\n\n
wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh\nchmod +x dotnet-install.sh\n./dotnet-install.sh --channel 8.0\nexport PATH="$HOME/.dotnet:$PATH"
\n\n

قم ببناء التطبيق في وضع Release وانسخ الملفات إلى الخادم عبر SCP أو Rsync:

\n\n
dotnet publish -c Release -o ./publish\nscp -r ./publish/* user@your-server:/var/www/myapp/
\n\n

قم بتشغيل التطبيق كخدمة systemd ليتم إعادة تشغيله تلقائيًا بعد الأعطال:

\n\n
[Unit]\nDescription=My C# App\n\n[Service]\nWorkingDirectory=/var/www/myapp\nExecStart=/home/user/.dotnet/dotnet /var/www/myapp/MyApp.dll\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target
\n\n

مزايا VPS: سيطرة كاملة، سعر منخفض (من $5/شهر)، يمكن تشغيل أي شيء — سواء Windows أو Linux.

\n\n

عيوبه: أنت المسؤول عن الأمان والتحديثات والنسخ الاحتياطي. إذا تعطل التطبيق في الساعة 3 صباحًا — فأنت من سيتولى الأمر.

\n\n

الخيار 2: Docker — الحاويات للمثاليين الكسالى

\n\n

Docker هو وسيلة لتغليف تطبيق C# الخاص بك مع جميع التبعيات في حاوية خفيفة. "يعمل لدي" يتحول إلى "يعمل في كل مكان".

\n\n

Dockerfile لـ .NET 8

\n\n

أنشئ ملف Dockerfile في جذر المشروع:

\n\n
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\nCOPY *.csproj .\nRUN dotnet restore\nCOPY . .\nRUN dotnet publish -c Release -o out\n\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENV ASPNETCORE_URLS=http://+:80\nEXPOSE 80\nENTRYPOINT ["dotnet", "MyApp.dll"]
\n\n

قم ببناء الحاوية وتشغيلها:

\n\n
docker build -t my-csharp-app .\ndocker run -d -p 8080:80 --name myapp my-csharp-app
\n\n

الآن تطبيقك متاح على http://localhost:8080. إذا كنت بحاجة إلى عدة خدمات (قاعدة بيانات + API + واجهة أمامية)، استخدم Docker Compose:

\n\n
version: '3.8'\nservices:\n  api:\n    build: .\n    ports:\n      - "5000:80"\n    depends_on:\n      - db\n  db:\n    image: postgres:15\n    environment:\n      POSTGRES_PASSWORD: example
\n\n

مزايا Docker: عزل، قابلية إعادة إنتاج، توسع سهل (فقط قم بتشغيل 5 حاويات إضافية)، توحيد البيئة.

\n\n

عيوبه: تحتاج إلى فهم شبكات Docker و volumes، وقد يكون مبالغًا فيه لتطبيق بسيط.

\n\n

الخيار 3: Cloud — تفويض البنية التحتية للمحترفين

\n\n

المنصات السحابية (Microsoft Azure، AWS، Google Cloud، بالإضافة إلى النظائر الروسية — Yandex Cloud، VK Cloud) تتولى إدارة الخوادم، موازنة التحميل،

المدونات

توصيات الكتب