تحولات جدید سکوی دات نت از جنبه های مختلف قابل بررسی است
اول میتوان به کامپایلر جدید CSharp6 با نام
Roslyn
اشاره کرد که با خود CSharp نوشته شده و متن باز است و در سیستم عامل های مختلف قابل اجرا است و امکان پاره ای تحلیل های آماری را هم میدهد ...
در محدوده سینتکس، خوشبختانه کامپایلر Roslyn هیچ سینتکس قبلی را باطل نکرده و همه کلمات کلیدی و سینتکس های قبلی معتبر هستند فقط قابلیت های جدیدی را اضافه کرده.
قابلیت های جدیدی مانند Null-Conditional Operator یا Nameof Expressions یا Interpolated Strings و...
//CSharp 1~6
int x = 123;
string s = string.Format("the value is {0}", x);
//CSharp 6
int x = 123;
string s = $"the value is {x}";
یعنی همه سینتکس ها و کلمات کلیدی از if و for و lock گرفته تا async و volatile و... هرچه را شما بلد باشید (قدیم یا جدید) یا وقت بگذارید و این ساختارها را یاد بگیرید ضرر نخواهید کرد و چیزی را از دست نمیدهید.
==============
مورد بعدی فریم ورک جدید dotNetCore است که در واقع معادل/مشابه/نظیر dotNetFramework آشنای قبلی است.
دقت کنید که dotNetCore جایگزین dotNetFramework نیست و dotNetFramework برای انتشار تحت ویندوز همچنان پشتیبانی وتوسعه داده خواهد شد، کما اینکه نسخه نهایی و آتی dotNetFramework v4.6.2 در راه است.
درحال حاضر امکانات و توابع dotNetFramework بسیار کاملتر بوده ولی فقط مختص اجرای برنامه روی سیستم عامل ویندوز است.
dotNetCore بازنویسی مجددی از dotNetFramework است، که فضای نام ها ، کلاس ها و توابع فوق العاده شبیه و در واقع یک نام هستند ولی مختص اجرا در سایر سیستم عامل ها از جمله مک و لینوکس نوشته شده.
همانطورکه گفته شد، امکانات dotNetFramework هنوز بیشتر است، در واقع برای برخی امکانات آن باید راه کارهایی پیدا شود که مختص سیستم عامل ویندوز نباشد و این زمان میبرد، تیم مربوطه در حال کار هستند و تلاش میکنند تا بخش های بیشتری را برای کار در سایر سیستم عامل ها بازنویسی کنند ولی در حاضر پیشرفت بسیار خوب بوده و اغلب موارد بازنویسی و تبدیل شده اند.
در واقع الآن شما میتوانید کدنویسی عاد ی را انجام دهید و خیلی راحت یک کامپایل روی dotNetFramework بگیرید و یک کامپایل هم روی dotNetCore ، چون نام کلاس ها و متدها عوض نشده...
یعنی در این محدوده هم همچنان کلاس های List و FileStream و Thread و... و... وجود دارند و یادگیری آنها مشکلی ندارد، فقط مثلا شاید از کلاس MemoryStream که استفاده میکنید روی کامپایل dotNetCore تابع ToArray نداشته باشد که این موارد را هم VS در زمان کدنویسی و در فهرست های بازشو نشان داده و اخطارهای لازم را میدهد.
البته مطلب را خیلی خلاصه و فشرده خدمت تان عرض کردم و ریزه کاری ها و ریزنکات فراوانی وجود دارد.
==============
در گام بعد میرسیم به نوع پروژه ها ...
WinForm و ASP.Net WebForm که همچنان تحت dotNetFramework وجود دارد و قابل استفاده است ولی میدانید که چند سالی است توسعه آن متوقف شده و دیگر به آن چیزی از طرف مایکروسافت اضافه نخواهد شد ، این مورد هم ارتباطی به dotNetCore ندارد ولی درهرصورت شما میتوانید پروژه جاری خود را توسعه دهید و حتی پروژه جدید بسازید.
* در واقع سرمایه گذاری برای یادگیری ویا ایجاد پروژه های تازه از این نوع ها چندان مفید نیست *
پروژه های WPF کماکان به قوت خود پابرجا هستند و فعلا dotNetCore هم وارد این عرصه نشده، این پروژه ها تحت dotNetFramework و
Xamarin
(برای سایر سیستم عامل ها) قابل استفاده هستند.
درحال حاضر تحت dotNetCore میتوانید پروژه های Console و Library و ASP.Net Core 1 ایجاد کنید.
اجزای این پروژه ها تحت dotNetCore کمی تغییر کرده، اجزا که میگویم منظورم مدیریت پروژه تان است، مثلاً فایل جدید project.json را داریم که برخی از اصلی ترین تنظیمات پروژه تان را نگه داری میکند، باید ساختار آن را بشناسید و در بتوانید برای مقاصد خود دستی ویرایش اش کنید، علی الحساب شبیه app.config و web.config فرضش کنید که البته چنین نیست!
نکته جالب دیگر آن است که اگر پروژه های فوق را بسازید با تغییر تنظیمات همین آقای(!) project.json میتوانید خروجی dotNetFramework هم از کامپایل بگیرید، اصلاً میتوانید کامپایل تحت dotNetCore را حذف کنید.
پس دستکاری project.json امکان خروجی کامپایل های متفاوت را میدهد.
اصلی ترین تغییرات می ماند برای ASP.Net Core 1 که ضمن آنکه کاملا از بنیان از اول نوشته شده، فضای نام ها و کلاس ها و متدها و... و.... هم همه عوض شده، فقط و فقط الگوی کلی کاری ASP.Net MVC5 و قسمت اعظم سینتکس های Razor حفظ شده، یعنی در ASP.Net Core 1 هم مفهوم Model, View, Control, Action, ModelBinder, Router, Razor و... وجود دارد، در واقع مفاهیم و سینتکس کلی روی کار، خیلی به ASP.Net MVC5 نزدیک است ولی در زیرساخت همه چیز متلاشی و مجدد سرهم شده!
مثلاً کتابخانه System.Web.dll که قلب ASP.Net و رابطه آن با IIS بود بکل حذف شده، HttpHandler یا HttpModule که مفاهیم بسیار بنیادین و زیر ساختی ASP.Net بودند دیگر به شکل قدیم وجود ندارند.
این مفاهیم که خدمت تان عرض میکنم زیر ساخت ASP.Net بوده اند حتی با آمدن MVC هم تغییری نکردند چون کوچک ترین تغییر آنها کاخ زیرساختی ASP.Net را فرو میریخت و نیازمند کدنویسی از صفر برای ASP.Net بود، که البته چنین شد. ...
...
...
لازم است مجدد تاکید کنم که امکان کار با نوع پروژه های Classic قبلی همچنان وجود دارد ولی دیگر توسعه آن ها متوقف شده.
پس اگر تکنولوژی روز برایتان مهم است در نهایت در یادگیری ومطالعات ASP.Net خودتان فقط باید دقت کنید.
کتابهایی که در نامشان MVC یا Razor را یدک میکشند، بخشی از مفاهیم شان همچنان در ASP.Net Core 1 وجود دارد و قابل استفاده است.
کتابهای مختص ASP.Net Core 1 هم که هنوز نسخه های لاتین محدود دارند، فارسی که در کل وجود ندارد.
برای یادگیری نهایی گرچه اولش کمی سخت است ولی داشتن نیم نگاهی به کتابهای MVC و Razor قدیم و کار وساخت عملی پروژه تحت RC2 میتواند راه گشا باشد.
البته همانطور که در پست قبل اشاره شد، مستندات ودر واقع Help نسخه جدید ASP.Net از طریق لینک زیر در دسترس است:
https://docs.asp.net