Module 1: .NET Ecosystem Overview
“.NET ইকোসিস্টেম” বলতে Microsoft-এর সেই বিশাল প্ল্যাটফর্মকে বোঝায় যেখানে বিভিন্ন ধরণের অ্যাপ্লিকেশন তৈরি করার সব টুল, লাইব্রেরি, রানটাইম ও ফ্রেমওয়ার্ক একসাথে থাকে।
✔ .NET ইকোসিস্টেমে কী কী থাকে?
1️⃣ .NET Runtime
যেখানে আপনার কোড চলবে (CLR / CoreCLR) — এটি memory, threads, garbage collection সবকিছু ম্যানেজ করে।
2️⃣ .NET Class Library / BCL (Base Class Library)
প্রি-বিল্ট হাজারো ক্লাস ও API যা দিয়ে File I/O, Logging, Networking, Database, Encryption, Threading—সব করতে পারেন।
3️⃣ .NET SDK
অ্যাপ ডেভেলপ করার জন্য টুল:
-
Compiler
-
dotnet CLI
-
Templates
-
Build system
-
Runtime bundles
4️⃣ Languages
-
C#
-
F#
-
VB.NET
5️⃣ Frameworks (Application Models)
-
ASP.NET Core → Web Apps, APIs
-
Blazor → Web UI
-
MAUI → Mobile/Desktop
-
WPF/WinForms → Desktop
-
Unity with C# → Games
-
Azure Functions → Serverless
-
Entity Framework Core → ORM
6️⃣ NuGet Ecosystem
External libraries ব্যবহারের জন্য package manager।
✔ সহজ উদাহরণ
আপনি যেভাবে Android ecosystem-এ JVM, SDK, Libraries, Tools থাকে…
.NET ecosystem-এ একইভাবে অ্যাপ ডেভেলপমেন্টের সব উপাদান একসাথে থাকে।
.NET SDK কী?
.NET SDK = Software Development Kit
অর্থাৎ আপনি .NET অ্যাপ বানাতে, বিল্ড, রান বা পাবলিশ করতে যে জিনিস দরকার—সবই এর ভেতরে থাকে।
এর ভিতরে যা থাকে:
✔ 1️⃣ dotnet CLI
কমান্ড লাইন টুল —
-
dotnet new→ নতুন প্রজেক্ট -
dotnet build→ বিল্ড -
dotnet run→ রান -
dotnet publish→ ডিপ্লয়মেন্ট প্যাকেজ তৈরি
✔ 2️⃣ Roslyn Compiler
C# কোড → IL কোডে রূপান্তর করে।
✔ 3️⃣ Build system (MSBuild)
Solution, project, dependencies — সব ম্যানেজ করে।
✔ 4️⃣ Default template packs
ASP.NET Core template, console template, class library template, MAUI template ইত্যাদি।
✔ 5️⃣ .NET Runtime (optional bundle)
আপনি চাইলে সাথে রানটাইমও থাকে যাতে local machine-এ runtime আলাদাভাবে ইনস্টল না লাগতে পারে।
CLR, CTS, CLS — তিনটি ভিত্তি
এগুলো .NET এর সবচেয়ে গুরুত্বপূর্ণ তত্ত্বগত বিষয়।
1) CLR (Common Language Runtime)
CLR হলো .NET-এর “Engine” বা “Virtual Machine”।
যেখানে আপনার অ্যাপ রিয়েলভাবে execute হয়।
CLR কাজ করে—
✔ Memory Management
-
Heap, Stack
-
Automatic Garbage Collection
-
Object lifetime handling
✔ Type Safety
আপনার অ্যাপ যাতে ভুল টাইপ ব্যবহার না করে (runtime errors কমে)।
✔ Exception Handling
try/catch/finally সিস্টেম সম্পূর্ণ CLR নিয়ন্ত্রণ করে।
✔ JIT Compilation
IL কোডকে machine code-এ রূপান্তর করে।
✔ Thread Management
Multithreading, async/await, Task system—সব CLR সামলায়।
সংক্ষেপে: CLR = .NET অ্যাপকে নিরাপদ, দ্রুত এবং নির্ভরযোগ্যভাবে চালানোর ইঞ্জিন।
2) CTS (Common Type System)
CTS হলো এমন একটি স্ট্যান্ডার্ড টাইপ সিস্টেম যা .NET এর সব ভাষা অনুসরণ করে।
CTS কেন দরকার?
.NET-এ আপনি C#, F#, VB.NET—সব ভাষা একই প্রকল্পে ব্যবহার করতে পারেন।
এই ভাষাগুলোর data type একে অপরের সাথে conflict না করে যেন কাজ করতে পারে—
সেই নিয়ম বানিয়েছে CTS।
CTS কী ঠিক করে?
-
int, string, bool, class, struct—সব টাইপের common definition
-
value type & reference type এর নিয়ম
-
inheritance, interface, method signature
-
boxing/unboxing আচরণ
মূল কথা: সব .NET ভাষার টাইপ যেন সমানভাবে আচরণ করে।
3) CLS (Common Language Specification)
CLS হলো এমন কিছু নিয়মের সেট যেগুলো মেনে চললে আপনার কোড সব .NET ভাষার সাথে compatible থাকে।
✔ উদাহরণ
যদি আপনি C#-এ এমন কোনো ফাংশন বানান যা:
-
case-sensitive naming ব্যবহার করে
-
এমন একটি data type ব্যবহার করে যা VB.NET চেনে না
তাহলে সেটা CLS-compliant হবে না।
যখন লাইব্রেরি লিখবেন, তখন CLS compliance খুবই গুরুত্বপূর্ণ।
JIT Compilation কী?
.NET কোড প্রথমে IL (Intermediate Language) এ রূপান্তর হয়।
কিন্তু প্রসেসর IL বুঝতে পারে না।
তাই CLR-এর ভেতরের JIT Compiler IL → Machine Code-এ রূপান্তর করে।
✔ JIT এর ৩টি ধরন
1) Normal JIT
কোনো মেথড প্রথমবার কল হলে তখনই কম্পাইল হয়।
2) Tiered JIT
.NET Core/ .NET 5+ এ ডিফল্ট
-
প্রথমে দ্রুত কম্পাইল করে
-
পরে frequently-used কোডকে আরও optimize করে
ফলে performance অনেক বেড়ে যায়।
3) AOT (Ahead-of-Time) Compilation
.NET Native / PublishAOT
আগেই সব কোড machine code বানিয়ে রাখা হয় → খুব দ্রুত startup।
সবগুলো মিলিয়ে সরল ব্যাখ্যা
-
SDK দিয়ে আপনি কোড লিখবেন, বিল্ড করবেন
-
Compiler কোডকে IL বানাবে
-
CLR অ্যাপ রান করবে
-
CTS সব .NET ভাষার টাইপ এক করবে
-
CLS common rules তৈরি করবে
-
JIT IL → Machine Code করবে