تاریخچه دات نت و #C

دات نت تکنولوژی ای عالی برای ساخت نرم افزار در پلتفرم ویندوز بوده است. اما اکنون، می توان ادعا کرد که NET. تکنولوژی ای عالی برای ساخت نرم افزار در پلتفرم های ویندوز، لینوکس و مک است! ایجاد NET Core. بزرگترین تحولی است که از زمان ایجاد دات نت، رخ داده. اکنون، دات نت Core متن باز (open source) شده، می تواند برای سایر پلتفرم ها نیز اپلیکیشن بسازد و از الگوهای پیشرفته کد نویسی بهره می برد.بازبینی تاریخچه دات نتبرای فهم عمیق تر امکانات در دسترس موجود در دات نت و سی شارپ، دانستن تاریخچه آنها، مفید فایده خواهد بود. جدول زیر، نسخه های مختلف فریمورک دات نت همراه با نسخه CLR و نسخه سی شارپ مرتبط را نمایش می دهد. همچنین نسخه ویژوال استودیویی که در همان سالها منتشر شده است و سازگاری کامل با نسخه دات نت را دارد...نسخه دات نت/نسخه CLR/نسخه سی شارپ/نسخه ویژوال استودیودر تاریخ 27 ژانویه 2016 اولین نسخه از NET Core. رونمایی شد و دومین نسخه از آن در تاریخ 14 آگوست 2017 و در تاریخ سوم دسامبر 2019 نسخه 3.1 منتشر شد. در ادامه به بررسی دقیق تر این مراحل خواهیم پرداخت.سی شارپ 1.0، یک زبان جدیدسی شارپ 1.0، یک زبان برنامه نویسی کاملا جدید بود که برای کار با دات نت فریمورک طراحی و ساخته شد. در زمان ساخت این نسخه، دات نت فریمورک شامل تقریبا 3000 کلاس بود. پس از آنکه مایکروسافت بر اساس حکم دادگاه (که توسط شرکت سان که ایجاد کننده زبان جاوا است، ثبت شده بود)، اجازه پیدا نکرد که تغییراتی در زبان جاوا ایجاد کند، آندرس هلزبرگ، سی شارپ را طراحی کرد. قبل از اینکه او در مایکروسافت مشغول به کار شود، تجربیات موفقی در شرکت Boraland داشت. این شرکت از طراحان زبان دلفی (از گویش های زبان پاسکال) بود. در مایکروسافت، او مسوول ساخت ++J شد (نسخه ی مایکروسافت از جاوا). این امر باعث شد هلزبرگ پیش زمینه هایی برایش ایجاد شود و زبان سی شارپ را که مستقیما تحت تاثیر جاوا و پاسکال و ++C بود را ایجاد کند.بدلیل اینکه سی شارپ بعد از جاوا و ++C ساخته می شد، مایکروسافت مشکلات ایجاد شده در آن زبان ها را بررسی کرد و تغییراتی را داد که از این مشکلات رهایی یابد.امروزه سی شارپ نه تنها یک زبان برنامه نویسی شیء گرای اصیل است، بلکه پیشرفت های مهمی مثلا در زمینه event ها و delegate ها بدست آورده است.کامپایلر دات نت، کدها را به زبان واسطه (IL) تبدیل می کند. CLR نیز شامل کامپایلر JIT است که کدهای ایجاد شده توسط IL را به زبان اصیل ماشین تبدیل کرده و نرم افزار شما اجرا می شود. CLR تنها شامل کامپایلر نیست، بلکه Garbage Collector (GC) را شامل می شود که مسول پاک سازی حافظه از ارجاع هایی است که دیگر مورد نیاز نیستند. از سایر اجزای CLR می توان به مکانیزم امنیتی آن برای بررسی دسترسی کدها و افزونه ای برای دیباگ کردن کد اشاره کرد. همچنین در CLR ابزار تسهیل کار با رشته ها (Threads) نیز وجود دارد که مسوولیت ساخت رشته ها در پلتفرم های اعمال شده را دارد.در نسخه اول دات نت، مجموعه ای شامل 3000 کلاس در namespace های گوناگون وجود داشت که وظیفه namespace ها، تسهیل در مسیریابی این 3000 کلاس موجود با استفاده از گروه بندی کلاس ها در namespace مرتبط خود بود.نسخه اول دات نت امکان ساخت اپلیکیشن های دسکتاپی ویندوز از طریق Windows Form را داشت (System.Windows.Forms namespace). همچنین امکان ساخت اپلیکیشن های وب با استفاده از ASP.NET Web Forms را فراهم کرد. (System.Web). مکانیزم ایجاد رابطه بین اپلیکیشن ها و وب سرویس ها را توسط ASP.NET Web Services و ارتباط آسان تر و سریعتر بین اپلیکیشن های دات نت توسط .NET Remoting را نیز مهیا کرد.تکنولوژی ASP.NET Web Forms امکان ساخت وب اپلیکیشن هایی را داد که هدفش این بود که برنامه نویس نیازی نداشت در مورد HTML و جاوا اسکریپت بداند. کنترل های سمت سرور که شبیه به ویندوز فرم عمل می کردند، خودشان HTML و جاوا اسکریپت مورد نیاز را ایجاد می کردند.سی شارپ 2 و دات نت 2 با Genericsیکی از تغییرات بزرگ در این نسخه استفاده از Generic ها بود. Generic ها امکان ساخت تایپ ها بدون اینکه بدانیم نوع درونی تایپ ها چه هستند را می دهد. نوع درونی تایپ ها در زمان نمونه برداری شان (فراخوانی شان) مشخص می شوند. این مزیت باعث بوجود آمدن نوع های جدیدی در خود فریمورک دات نت شد. برای مثال کلاس های موجود در لیست های Generic با System.Collections.Generics namespace.دات نت 3 - تولد WPFبا انتشار دات نت 3، هیچ نسخه جدیدی از سی شارپ منتشر نشد. دات نت 3 تنها کتابخانه های جدیدی را به خود افزود و تعداد بسیار زیادی از تایپ ها و namespace های جدید را اضافه کرد. WPF احتمالا بزرگ ترین بخش از این فریمورک جدید بود که برای ساخت نرم افزارهای دسکتاپی ویندوزی استفاده می شود. ویندوز فرم از کنترل های اصیل ویندوز بر پایه پیکسل استفاده می کرد در حالیکه WPF بر پایه DirectX بود و از آن برای ترسیم تمامی کنترل های خودش استفاده کرد. وکتورها در WPF با تغییر اندازه کاهش کیفیت نمی دادند و نمونه های موجود در WPF این اجازه را می داد که یک نمای کاملا سفارشی برای نرم افزار ایجاد شود. مثلا فرض کنید یک نرم افزار برای یک شرکت هواپیمایی را که دارای یک دکمه است که به شکل هواپیماست. این امر در ویندوز فرم امکان پذیر نیست و ناگزیر هستید از دکمه های پیش فرض خود ویندوز استفاده کنید. تمامی کلاس های موجود در System.Windows به جز کلاس های System.Windows.Forms متعلق به WPF است. در WPF، رابط کاربری نرم افزار می تواند توسط سینتکس XML طراحی شود: XAML.قبل از دات نت 3، ASP.NET Web Services و .NET Remoting برای ارتباط بین اپلیکیشن ها مجبور به استفاده از چندین API مختلف بودند. در نسخه 3 دات نت این مشکل توسط WCF برطرف شد. WCF تمام گزینه های API ها را با یک API ترکیب کرد.در دات نت 3، تعداد کلاس های فریمورک از 8000 در دات نت 2 به 12000 تایپ، افزایش پیدا کرد.سی شارپ 3 و دات نت 3.5-LINQدات نت 3.5 همزمان با سی شارپ 3 وارد عمل شد. ارتقای اصلی آن ایجاد سینتکسی خاص برای فیلتر و مرتب سازی اشیاء درون لیست ها، فایل های XML و دیتابیس بود. به منظور دسترسی به دیتابیس و ایجاد کوئری، LINQ to SQL ایجاد شده بود. با انتشار اولین آپدیت در دات نت 3.5، Entity Framework منتشر شد. پس از مدتی، ویژگی های موجود در LINQ to SQL با Entity Framework ترکیب شده و امروزه فقط EF وجود دارد. آخرین نسخه آن یعنی EF Core تفاوت های بسیار زیادی با نسخه اولیه آن در دات نت 3.5 دارد.سی شارپ 4 و دات نت 4 - Dynamic و TPLدر این نسخه، به سینتکس سی شارپ عباراتی افزوده شد. شامل کلمه کلیدی dynamic و پارامترهای نام گذاری شده و پارامتر های اختیاری. سایر بهبود ها در داخل دات نت اتفاق افتاد. با گسترس CPU های چند هسته ای، برنامه نویسی موازی اهمیت بالایی پیدا کرد. کتابخانه کارهای موازی - Task Parallel Library(TPL) - با استفاده از رشته ها و کلاس های Parallel و Task، ایجاد کد هایی که به طور موازی اجرا می شدند را آسوده تر کرد.با انتشار نسخه 2010 ویژوال استودیو، تکنولوژی جدیدی برای ایجاد وب اپلیکیشن ها بوجود آمد: ASP.NET MVC 2.0. بر خلاف ASP.NET Web Froms این تکنولوژی بر الگوی Model-View-Controller تمرکز داشت که در ساختار پروژه تاثیرگذار بود. این تکنولوژی همچنین بر کد نویسی HTML و جاوا اسکریپت تمرکز داشت. سی شارپ 5 - برنامه نویسی نابهمگامسی شارپ 5 تنها دو کلمه کلیدی را اضافه کرد: async و await. اما کاری کرد تا نوشتن متدهای نابهمگام بسیار آسان تر شود. با استفاده صحیح از این نوع متد ها، امکان بلاک شدن رشته اصلی از بین می رود و نرم افزار اصطلاحا هنگ نمی کند.از آنجایی که فریمورک System.AddIn بسیار کار را پیچیده و زمان بر می کرد، یک فریمورک ترکیب دیگر به دات نت 4.5 اضافه شد که فریمورک قابلیت مدیریت شده نام گرفت و در System.Composition قرار دارد.نسخه جدیدی از ارتباط بین نرم افزاری که مستقل از زبان برنامه نویسی شان بود به نام ASP.NET Web API ایجاد شد. بر خلاف WCF، از پروتکل بسیار ساده و توانمند REST برای ارتباط بین نرم افزار ها استفاده شد.سی شارپ 6 و دات نت Core 1.0در سی شارپ 6، بهبود اساسی ای که در اکثر نسخه های قبل وجود داشت، رخ نداد اما تعداد زیادی بهبود کوچک و کاربردی که می توانست کدهای نوشته شده را کوتاه و بهینه کند را ایجاد کرد. این بهبود های جدید با کامپایلر جدید Roslyn یا همان NET Compiler. امکان اجرا داشت.با وجود چندین نسخه کوچکتر دات نت (برای مثال Silverlight و Silverlight for Windows Phone)، اشتراک گذاری کد بین نسخه دسکتاپ دات نت و این نسخه های کوچک تر، حائز اهمیت شد. یک تکنولوژی که کدها را بین نسخه های مختلف دات نت به اشتراک می گذاشت، کتابخانه های پرتابل بود. با گذر زمان، با نسخه های فراوانی که از دات نت ایجاد شد، مدیریت کتابخانه پرتابل تبدیل به یک کابوس شد.با وجود این مشکلات، نسخه جدیدی از دات نت اجتناب ناپذیر بود. نسخه جدید از این فریمورک، NET Core. نام گرفت. دات نت Core با پکیج های ماژولار ناگت، کوچک تر از سایر نسخه ها هستند، runtime ای دارند که با تمام اپلیکیشن ها توزیع می شوند، متن باز هستند، و نه تنها برای ویندوز، بلکه برای لینوکس و مک نیز در دسترس هستند.برای ایجاد وب اپ ها، ASP.NET Core 1.0 یک بازنویسی کامل از ASP.NET است. این انتشار با نسخه های قبلی کاملا سازگار نبود لذا ایجاد تغییراتی در کد های کنونی ASP.NET MVC مورد نیاز بود. (با ASP.NET Core MVC). استفاده از این تکنولوژی جدید در وب، مزیت های فراوانی دارد از جمله کاهش سربار درخواست های وب که نتیجه آن عملکرد بالاتر اپ خواهد بود. همچنین، می تواند در سیستم های لینوکسی هم اجرا شود. اما ASP.NET WebForms جزو این انتشار نبود. چرا که از آن برای بهترین عملکرد استفاده نمی شود، بلکه طراحی شده تا توسعه دهندگان آن بر اساس الگوهایی که از Windows Form به خاطر داشتند، به توسعه اپ بپردازند.سی شارپ 7 و دات نت Core نسخه 2سی شارپ 7 خصوصیات جدید متعددی را معرفی کرد. بارزترین آنها در مورد برنامه نویسی functional بود: pattern matching و tuples.اما تمرکز اصلی دات نت Core 2 بر روی تبدیل آسان تر کد های موجود دات نت به دات نت Core بود. تایپ هایی که هنوز برای دات نت Core در دسترس نبودند اما در بسیاری از اپ های کنونی دات نت وجود داشتند، به آن اضافه شدند. بیش از 20000 API به دات نت Core 2 افزوده شد.و NET Standard. ویژگی ای بود که مشخص می کرد کدام API باید در هر پلتفرمی که از Standard پشتیبانی می کرد، وجود داشته باشد. هر چه نسخه استاندارد ارتقا میافت، API های بیشتری در دسترس قرار می گرفت. NET Standard نسخه 2 شامل بیش از 20000 API بود که توسط دات نت 4.6.1 و دات نت Core نسخه 2 و Universal Windows Apps پشتیبانی می شد.برای اینکه بدانید آیا پروژه کنونی شما می تواند به آسانی به دات نت Core تبدیل شود، می توانید از .NET Portability Analyzer استفاده کنید. می توانید این ابزار را از افزونه های ویژوال استودیو دانلود کنید.سی شارپ 8 و دات نت Core نسخه 3برای مطالعه موارد جدید اضافه شده در نسخه 8 سی شارپ، می توانید به صفحه زیر مراجعه کنید: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8