Console Application
الـ Console Application ده عبارة عن برنامج بيشتغل جوه الـ CLI (Command-Line Interface) أو الـ terminal.
البرامج دي بتُستخدم بشكل أساسي عشان تنفذ مهام بسيطة، أو للـ debugging، أو كـ utilities، وكمان لأغراض التعلم (learning purposes).
الـ Console applications بتتميز بإن ليها نقطة بداية رئيسية (main entry point)، وهي الـ Main method، ومن هنا بيبدأ تنفيذ البرنامج.
How to Create and Use a Console Application
1. Creating a Console Application:
- افتح Visual Studio.
- اختار
Create a new project. - اختار
Console Appوبعدين دوسNext. - اظبط إعدادات الـ project بتاعك (زي الاسم، والمكان اللي هيتحفظ فيه، إلخ) ودوس
Create.
2. Basic Structure:
using System;
namespace ConsoleApp
{
class Program
{
// Main entry point of the application
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}3. Running the Console Application:
- دوس على
Ctrl + F5عشان تشغل التطبيق. - النتيجة “Hello, World!” هتظهر قدامك في الـ console.
Is Console Applications only used for Learning?
لأ طبعاً، إطلاقاً! الـ Console Applications مش بس للتعلم، لكن في بيئة (Production)، الـ Console Applications ليها وزن تقيل جداً واستخدامات لا غنى عنها.
غياب الواجهة الرسومية (GUI) في الـ Console بيخليه خفيف جداً، سريع، ومثالي لمهام معينة.
The Real Power of Console Applications
1. Command Line Tools (CLI Tools)
أكبر وأهم البرامج اللي المبرمجين بيستخدموها كل يوم هي في الأساس Console Applications.
- أدوات زي الـ
git، والـnpm، والـdocker، وحتى الـdotnet CLIنفسه، كلها برامج كونسول. - الشركات بتعمل CLI Tools خاصة بيها عشان الموظفين ينفذوا أوامر معينة بسرعة بدل ما يفتحوا مواقع أو برامج تقيلة.
2. Automation and Scheduled Tasks (Cron Jobs)
لو عندك مهمة محتاج تنفذها بشكل دوري (مثلاً: سحب داتا من Database وتصديرها لملف Excel كل يوم الساعة 12 بليل، أو أخذ Backup)، أفضل حل هو إنك تكتب الكود في Console Application وتخلي نظام التشغيل يشغله أوتوماتيك (باستخدام Task Scheduler في ويندوز أو Cron Jobs في لينكس).
3. Background Processing & Microservices
في Architecture للأنظمة الكبيرة (Microservices Architecture)، كتير من الخدمات بتتبني كـ Console Applications بتشتغل في الخلفية (Background Services).
- البرنامج بيكون شغال ومستني رسالة تجيله من حاجة زي الـ Message Broker (مثال: RabbitMQ أو Kafka) عشان ينفذ مهمة معينة زي إرسال إيميلات للمستخدمين، أو معالجة صور، من غير ما يعطل الـ Web API الرئيسي.
4. High Performance & Low Resource Consumption
بما إن الـ Console Application مفيهوش واجهة مستخدم (No GUI)، فهو مش بيستهلك حاجة تقريباً من الـ RAM أو الـ كارت الشاشة. ده بيخليه الخيار الأول للبرامج اللي محتاجة تحسب عمليات معقدة (Data Processing) بأقصى سرعة وبأقل استهلاك لموارد السيرفر.
5. DevOps and CI/CD Pipelines
في عمليات الـ Deployment اللي بتحصل تلقائي، السيرفرات بتتعامل مع الـ Command Line. فلو محتاج تعمل سكريبت يجهز البيئة، أو يعمل (Database Migration)، أو يعمل Testing للكود، الـ Console Application هو الأداة القياسية لده.
Notes
- الـ ASP.NET Core is a Console App: معلومة ممكن تفاجئك، هي إن أي تطبيق ويب بتعمله بـ ASP.NET Core (زي الـ Web API أو الـ MVC) هو في الأساس وتحت الكبوت عبارة عن Console Application! الـ
Mainmethod بتاعته كل اللي بتعمله إنها بتشغل Web Server (اسمه Kestrel) وتخليه يفضل شغال عشان يستقبل الـ HTTP Requests. يعني الكونسول هو حجر الأساس لأي تطبيق .NET حديث. - لما بنحب نعمل Console App يشتغل في الخلفية لفترة طويلة (Long-running service) في بيئة .NET، مايكروسوفت عملت لنا Template مخصوص اسمه Worker Service. ده بياخد الـ Console App العادي ويضيفله مميزات قوية زي الـ Dependency Injection، والـ Logging، والـ Configuration، وبيخليك تقدر تحوله لـ Windows Service أو Linux Daemon بمنتهى السهولة.
Class Library
الـ Class Library في لغة C# عبارة عن مجموعة من الـ classes، الـ methods، وموارد تانية ممكن أي تطبيقات تانية تستخدمها.
الـ Libraries مفيهوش Main method، وبدل كده التطبيقات التانية (زي الـ console applications، أو الـ web applications، أو حتى libraries تانية) بتعملها reference وتستخدم الكود اللي جواها.
Types of Libraries
- الـ Class Library: ده النوع الأكتر شيوعاً، وبيحتوي على classes و methods قابلة لإعادة الاستخدام.
- الـ .NET Standard Library: دي library بتكون شغالة وتقدر تشتغل على إصدارات .NET المختلفة (زي .NET Core، و .NET Framework، و Xamarin، إلخ).
How to Create and Use a Library
1. Creating a Class Library:
- افتح Visual Studio.
- اختار
Create a new project. - اختار
Class LibraryودوسNext. - ظبط إعدادات الـ project بتاعك (زي الاسم، والمكان، إلخ) ودوس
Create.
2. Basic Structure:
using System;
namespace MyLibrary
{
public class Greeter
{
// Method to return a greeting message
public string Greet(string name)
{
return $"Hello, {name}!";
}
}
}3. Building the Library:
- اعمل build للـ project (من خلال Build > Build Solution أو تدوس
Ctrl + Shift + B). - الـ DLL file اللي هيطلع بعد الـ compile هيكون موجود جوه فولدر
bin/Debugأوbin/Release.
4. Using the Library in a Console Application:
- اعمل Console Application project جديد أو افتح واحد موجود عندك أصلاً.
- اعمل right-click على الـ project في الـ Solution Explorer واختار
Add > Project Reference. - علم صح على المربع اللي جنب الـ library project بتاعك ودوس
OK.
5. Example Usage:
using System;
// Reference to the external library
using MyLibrary;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// Instantiate the class from the library
Greeter greeter = new Greeter();
string message = greeter.Greet("Alice");
Console.WriteLine(message);
}
}
}Summary
- الـ Console Application: مثالي للبرامج المستقلة (standalone) اللي بتحتاج
Mainentry point، وغالباً بيُستخدم في الـ utilities، الـ scripts، ولأغراض التعلم. - الـ Library: بتحتوي على كود قابل لإعادة الاستخدام (زي الـ classes والـ methods) من غير
Mainmethod، ومصممة عشان تطبيقات تانية تعملها reference وتستخدمها.
استخدام الـ libraries بيسمحلك تقسم الكود بتاعك لأجزاء (modularize)، وده بيخلي الكود قابل لإعادة الاستخدام وأسهل بكتير في الصيانة. الـ console applications ممتازة للمهام المباشرة، وممكن تعتمد على الـ libraries عشان توسع إمكانياتها وتضيفلها وظايف أكتر.
Notes
- الأمثلة المكتوبة للـ Console Application بتستخدم الـ Structure القديم (الـ Namespace والـ Class والـ Main method). بداية من .NET 6، مايكروسوفت خلت الـ Console Apps تعتمد على حاجة اسمها Top-Level Statements كـ default، يعني تقدر تكتب
Console.WriteLine("Hello, World!");مباشرة في ملفProgram.csمن غير أي boilerplate code. - الـ DLL File: كلمة DLL هي اختصار لـ (Dynamic Link Libraries). ده ببساطة الملف (Compiled) اللي بيحتوي على الكود بتاع الـ Library بتاعتك، وهو ده الملف اللي الـ Projects التانية بتقراه عشان تقدر تستخدم الـ Classes والـ Methods اللي إنت كاتبها.