ููŠ ุงู„ู€ .NET FrameworkุŒ ููŠู‡ ุญุงุฌุชูŠู† ู…ู‡ู…ูŠู† ุฌุฏู‹ุง ุนุดุงู† ู†ุถู…ู† ุฅู† ู„ุบุงุช ุงู„ุจุฑู…ุฌุฉ ุงู„ู…ุฎุชู„ูุฉ ุชู‚ุฏุฑ ุชุดุชุบู„ ู…ุน ุจุนุถ ุจุดูƒู„ ุณู„ุณ: ุงู„ู€ CLS ูˆุงู„ู€ CTS. ู‡ู†ุง ู‡ู†ุชูƒู„ู… ุนู† ูƒู„ ูˆุงุญุฏ ููŠู‡ู… ูˆุฅูŠู‡ ูุงูŠุฏุชู‡ู….

Common Language Specification (CLS)

  • ุงู„ู€ CLS ู‡ูˆ ุฌุฒุก ู…ู† ุงู„ู€ CLR ููŠ ุงู„ู€ .NET Framework.
  • ุจูŠุชูƒู„ู… ุนู† ุงู„ู€ specification ุจุชุงุนุช ุงู„ู€ common language (ุงู„ู€ IL).
  • ุงู„ู€ CLS ุงุฎุชุตุงุฑ ู„ู€ Common Language Specification ูˆู‡ูˆ subset ู…ู† ุงู„ู€ CTS. ุจูŠุญุฏุฏ ู…ุฌู…ูˆุนุฉ ู…ู† ุงู„ู‚ูˆุงุนุฏ ูˆุงู„ู‚ูŠูˆุฏ ุงู„ู„ูŠ ู„ุงุฒู… ุฃูŠ ู„ุบุฉ ุจุชุดุชุบู„ ุชุญุช ุงู„ู€ .NET framework ุชู„ุชุฒู… ุจูŠู‡ุง.

What is CLS?

  • ุงู„ู€CLS ูŠุนู†ูŠ Common Language SpecificationุŒ ูˆุฏู‡ ุฌุฒุก ุฃุณุงุณูŠ ู…ู† ุงู„ู€ .NET ู…ู‡ู…ุชู‡ ุฅู†ู‡ ูŠุญุฏุฏ ู…ุฌู…ูˆุนุฉ ู…ู† ุงู„ู‚ูˆุงุนุฏ ูˆุงู„ู‚ูŠูˆุฏ ุงู„ู„ูŠ ู„ุงุฒู… ูƒู„ ู„ุบุฉ ุจุฑู…ุฌุฉ ู…ุฏุนูˆู…ุฉ ููŠ ุงู„ู€ .NET ุชุชุจุนู‡ุง ุนุดุงู† ุชุดุชุบู„ ุตุญ.
  • ุงู„ู‡ุฏู ุงู„ุฃุณุงุณูŠ ู…ู† ุงู„ู€ CLS ู‡ูˆ ุฅู†ู‡ ูŠุฎู„ูŠ ุงู„ูƒูˆุฏ ุงู„ู…ูƒุชูˆุจ ุจุฃูŠ ู„ุบุฉ ู…ู† ุงู„ู„ุบุงุช ุงู„ู…ุฏุนูˆู…ุฉ ููŠ .NET ูŠู‚ุฏุฑ ูŠุชูƒู„ู… ูˆูŠุชุนุงู…ู„ ู…ุน ุงู„ูƒูˆุฏ ุงู„ู…ูƒุชูˆุจ ุจู„ุบุงุช ุชุงู†ูŠุฉ ุจุณู‡ูˆู„ุฉ ูˆู…ู† ุบูŠุฑ ู…ุดุงูƒู„.

Why is CLS Important?

  • ุจูŠุณู‡ู„ ุงู„ุชูˆุงูู‚ ุจูŠู† ู„ุบุงุช ุจุฑู…ุฌุฉ ู…ุฎุชู„ูุฉ ูƒุชูŠุฑ ุฒูŠ C#, VB.NET, F#, ูˆุบูŠุฑู‡ู….
  • ุจูŠุถู…ู† ุฅู† ุงู„ู…ูƒูˆู†ุงุช (components) ุงู„ู„ูŠ ุจุชุชุนุงู…ู„ ู…ุน ุจุนุถ ุชูƒูˆู† ู…ุชูˆุงูู‚ุฉุŒ ูˆุฏู‡ ุจูŠุณู‡ู„ ุนู…ู„ูŠุฉ ุฅู†ูƒ ุชุณุชุฎุฏู… ุงู„ูƒูˆุฏ ุฃูƒุชุฑ ู…ู† ู…ุฑุฉ (reusability) ูˆุชุทูˆุฑ ุชุทุจูŠู‚ุงุช ูƒุจูŠุฑุฉ ูˆู…ุนู‚ุฏุฉ.

CLS Rules Examples:

  • ู„ุงุฒู… ุชุณุชุฎุฏู… ุฃู†ูˆุงุน ุจูŠุงู†ุงุช ู…ุฏุนูˆู…ุฉ ู…ู† ุงู„ู€ CLS ุฒูŠ ุงู„ู€ int, ุงู„ู€ string, ุงู„ู€ bool.
  • ุจูŠู…ู†ุน ุฅู†ูƒ ุชุณุชุฎุฏู… ุฃู†ูˆุงุน ุจูŠุงู†ุงุช ุฎุงุตุฉ ุจู„ุบุฉ ู…ุนูŠู†ุฉ ูˆู…ุด ู…ุฏุนูˆู…ุฉ ููŠ ู„ุบุงุช ุชุงู†ูŠุฉ ุนุดุงู† ุชุถู…ู† ุงู„ุชูˆุงูู‚ูŠุฉ.
  • ุจูŠุญุฏุฏ ุทุฑูŠู‚ุฉ ู…ูˆุญุฏุฉ ู„ุชุณู…ูŠุฉ ุงู„ุญุงุฌุงุช (ุฒูŠ ุงู„ู€ Methods ูˆุงู„ู€ Properties) ุนุดุงู† ูƒู„ ุงู„ู„ุบุงุช ุชู‚ุฏุฑ ุชูู‡ู…ู‡ุง.

Common Type System (CTS)

What is CTS?

  • ุงู„ู€CTS ูŠุนู†ูŠ Common Type SystemุŒ ูˆุฏู‡ ู‡ูˆ ุงู„ู†ุธุงู… ุงู„ู…ูˆุญุฏ ู„ุฃู†ูˆุงุน ุงู„ุจูŠุงู†ุงุช (Data Types) ููŠ ุงู„ู€ .NET.
  • ุงู„ู€ CTS ุจูŠุญุฏุฏ ูƒู„ ุฃู†ูˆุงุน ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุงู„ู€ .NET Framework ูŠู‚ุฏุฑ ูŠุชุนุงู…ู„ ู…ุนุงู‡ุงุŒ ูˆุฏู‡ ุจูŠุดู…ู„ ุงู„ุฃู†ูˆุงุน ุงู„ุจุณูŠุทุฉ ูˆุงู„ู…ุนู‚ุฏุฉ.

Why is CTS Important?

  • ุจูŠุถู…ู† ุฅู† ุฃูŠ ู†ูˆุน ุจูŠุงู†ุงุช ุจุชุนุฑูู‡ ููŠ ุฃูŠ ู„ุบุฉ ุจุฑู…ุฌุฉ ุจูŠูƒูˆู† ู…ุชูˆุงูู‚ ูˆูŠู‚ุฏุฑ ูŠุชุนุงู…ู„ ู…ุน ุฃู†ูˆุงุน ุงู„ุจูŠุงู†ุงุช ููŠ ุงู„ู„ุบุงุช ุงู„ุชุงู†ูŠุฉ.
  • ุจูŠุณู‡ู„ ุนู…ู„ูŠุฉ ุงู„ู€ Compilation ูˆุงู„ุชุญูˆูŠู„ ู„ู„ู€ IL (Intermediate Language) ุนุดุงู† ุชูƒูˆู† ู…ุชูˆุงูู‚ุฉ ูˆู…ุด ู…ุญุชุงุฌุฉ ุชุนุฏูŠู„ุงุช ู…ุฎุตูˆุตุฉ ุจูŠู† ุงู„ู„ุบุงุช ุงู„ู…ุฎุชู„ูุฉ.

CTS Types:

  • ุงู„ู€ CTS ุจูŠู‚ุณู… ุงู„ู€ Types ู„ู†ูˆุนูŠู† ุฃุณุงุณูŠูŠู†:
    • ุงู„ู€ Value Types: ุฒูŠ ุงู„ู€ int, ุงู„ู€ bool, ุงู„ู€ double, ุงู„ู€ StructุŒ ุงู„ู€ Enum. ุฏูŠ ุจุชุฎุฒู† ุงู„ู‚ูŠู… ู…ุจุงุดุฑุฉ ููŠ ุงู„ู€ Stack ุฃูˆ ุฌูˆู‡ ุงู„ู€ Objects ุนู„ู‰ ุงู„ู€ Heap ู„ูˆ ูƒุงู†ุช ุฌุฒุก ู…ู†ู‡ุง.
    • ุงู„ู€ Reference Types: ุฒูŠ ุงู„ู€ ClassุŒ ุงู„ู€ StringุŒ ุงู„ู€ ArrayุŒ ุงู„ู€ Delegate. ุฏูŠ ุจุชุฎุฒู† ู…ุฑุฌุน (reference) ู„ู„ู€ data ุงู„ู„ูŠ ุจุชูƒูˆู† ู…ุชุฎุฒู†ุฉ ุนู„ู‰ ุงู„ู€ Heap.

How CTS and CLS Interact?

  • ุงู„ู€ CLS ู‡ูŠ ู…ุฌู…ูˆุนุฉ ู…ู† ุงู„ู‚ูˆุงุนุฏ ุงู„ู„ูŠ ุจุชุนุชู…ุฏ ุนู„ู‰ ุงู„ู€ CTS ุนุดุงู† ุชุถู…ู† ุฅู† ุงู„ู€ Types ุงู„ู„ูŠ ุจุชุณุชุฎุฏู…ู‡ุง ุงู„ู„ุบุงุช ุงู„ู…ุฎุชู„ูุฉ ุชูƒูˆู† ู…ุชูˆุงูู‚ุฉ.
  • ู…ุซู„ุงู‹ุŒ ุงู„ู€ CLS ุจูŠูุฑุถ ุนู„ูŠูƒ ุชุณุชุฎุฏู… ุฃู†ูˆุงุน ุจูŠุงู†ุงุช ู…ูˆุฌูˆุฏุฉ ูˆู…ุฏุนูˆู…ุฉ ููŠ ุงู„ู€ CTS ุนุดุงู† ุชู‚ุฏุฑ ุชุชุนุงู…ู„ ู…ุน ุงู„ู€ Code ุงู„ู…ูƒุชูˆุจ ุจู„ุบุงุช ุชุงู†ูŠุฉ ููŠ ุงู„ู€ .NET.

Example

ุฎู„ูŠู†ุง ู†ุงุฎุฏ ู…ุซุงู„ ุจุณูŠุท ุนุดุงู† ู†ูู‡ู… ุงู„ููƒุฑุฉ ุฃูƒุชุฑ ุจูŠู† ุงู„ู€ CLS ูˆุงู„ู€ CTS:

  • ู„ูˆ ุนู†ุฏูƒ class ู…ูƒุชูˆุจ ุจู„ุบุฉ C# ูˆุจูŠุณุชุฎุฏู… ู†ูˆุน ุจูŠุงู†ุงุช int:
public class MyClass
{
  public int MyProperty { get; set; }
}
  • ุงู„ู†ูˆุน int ุฏู‡ ู…ุฏุนูˆู… ู…ู† ุงู„ู€ CLS ูˆุจูŠุชุนุฑู ููŠ ู†ุธุงู… ุงู„ู€ CTS ุนู„ู‰ ุฅู†ู‡ System.Int32.
  • ู„ูˆ ุญุฏ ูƒุชุจ ูƒูˆุฏ ุจู†ูุณ ุงู„ู€ Class ุฏู‡ ุจู„ุบุฉ ุชุงู†ูŠุฉ ุฒูŠ VB.NETุŒ ู‡ูŠู‚ุฏุฑ ูŠุณุชุฎุฏู… ุงู„ู€ MyClass ุฏู‡ ุนุงุฏูŠ ุฌุฏู‹ุง. ู„ูŠู‡ุŸ ุนุดุงู† ุงู„ู€ int ููŠ C# ูˆุงู„ู€ Integer ููŠ VB.NET (ุงู„ู„ูŠ ู‡ู…ุง ู…ุชูˆุงูู‚ูŠู† ู…ุน System.Int32 ููŠ ุงู„ู€ CTS) ู…ุชูˆุงูู‚ูŠู† ุญุณุจ ู‚ูˆุงุนุฏ ุงู„ู€ CLS. ุฏู‡ ุจูŠุณู…ุญ ู„ู„ุบุงุช ุงู„ู…ุฎุชู„ูุฉ ุฏูŠ ุฅู†ู‡ุง ุชุชุนุงู…ู„ ู…ุน ุจุนุถู‡ุง ุจุณู‡ูˆู„ุฉ.

Summary

  • ุงู„ู€CLS ุจูŠุญุฏุฏ ุงู„ู‚ูˆุงุนุฏ ูˆุงู„ู‚ูŠูˆุฏ ุนุดุงู† ูŠุถู…ู† ุฅู† ู„ุบุงุช ุงู„ุจุฑู…ุฌุฉ ุงู„ู…ุฎุชู„ูุฉ ููŠ .NET ุชู‚ุฏุฑ ุชุชูƒู„ู… ู…ุน ุจุนุถ.
  • ุงู„ู€CTS ู‡ูˆ ุงู„ู†ุธุงู… ุงู„ู…ูˆุญุฏ ู„ุฃู†ูˆุงุน ุงู„ุจูŠุงู†ุงุช (Data Types) ุงู„ู„ูŠ ุจูŠุถู…ู† ุฅู† ูƒู„ ุงู„ู€ Types ููŠ .NET ู…ุชูˆุงูู‚ุฉ ูˆุณู‡ู„ุฉ ุงู„ุงุณุชุฎุฏุงู… ุจูŠู† ุงู„ู„ุบุงุช ุงู„ู…ุฎุชู„ูุฉ.
  • ุงู„ุงุชู†ูŠู† ุจูŠุดุชุบู„ูˆุง ุณูˆุง ุนุดุงู† ูŠุญู‚ู‚ูˆุง ุงู„ุชูˆุงูู‚ูŠุฉ ูˆุงู„ู…ุฑูˆู†ุฉ ููŠ ุชุทูˆูŠุฑ ุงู„ู€ Applications ุนู„ู‰ ู…ู†ุตุฉ .NET.

ูู‡ู… ุงู„ู€ CLS ูˆุงู„ู€ CTS ุจูŠุฎู„ูŠูƒ ุชูƒุชุจ ูƒูˆุฏ ู…ุชูˆุงูู‚ ุฃูƒุชุฑ ูˆูŠู‚ุฏุฑ ุฃูŠ ุญุฏ ูŠุณุชุฎุฏู…ู‡ ุจุณู‡ูˆู„ุฉ ุจู„ุบุฉ ู…ุฎุชู„ูุฉุŒ ูˆุฏู‡ ุจูŠุณุงุนุฏ ููŠ ุฅู† ุงู„ู€ Development ุจุชุงุน ุงู„ู€ Applications ูŠุจู‚ู‰ ุฃุณู‡ู„ ูˆุฃุณุฑุน.