فهرست محتوا
وقتی که صحبت از فریمورکها و زبانهای برنامهنویسی پیش میآید و یک برنامهنویس تازهکار بخواهد کار خود را با یکی از این فریمورکها شروع کند، همیشه حرفوحدیثهای زیادی برای استفاده و یا عدم استفاده از یک فریمورک مطرح میشود. فریمورکهای تحت مایکروسافت از آن دست فریمورکهایی هستند که همیشه در مورد آنها و کاربردشان بزرگنماییهای زیادی میشود و در اینجا قصد داریم به بررسی این سوال که NET Core. چیست بپردازیم که آیا این فریمورک واقعا توانایی اینکه تا اندازهای که ادعا میکنند خوب است یا نه! همینطور در مورد اینکه چه سرویسی برای میزبانی و هاست سایتهایی که روی این پلتفرم ارائه میشوند مفید میباشد. قبل از بررسی Net Core. باید کمی در مورد Net. و پلتفرمهایی که مایکروسافت ارائه کرده است صحبت کنیم.
Net. و سایر پلتفرمهای مایکروسافت
اگر یکی از استفادهکنندگان از سیستم عامل ویندوز باشید و برنامههای مختلف را روی ویندوز سیستم خود نصب کرده باشید قطعا تا حدودی با NET Framework. بهعنوان یک پیشنیاز برای نصب خیلی از برنامههای ویندوزی آشنا شدهاید. اگر بخواهیم یک تعریف علمی کامل از NET Framework. ارائه کنیم باید بگوییم که این پلتفرم در واقع یک بستر برای پیوند دادن زبانهای برنامهنویسی مختلف و ارائه کتابخانههای ضروری و حرفهای با کاربردهایی بسیار متنوع است که به برنامهنویسان اجازه میدهد از زبانهای مخصوص بستر مایکروسافت بهصورت کامل در یک بستر ثابت مانند ویژوال استودیو استفاده کنند و برنامه خود را ایجاد کنند.
NET Framework. که بهعنوان یک پیشنیاز در ویندوز شما نصب میشود و اگر نباشد بعضی از برنامهها یا بازیها اجرا نخواهند شد نیز در واقع تقریبا همین کار را انجام میدهد و مسئول این است که توابع موردنیاز برنامهها را فراهم کرده و این امکان که ماژولهای مختلف آنها با هم کار کنند را فراهم میکند. NET Framework. را میتوان یکی از بزرگترین دستاوردهای مایکروسافت دانست که توانست با وجود کاستیهای زیاد و ایراداتی که به آن وارد بود به کار خود ادامه دهد و مسیر رشد و برطرف کردن این ایرادات را بهطور کامل پشت سر بگذارد.
بهطورکلی میتوان گفت که این پلتفرم یک ترکیب کامل را از زبانهایی مانند #C و VB و همینطور پلتفرمهای حرفهای و کاملی مانند ASP.Net و ADO.Net را در اختیار برنامهنویسان گذاشت، یکی از ویژگیهای بزرگی که این سیستم عامل بهعنوان یک ستون قدرتمند به آن اتکا کرده بود، استفاده از زبان میانی است. در ادامه بیشتر در مورد اینکه زبان میانی چیست و چه کاری انجام میدهد صحبت خواهیم کرد.
زبان میانی چیست؟
وقتی که برنامه نوشته میشود، به دو نوع میتوان آن را اجرا نمود. در اولین و قدیمیترین حالت که از زمان ایجاد و ساخت زبان C مورد استفاده قرار میگرفته است، کد سطح بالا که برنامهنویس آن را نوشته است به یک کد زبان ماشین که برای سختافزار قابل فهم باشد تبدیل میشود. به این عملیات تبدیل شدن کد کامپایل گفته میشود که توسط برنامهای به نام کامپایلر صورت میگیرد. برنامههایی که با استفاده از این روش به کد نزدیک به ماشین ترجمه میشوند، برنامههایی بسیار سریع و قدرتمند خواهند بود که میتوان گفت زمان پردازش در آنها بسیار کمتر از سایر موارد میباشد.
مورد دیگری که در مقابل زبانهای برنامهنویسی کامپایلر قرار دارد، زبانهای مفسری هستند، در زبانهای مفسری کد به صورت خالص روی یک سیستم وارد شده و توسط مفسرها در لحظه اجرا میشود. از این زبانها میتوان به زبانهایی مانند HTML و PHP اشاره کرد که بهصورت مفسری اجرا شده و از معروفترین این زبانها بهحساب میآیند. زبانهای مفسری سازگاری خیلی بالاتری با پلتفرمهای مختلف دارند اما میتوان گفت که زمان پردازش در آنها زیاد بوده و کار پردازشی طولانیتر و سنگینتری را نسبت به زبانهای کامپایلر طلب میکنند.
زبان میانی ایدهای بود که با زبان برنامهنویسی جاوا مطرح شد و در آن این اتفاق افتاد که کامپایلر کد را کامپایل میکرد اما نه بهصورت کامل و نزدیک به ماشین. در واقع کد توسط یک مفسر به یک زبان دیگر به نام زبان میانی تبدیل شده بود که روی سیستمهای مختلف بر اساس سختافزار و سیستم عاملی که داشتند با بهترین بازدهی کار میکرد و یکبار هم عملیات کامپایل زبان میانی بهصورت سبکتر روی سیستمهایی که آن را میشناختند انجام میشد. اینگونه بود که عمل سازگاری زبانهای مفسری به همراه قدرت پردازشی و سرعت زبانهای کامپایلر ترکیب شد. اولین پلتفرمی که مایکروسافت بهعنوان یک پلتفرم زبان میانی معرفی کرد همین NET Framework. بود.
نقاط ضعف NET Framework.
NET Framework. نیز مانند سایر پلتفرمهای خوب و حرفهای که این شرکت بزرگ ارائه کرده است برای خود این شرکت باقی ماند و نتوانست به جایگاهی که حق آن بود دست پیدا کند. شاید این سوال برای شما پیش بیاید که این اتفاق چگونه رخ داده است و منظور ما چیست زیرا شما این امکان را خواهید داشت که به برنامههایی که با NET Framework. نوشته شدهاند در هر جایی دسترسی داشته باشید. در این باره باید به تعداد برنامهنویسان و قیمتی که برای یک اپلیکیشن در پلتفرم NET Framework. از شما خواهند گرفت اشاره کنیم.
اگر یک بررسی بین سرویسهایی که یک اپلیکیشن سطح وب و یا حتی یک سایت روی دو پلتفرم NET Framework. و PHP به شما ارائه میکنند نگاهی بیندازید متوجه خواهید شد که جریان از چه قرار است و هزینههای برنامهنویسی و توسعه اینگونه سایتها و راحتی کار با آنها، آموزشها و انجمنهای کاربری موجود و رضایتی که مدیران از آنها دارند، کاملا گویای این امر خواهد بود که NET Framework. چرا یک زبان و پلتفرم تقریبا جامانده تلقی میشود.
مایکروسافت از آنجایی که هیچوقت به سکون علاقهای نداشته و همیشه میتوان آن را بهعنوان یکی از پیشروترین ارائهدهندگان تکنولوژیهای کامپیوتری دانست، در گام بلند بعدی خود مجددا یک تجربه اپنسورسی دیگر را برای خود ایجاد نمود و با ارائه یکسری از ویژگیهای کاربردی NET Framework. و چند تکنولوژی خوب و جدید، با استفاده از یک بستر اپنسورس که بتوان از آن بهراحتی روی هر سیستم عاملی اعم از ویندوز و لینوکس برنامههای مختلف را نوشته و برای سایر دیوایسها و پلتفرمها از آنها خروجی گرفت، را ارائه کرد که این پلتفرم موضوع اصلی مقاله ما میباشد. در ادامه در مورد اینکه Net Core. چیست بیشتر صحبت خواهیم کرد.
Net Core. چیست؟ یک پلتفرم کاربردی و اپنسورس از مایکروسافت
شرکت بزرگ مایکروسافت عموما به خاطر سیاستهای سختگیرانه خود در زمینههای کپی رایت و پولی بودن برنامه و پلتفرمهایی که ارائه میکند معروف است اما این بار برای صلاح خود و گرفتن بازار و راحتی برنامهنویسان هم که شده از خر شیطان پایین آمده و یک بار دیگر وارد زمینه پلتفرمهای اپنسورس شده است. هرچند که از این کار خاطره خوبی هم ندارد و آخرین بار که این کار را کرد، دو سال قبل از NET Core. بود که یک پلتفرم و زبان برنامهنویسی به نام TypeScript منتشر نمود که در واقع همان JavaScript به همراه چند Add-Ons معمولی بود که کاربردهای آنها آنطور که باید مورد توجه قرار نگرفت.
به جز این زبان چند مورد اپنسورس دیگر نیز مانند یک پک فونت برای ترمینال و پاورشل، و خود پاورشل ویندوز سرور (PowerShell) را نیز بهعنوان برنامههای اپنسورس ارائه داده بود اما هیچوقت به این وسعت پا به عرصه اپنسورس و دنیای آزاد برنامهنویسان نگذاشته بود. مایکروسافت که همیشه مهمترین اهرم فشار خود را بهصورت غیررایگان در اختیار میگرفت این بار قابلیتهای بسیار باورنکردنی را تحت عنوان Net Core. راهی بازار کرد.
اگر بخواهیم بهصورت علمی بگوییم که Net Core. چیست و یک تعریف شستهورفته از آن ارائه کنیم میتوانیم بگوییم که Net Core. یک فریمورک رایگان و اپنسورس برای تولید برنامههای کامپیوتری در زمینههای مختلف روی سیستم عاملهای لینوکس، ویندوز و مکینتاش میباشد. Net Core. را میتوان یک نسخه کراس پلتفرم و کامل از NET Framework. معرفی کرد که تحت لیسانس بنیاد نرمافزاری MIT که به ارائه استانداردهای نرمافزارهای رایگان و اپنسورس نظارت دارد منتشر شده است.
اگر بخواهیم بگوییم که تاریخچه Net Core. چیست باید گفت که نمیتوان تاریخچه چندانی را برای این فریمورک کراس پلتفرم نام برد زیرا تنها 6 سال است که ارائه شده است. اما میتوان گفت که Net Core. برای اولین بار در سال 2014 و توسط «میگل ایکازا» که قبلا هم برای مایکروسافت پلتفرم زامارین را ارائه کرده بود و در این پروژه یکی از مهرههای کلیدی بهحساب میآید، معرفی گردید. وی این فریمورک را یک ورژن جدید از NET. معرفی نمود که تفاوتهای زیرساختی زیادی در مورد لایبراریها (Libraries) یا کتابخانههای ایجاد شده دارد.
ورژنهای Net Core. چیست؟
پس از معرفی Net Core. و استقبال از آن مایکروسافت بهجای اینکه با روال همیشگی خود همه چیز را پرمیوم کند و حال همه کسانی که از این پلتفرم استفاده میکنند را بگیرد و همان مایکروسافت همیشگی باشد که همه برنامهنویسان میشناسند، در جهت اصلاح آن و ارائه ورژنهایی که قابلیتهای بهتر و بیشتری دارند گام برداشت. اولین ورژن این برنامه تحت عنوان Net Core 1.0. در ژوئن سال 2016 به همراه آپدیت سوم ویژوال استودیو 2015 به بازار معرفی شد.
در مورد اینکه دومین ورژن Net Core..چیست باید بگوییم که یک سال بعد از ارائه این ورژن، ورژن دوم با نام Net Core 2.0 در آگوست سال 2017 به همراه ویژوال استودیو 2017 و همینطور یک فریمورک اوپنسورس دیگر از مایکروسافت به نام Entity Framework که یک فریمورک برای ADO.Net بود معرفی شد.
یکی دیگر از ورژنهایی که توانست بهصورت موفق عمل کند و اگر بخواهیم بگوییم که ورژن پایانی Net Core. چیست باید ورژن 3 که در سال 2019 ارائه شد را نام ببریم. ورژنهای بعدی با یک تغییر نام همراه بودند که در ادامه به بررسی آنها خواهیم پرداخت.
ورژن بعدی که اکنون مورد استفاده قرار میگیرد و اگر بخواهیم بگوییم که جدیدترین ورژن Net Core. چیست باید بگوییم که Net 5. میباشد و خبری از Net Core نیست. مایکروسافت در ورژن جدید خود و اصطلاحاتی که در سال 2020 ارائه کرد. Net Core. را به NET. تغییر نام داد و با حذف ورژن 4 و جهش ناگهانی به ورژن پنجم، تمامی موارد مربوط به Net Core. را محو و پاک نموده و تمامی قابلیتهای آن را به NET. جدید خود منتقل کرد که در واقع همان NET Framework قدیمی بود. اما با رنگ و لعابی جدید که همه آن را میشناسند.
ویژگیهای Net Core. چیست؟
در مورد این سوال که ویژگیهای Net Core. چیست تاکنون بهصورت موردی آنها را عنوان کردهایم. اما اگر بخواهیم یک لیست جامع و کامل از اینکه Net Core. چه قابلیتهایی دارد و چه ویژگیهایی را بهعنوان معروفترین ویژگیهای آن میتوان ارائه کرد، باید به این موارد اشاره کنیم:
اپنسورس و رایگان است
در مورد یک پلتفرم و یا فریمورک ارائهشده توسط مایکروسافت اپنسورس بودن و رایگان بودن یکی از اولین ویژگیهایی است که میتوان آن را عنوان کرد. مایکروسافت معمولا عادت دارد دو برابر استفادهای که محصولاتش دارند از شما پول بگیرد و اگر فرهنگ بیخیال کپی رایت بودنی که ما در ایران عموما از آن تبعیت میکنیم را نادیده بگیریم شاید بتوان گفت که تقریبا صددرصد برنامههایی که در داخل با پلتفرمهای غیررایگان مایکروسافت نوشته میشوند کاملا غیرقانونی و بلااستفاده هستند.
اما این بار مایکروسافت میخواست چیز به این مهمی را بهصورت رایگان به ما بدهد که این مورد در کل دنیا یک موضوع عجیب بهحساب میآید.
کراس پلتفرم یا همان چندسکویی بودن
کراس پلتفرم یا چندسکویی موردی است که خیلی از برنامهها و فریمورکهای مختلف از آن پشتیبانی میکنند. و به این معناست که محصول موردنظر میتواند روی چند سیستم عامل که همگی از نظر ساختاری با هم تفاوتهایی را دارند کار کند. بهعنوان مثالی ساده از این دست برنامهها میتوان Xampp را نام برد. اما اگر بخواهیم بگوییم که معنی این چندسکویی بودن روی Net Core. چیست باید بگوییم که در اینجا وقتی برنامهای با این فریمورک نوشته میشود و از زبانها و امکاناتی که این برنامه فراهم کرده است استفاده میکند میتواند روی سیستم عاملهای مختلف و یا سیستم عاملی که مد نظر ما میباشد اجرا شود.
بهعنوانمثال شما قادر خواهید بود تا برنامهای را برای لینوکس و یا برنامهای را صرفا برای ویندوز با استفاده از Net Core. بنویسید یا اینکه برنامهای را بنویسید که روی هر دوی این سیستم عاملها کار کند. موضوع چندسکویی بودن در این پلتفرم یک مفهوم گسترده است و باید در زمان طراحی برنامه نیز توجه زیادی به آن شود.
چندکاربردی بودن
فریمورکهای مختلفی وجود دارند که میتوانند بهصورت کراس پلتفرمی و با استفاده از زبان میانی برنامههای خود را ارائه کنند اما معمولا چند کاربردی بودن موضوعی است که در خیلی از آنها دیده نمیشود، اگر بخواهیم بگوییم که مفهوم چند کاربردی بودن در Net Core. چیست باید بگوییم که شما این امکان را خواهید داشت تا در این فریمورک برنامههای مختلفی برای هر محیط اجرایی و هر بستری طراحی و پیادهسازی کنید. بهعنوانمثال شما هم میتوانید برنامههای موبایل را روی آن بنویسید و هم یک اپلیکیشن تحت وب را روی یک سایت با استفاده از ASP و Blazor پیادهسازی کنید.
آنچه که Net Core. به شما ارائه میکند آزادی عمل در هر زمینهای است و برای این کار خود امکانات خیلی خوبی را نیز در اختیار شما قرار خواهد داد که بهراحتی میتوانید از آن برای نوشتن برنامهها برای هر دیوایس و هر پلتفرمی استفاده کنید.
کتابخانههای غنی و حرفهای
اگر بخواهیم بگوییم که یکی از مهمترین ویژگیهای Net Core. چیست و چه چیزی را مایکروسافت بهعنوان یک هدیه ارائه کرده است که اپنسورس بودن این پلتفرم را تا این اندازه عجیب میکند، کتابخانههای غنی مایکروسافت است که به شما توابع بسیار زیاد و کاربردی را برای برنامههای مختلف میدهد.
توابع و کتابخانههایی که تا چندی پیش و در نسخههای مختلف ویژوال استودیو باید برای آنها قیمتهای سنگینی را پرداخت میکردید اکنون برای گسترش راحت و سریع برنامهها در اختیار شما قرار دارد و از این بابت میتوان مطمئن بود که Net Core. نه تنها کم نمیآورد، بلکه میتواند یکی از مدعیان ارائه کتابخانههای حرفهای و کامل نیز باشد.
استفاده از این ماژولهای آماده میتواند تا حد بسیار زیادی در وقت و هزینهای که برنامهنویسان متحمل میشوند، صرفهجویی کند.
در این قسمت دیدیم ویژگیهای Net Core. چیست و چه کارهایی را انجام میدهد. اما احتمالا این سوال برای شما ایجاد شده است که Net Core. چه ایجنتها و المانهایی را در خود دارد که میتواند این کارها را انجام دهد. در بخش بعد به معرفی این موضوع که تکنولوژیهای ارائه شده توسط Net Core. چیست و چه چیزهایی بهصورت Embedded در این فریمورک وجود دارند که میتوانند چنین کارهایی را انجام دهند.
تکنولوژیهای ارائه شده در Net Core. چیست؟
در پاسخ به این سوال که تکنولوژیهای ارائه شده در Net Core. چیست و این پلتفرم با چه چیزی تا این اندازه رشد کرده است میتوان نام خیلی از فریمورکهای حرفهای مایکروسافت را ذکر کرد. اگر شما از اسمهای پرآبوتاب این پلتفرمها خوشتان میآید و میخواهید بدانید که این موارد چه هستند وقت شما را بیش از این نمیگیریم و مستقیم بهسراغ معرفی آنها خواهیم رفت.
Xamarin
در مورد اینکه زامارین (Xamarin) چیست میتوان گفت که یک پلتفرم است که با استفاده از آن میتوان با زبان #C برنامههایی را برای موبایلهای اندروید و IOS نوشت. البته بیشتر شهرت این پلتفرم در رابطه با IOS میباشد و خیلی در اندروید نتوانست برای خود اعتباری دستوپا کند.
اگر شما از آن دست علاقهمندانی به برنامهنویسی هستید که دنبال شایعات و حواشی مربوط به پلتفرمها میگردید متاسفانه باید بگوییم که هر آنچه در مورد زامارین شنیدهاید حقیقت دارد و این برنامه تا مدتها بهعنوان بدترین پلتفرم برنامهنویسی از نظر برنامهنویسان شناخته میشد و در نظرسنجیها صدرنشین بود. البته در این که این پلتفرم در برنامهنویسی موبایل قدرتمند است شکی نیست، ولی خب تجربه کاربری بدی که ارائه داده است خیلیها را ناامید کرده است.
البته اصلاحات خوبی در آن صورت گرفته و از زمان همراهی با Net Core. توانسته است برای خود یک شهرت خوب فراهم کند بهخصوص اینکه مدیر ارشد هر دوی این پروژهها یک نفر بوده و میکل ایکانزا رهبری این گروه را نیز بر عهده دارد.
Blazor
اگر قصد دارید تا با استفاده از زبان #C یک وبسایت را برای خود راهاندازی کنید Blazor گزینهای خواهد بود که باید بهسراغ آن بروید. اگر بخواهیم ببینیم که نقش این قابلیت در Net Core. چیست باید گفت که این فریمورک، یکی از فریمورکهای جانبیای بود که یک سال پس از ارائه Net Core. و تقریبا میتوان گفت که برای تکمیل آن ارائه شد.
بنیاد NET. این پلتفرم را در سال 2018 ارائه کرد و شما میتوانید شاهد یک همکاری خوب از #C و HTML روی آن باشید. همینطور شما قادر خواهید بود که از ASP.Net نیز در انجام پروژههای این فریمورک کمک بگیرید. این فریمورک چند ویراست مختلف ارائه کرده است که کاراییهای مختلفی برای مصارف سرور، اسمبل کردن وبسایتها، به صورت هیبریدی برای سایت و اپلیکیشن، برای ساخت برنامههای پیشرفته وب و همینطور یک نسخه بهصورت نیتیو را میتوان به عنوان پنج دسته اصلی این فریمورک نام برد.
Web API 2
شاید بتوان در پاسخ به این سوال که محبوبترین گزینه ارائه شده توسط مایکروسافت در بین تکنولوژیهای Net Core. چیست همین گزینه را ارائه نمود. APIها یا همان Application Programming Interfaceها در واقع یک درگاه و رابط هستند که با استفاده از آنها میتوان یک برنامه و یا یک اپلیکیشن تحت وب را به یک برنامه دیگر متصل نموده و از آنها استفاده کرد.
اگر بخواهیم بگوییم که نقش Web API 2 در تکامل Net Core. چیست باید گفت که این API توانست با فراهم کردن یک رابطه خوب برای کار با HTTP روی تمامی پلتفرمها و فریمورکهایی که در Net Core. وجود دارد یک قابلیت حرفهای را به فریمورک خود اضافه کند که یکی از ویژگیهای خوب خود یعنی ASP.Net را به تمام این پلتفرمها تزریق کند و هر کجا که کم میآورد عضو قدرتمند خود که حکم یک Muscle را برای مایکروسافت دارد وارد عمل کرده و نیاز برنامهنویسی خود را رفع کند.
ASP.Net Core MVC
ASP.Net Core MVC یکی از قابلیتهای ویژهای است که میتوان با استفاده از آن برنامه نویسی به روش مدل-نما یا همان MVC روی زبان ASP بهره برد و یک برنامه کاملا قدرتمند مناسب با ویژگیهای وب را ایجاد نمود که برای سایتهای مختلف بازدهی بسیار خوب و ایدهآلی را دارد.
با استفاده از این امکان قادر خواهید بود تا بهصورت کامل یک برنامه حرفهای را هم بهصورت بکاند و هم بهصورت فرانتاند شبیهسازی کنید و از آن استفاده نمایید.
UWP
اگر بخواهیم بگوییم که برگ برنده Net Core. چیست و برترین قابلیتی که در این فریمورک ارائه شده است چیست میتوانیم به UWP یا همان Universal Windows Platform اشاره کرد. با استفاده از این پلتفرم قوی شما این قدرت را خواهید داشت که بدون طراحی و برنامهنویسی مجدد از برنامههای خود روی پلتفرمهای مختلف سازگار با پردازشهای ویندوز 10 خروجیهای اجرایی دریافت کنید.
بهعنوانمثال شما این امکان را دارید تا با نوشتن یک برنامه روی پلتفرم ویندوز از آن برای ویندوز فون 10، ایکس باکس، HoloLens و خیلی از پلتفرمهای دیگری که از این امکان پشتیبانی میکنند، خروجی دریافت کنید. بدون اینکه نیاز باشد تغییرات خاصی را روی آنها اعمال کنید.
در این بخش دیدیم که تکنولوژیهای مورد استفاده در Net Core. چیست و میتوان از این موارد این نتیجه را استناد کرد که مایکروسافت به هیچ عنوان بیگدار به آب نزده است و تمام المانهای قدرت خود را با خود به همراه آورده است. در ادامه به بررسی این موضوع که بهترین گزینه برای میزبانی سایتها و اپلیکیشنهای ساخته شده با Net Core. چیست و اگر میخواهید از این پلتفرم برای کار برنامهنویسی خود استفاده کنید و نیاز دارید تا برنامههای نوشته شده با آن را تحت وب اجرا کنید به چه سرویسی نیاز دارید.
بهترین میزبانی برای Net Core. چیست؟
در مورد اینکه بهترین سرویس میزبانی برای Net Core. چیست و چه چیزی را میتوانید برای میزبانی برنامههایی که با استفاده از این فریمورک ساختهاید، انتخاب کنید باید گفت که بهطور معمول سرویسهای ویندوزی پیشنهاد میشود. اما اگر قصد دارید تا سازگاریهای برنامهای که میخواهید بسازید را روی لینوکس بنا کنید و بیشتر به آن سمت گرایش داشته باشید سرویسهای لینوکسی نیز بینقص خواهند بود.
اما از آنجا که معمولا استفاده کنندگان از Net Core. همچنان برنامهنویسان ویندوزی و همان کسانی هستند که از ASP و سیستمهای تحت آن استفاده میکردند. میتوان گفت که استفاده از سرویسهای ویندوزی گزینه بهتری برای شما خواهد بود. بهعنوانمثال اگر بخواهیم بگوییم که بهترین هاست برای سایتی که طراحی شده با Net Core. چیست میتوان به هاست ویندوز اشاره کرد. همینطور سرور مجازی ایران با سیستم عامل ویندوز نیز میتواند یک گزینه خوب را برای شما فراهم کند که بتوانید با استفاده از آن یک اپلیکیشن ویندوزی را در بهترین حالت ممکن اجرا کنید.
تا اینجا بهصورت کامل در مورد ویژگیها و کارهایی که انتظار داریم این فریمورک برای ما انجام دهد صحبت کردیم و دیدیم که داستان آن از چه قرار است. اکنون نوبت به این رسیده است که بهصورت دقیق این موضوع را بررسیکنیم که این فریمورک تا چه اندازه میتواند برای ما کارایی داشته باشد و در صورتی که یک برنامهنویس بهسراغ استفاده از آن برود، چه مزایا و گزینههای خوبی در اختیار وی خواهد بود.
مزایای NET Core. چیست؟
در صورتی که بخواهیم به صورت دقیق و با جزئیات بالا موارد مربوط به پاسخ آن سوال که مزیتهای NET Core. چیست را در کنار هم قرار دهیم میتوانیم به یک فهرست بسیار بلندبالا دسترسی داشته باشیم که مطمئنا درک خیلی از آنها برای کسانی که با سیستمهای تحت مایکروسافت و دردسرهای آنها آشنایی ندارند، بسیار مشکل خواهد بود. در واقع اگر بخواهیم بگوییم داستان از چه قرار است باید گفت که NET Core. شیری است که در بیشه خود پادشاه است. اما اگر بخواهیم این موارد را برای خیلی از برنامهنویسان پلتفرمهای دیگر توضیح دهیم، مطمئنا به ما خواهند گفت از اول چرا باید چنین دردسرهایی وجود داشته باشد که چنین مزایایی برای رفع و شروع کردن آنها ذکر شود.
در صورتی که بخواهیم بگوییم مزایا و ویژگیهای خوبی که این فریمورک دارد و میتوان واقعا آنها را از مزایای قابل رقابت با سایر فریمورکها تلقی کرد را معرفی کنیم، میتوانیم به این فهرست اشاره کنیم:
امکان استفاده از NuGet
NuGet یا همان نوگت یک بسته استفاده از ماژولهای مجدد است که به شما کمک میکند که از کدهای مختلفی که قبلا نوشته شده است بهصورت آماده در پروژه خود استفاده کنید و در واقع با این کار میتوانید با یک بار نوشتن چیزی چند بار از آن استفاده کنید. نوگت قبلا به نام NuPack شناخته میشد و یکی از امکانات محبوب در برنامهنویسیهای مایکروسافت به شمار میآید. کاربران NET Core. میتوانند با نصب یک افزونه ساده که روی Visual Studio نصب میشود این ویژگی را برای پروژههای خود بهکارگرفته و کدهایی که لازم دارند را روی پروژه خود وارد کنند.
در مورد این ویژگی باید گفت که یکی از بهترین و مهمترین مزیتهایی به شمار میرود که میتوان آن را برای برنامهنویسی در محیط NET Core. به کار گرفت و کار را تا حد زیادی جلو خواهد برد. از زمانی که این ویژگی در سال 2010 معرفی شد، تاکنون تغییرات بسیار زیادی را داشته است و باید گفت که به یکی از بزرگترین ویژگیهای این فریمورک و محیط برنامهنویسی تبدیل شده است.
سیستمهای جانبی زیادی وجود دارند که میتوانند با این ویژگی کار کنند و برای راهاندازی آن مکانیزمهای مختلفی مانند چاکلتی (Chocolatey) ارائه شده است که اگر بخواهیم همه آنها را توضیح دهیم خود مقالهای جداگانه خواهد بود. اما اصل موضوع این است که این ویژگی میتواند امکان استفاده از ماژولها و کدهای Reusable را برای NET Core. فراهم کند و یکی از مزیتهای مهم و خوب آن است.
منبعباز بودن
در رابطه با این ویژگی باید گفت که بالاخره در بین مزایایی که یکی از فریمورکهای مایکروسافت دارد هم عبارت Open Source به چشم میخورد و باید بگوییم که چیزی که همیشه نقطه ضعف بزرگ سیستمهای مایکروسافت به شمار میآمده است اکنون در ردیف مزایای آن قرار گرفته است. در مورد اینکه این مزیت از NET Core. چیست باید گفت که این فریمورک بهصورت رایگان و منبعباز ارائه شده است و همه میتوانند از آن استفاده کرده و همینطور سورسهای کتابخانههای موجود در آن را ببینند و آن را ویرایش کرده و یا توسعه دهند.
از این نظر باید گفت که وقتی یک ویژگی نرمافزاری آن هم در سطح فریمورک که سازوکاری پایهای دارد بهصورت منبعباز و Open Source معرفی میشود، علاوه بر رایگان بودن، مزایای دیگری هم دارد که از مهمترین آنها میتوان به قابلیت اطمینان و استفاده در ابعاد وسیع اشاره کرد. باید گفت که برنامهنویسان حرفهای با چیزی که بدانند دقیقا چطور کار میکند و آیا در دل آن گیروگور خاصی وجود دارد یا نه بهتر کنار میآیند. انتظار اتفاقات غیرمنتظره و غیرقابل پیشبینی از برنامههایی که نمیدانیم در آنها چه خبر است همیشه یکی از موضوعات مهمی بوده است که برای فریمورکهای غیراوپنسورس در نظر گرفته شده است و در مورد برنامههای مایکروسافتی هم کم نبوده است.
از نمونههای آن میتوان به ارورهای وبسرور IIS که آن را در مقاله IIS چیست بهصورت کامل معرفی کردیم اشاره کرد. در این وبسرور اگر حمله دیداسی انجام میشد، احتمال وقوع اتفاقات غیرقابل پیشبینی بود و از سرور کارهای عجیبوغریبی سر میزد. اما باید گفت که در سیستمهای منبعباز از این موارد خبری نیست و ارورهایی که ایجاد میشود کاملا واضح و قابل اصلاح است و یا در صورتی که ماژول و یا کتابخانهای مشکل خاصی داشته باشد، برنامهنویسان از آن به صورت آگاهانه استفاده میکنند و یا اصلا طرف آن نمیروند.
ابزار Visual Studio Code
یکی دیگر از مواردی که میتوان در پاسخ به این سوال که مزایای NET Core. چیست به آن اشاره کنیم، IDE یا همان محیط توسعه یکپارچه Visual Studio Code است که خیلی از برنامهنویسان آن را بهترین IDE موجود میدانند. IDEها برنامهها یا ابزارهایی هستند که به ما امکان مدیریت پروژههای برنامهنویسی و همینطور ساخت برنامهها را میدهند و در واقع مجموعه ابزارهای خاص برای مدیریت کدها، فایلها، پروژهها و کتابخانههای مورد استفاده در این پروژهها را میدهند و میتوان کار برنامهنویسی و ساخت یک برنامه را با استفاده از آنها خیلی راحتتر و بهتر انجام داد.
همه ما با IDEهای مختلفی کار کردهایم که میتوان گفت هر کدام از آنها نقطه ضعفهای خاص خود را دارند اما یکی از بهترین IDEهای موجود همین Visual Studio Code است که روی سیستمهای لینوکسی و ویندوزی به بهترین شکل ممکن کار میکند و میتواند یک پروژه را بدون هیچ محدودیتی مدیریت کند.
بازدهی و Performance بالا
یکی دیگر از مواردی که عمدتا در این NET Core. وجود دارد این است که بازدهی این فریمورک بالا میباشد. در مورد اینکه این مزیت از NET Core. چیست باید گفت که این فریمورک از آن دست فریمورکهایی است که با امکانات خوب و زیادی که دارد میتواند یک برنامه حرفهای و کامل را در مدت کوتاه و با نیروی کار کمتری نسبت به خیلی از گزینهها ارائه کند. در این رابطه باید گفت که این بالا رفتن سرعت کار و کمتر شدن نیرو به این منجر خواهد شد که در مدت کوتاهتری پروژههای بیشتری انجام شود و این برای یک تیم برنامهنویسی به معنی کار سریعتر و بهتر و همینطور درآمد بیشتر با صرف نیروی کمتر است.
مواردی که تا اینجا بررسی کردیم موارد عمومی و مهمی است که میتوان برای مزایای NET Core. چیست معرفی کنیم، هرچند که خود مایکروسافت لیستهای بسیار طولانیتری را از مفاهیم تخصصیتر از برنامهنویسی معرفی میکند که باید گفت در خیلی از فریمورکهای دیگر اصلا مفهوم ندارند و پیچیدگیهایی هستند که این زبانها ایجاد کردهاند. در ادامه در مورد اینکه معایب NET Core. چیست هم صحبت خواهیم کرد.
معایب و ایرادات NET Core. چیست؟
هر فریمورکی در کنار تمامی مزایا و ویژگیهای خوبی که به کاربران خود ارائه میکند، معایبی هم دارد که این یک موضوع کاملا طبیعی است و بهنوعی ماهیت برنامههای کامپیوتری همین میباشد. شما هر چقدر که به سیستم خود امکانات اضافه کنید، بهجای آن باید هزینههایی را برای آن بپردازید که این هزینهها به صورت معایب بروز میکنند. اگر حتی یک فریمورک همه امکانات خوب و ایدهآل را هم یکجا به شما بدهد، باز میتوان گفت که یک ایراد دارد و آن پیچیدگی زیاد بخاطر ویژگیهای بالای آن است.
سوالی که اینجا پیش میآید این است که اگر این ایرادات همه جا هستند و تمام فریمورکها درگیر ایراداتی هستند، اصلا دلیل بررسی ایرادات NET Core. چیست و چرا باید این کار را انجام داد. اینجاست که باید بگوییم دلیل بررسی این ایرادات این نیست که ببینیم NET Core. خوب است یا بد. بلکه دلیل این است که اگر شما یکی از برنامهنویسانی هستید که تصمیم گرفتهاید وارد دنیای برنامهنویسی با این فریمورک بشوید، باید بدانید که دقیقا با چه چیزی سروکار دارید و در حال پا گذاشتن به چه مسیری هستید
این که برنامهنویس قبل از استفاده از یک سیستم بداند در آنجا دقیقا چه خبر است از موارد مهمی است که باید به آن توجه ویژهای داشته باشد و باید بداند وقتی میخواهد پروژهای را انجام دهد باید با چه مشکلاتی دستوپنجه نرم کند. در این بخش با ارائه یک ارزیابی دقیق از این فریمورک به شما خواهیم گفت که اگر قصد وارد شدن به آن را دارید، ممکن است با چه مواردی مواجه شوید.
متاسفانه باید گفت اگر بخواهیم بگوییم ایرادات NET Core. چیست با لیست کوتاهی مواجه نخواهیم بود و فهرست ما به این صورت خواهد بود:
اضافه نشدن ASP.NET Forms
یکی از ویژگیهای خوبی که باید گفت مایکروسافت آن را در این پک اوپنسورس خود قرار نداده است و دردسرهایی را برای خیلی از کاربران در طراح وب درست کرده است ASP.NET Formها هستند. در این رابطه باید گفت که NET Core. از مهمترین و اصلیترین نیازهایی که کاربران برای راهانداز برنامههای تحت وب نیاز داشتند را در این میان قرار نداده است و شما نمیتوانید همانطور که با ASP.NET کار میکردید و بهراحتی فرمهای برنامههای تحت وب را ایجاد میکردید و بهصورت درگ و دراپ کار خود را انجام میدادید، اینا هم با آن کار کنید و این بخش جزو موارد رایگانی که مایکروسافت به شما داده است نیست.
این کار میتواند به کاربر بگوید که قرار است با چیزی بسیار ضعیفتر از آن فریمورک NET Framework. قدرتمند طرف باشیم و ظاهرا مایکروسافت نمیخواهد از خیلی از موارد بهصورت ساده و راحت دست بکشد و آنها را برای کاربران وفادار خود باقی نگه داشته است. هر چند که باید گفت این موارد نمیتواند جلوی شما را بگیرد و شما باز هم میتوانید از این موارد غیررایگان بهصورت رایگان استفاده کنید، اما باید گفت که در تجمیع پروژه خود با NET Core. به مشکلاتی برخواهید خورد و باید بهسراغ NET Framework. بروید.
فقدان سرویسهای Workflow
مورد دیگری که میتوان آن را از ایرادات NET Core. و همینطور تفاوتهایی که NET Core. و NET Framework. دارند معرفی کنیم عدم ارائه سرویسهای کنترل جریان کاری یا همان WorkFlowها میباشد که در NET Core. به کاربران ارائه نمیشود. البته بعضی از این سرویسها در اختیار شما قرار خواهد گرفت اما سرویسهای اصلی مانند Windows Workflow Foundation ،Workflow Services (WCF + WF) و همینطور ADO.NET Data Services در این فریمورک به شما ارائه نمیشود.
در مورد اینکه این سرویسها برای شما چه کاری را انجام میدهند و نتیجه فقدان آنها در NET Core. چیست باید گفت آن راحتیای که برنامهنویسی در فریمورکهای مایکروسافت داشت و بیشتر کارها در آن بهصورت خودکار انجام میگرفت در این فریمورک اوپنسورس وجود ندارد. در واقع کاری که این سرویسها انجام میدادند کنترل و خودکارسازی تمامی مراحل ساخت یک برنامه بود و هر امکانی که نیاز داشتید را برای شما ایمپورت کرده و در اختیار شما قرار میدادند، اما ظاهرا این امکانات نیز برای ارائه در یک فریمورک NET Core. و بسترهای منبع باز حیف بودهاند و مایکروسافت راضی به ارائه آنها نشده است.
نیاز به سرورهای صرفا ویندوزی
یکی دیگر از مشکلاتی که خیلی از موارد برای این فریمورک ارائه میشود، نیاز به سرورهای ویندوزی برای اجرای آنها است که در آنها باید از سیستم عامل ویندوز شبکه استفاده شده باشد که در خیلی از مواقع میتواند برای شما هزینهبر باشد. البته باید گفت که استفاده از امکاناتی مانند هاست ویندوز هم میتواند میزبانی لازم برای کار شما را فراهم کند و در اختیار شما قرار دهد اما در کل باید گفت که سرورهای ویندوزی دردسرهای مربوط به خود را دارند و کار کردن با یک فریمورک رایگان که در آخر شما را گیر سرورهایی که لایسنسهای غیررایگان و سنین ریزودرشت زیادی دارند کمی بهنظر غیرمنطقی میرسد و باید گفت از این نظر NET Core. یکی از سیستمهایی است که دارای ایرادات زیادی به نظر میرسد.
عدم استفاده از کتابخانههای جانبی
NET Core. نمیتواند از سایر کتابخانههای جانبی و خوبی که برای برنامهنویسی در مایکروسافت ارائه شده است استفاده کند و سازگاری بین این فریمورک و خیلی از این کتابخانهها که برای کار با NET Framework. ایجاد شدهاند به شدت دچار مشکل بوده و تازه عموم آنها بهصورت عمدی از این فریمروک حذف شدهاند و با آن کار نمیکنند.
پس باید گفت خیلی از امکاناتی که برای فریمورکهای دیگر مایکروسافت فعال بوده است در مجموعه NET Core. کار نمیکند و از آنها هم نمیتوانید روی پروژهای که دارید استفاده نمایید.
عدم وجود نسخه پایدار
یکی دیگر از مواردی که باید به آن دقت کرد این است که نسخه پایدار و خوبی از NET Core. وجود ندارد. این موضوع به این معنی است در آنچه که ما از این فریمورک میبینیم بهنوعی نسخههایی هستند که بهصورت آزمایشی ارائه شدهاند و ممکن است که تغییرات کلیای را داشته باشند. شاید این تغییرات کلی در جهت اضافه شدن امکانات قبلی و خوبی باشد که از نبود آنها صحبت کردیم، اما باید گفت هر تغییری میتواند اوضاع کاری جدید شما را بههمریخته و در یادگیری و دنبال کردن این پروژه شما را با مشکل مواجه سازد.
در صورتی که بخواهیم مثالی از این ایراد بزنیم باید بگوییم ممکن است ویژگیای که شما از آن برای پروژه قبلی خود در سه ماه پیش استفاده کرده بودید امروز برای پروژه جدید تغییر کرده باشد و شما را مجبور به یادگیری موارد جدید و رفتن سراغ راهحلهای دیگر بکند. البته باید گفت که اجبار به یادگیری موضوع خوبی است اما نه در وسط یک پروژه و با استرس اینکه اوضاع کاری که روی دست ما مانده است چطور خواهد شد.
بازار کار ضعیف
یکی دیگر از مواردی که میتوان برای این سوال که معایب NET Core. چیست معرفی کرد بازار کار نسبتا ضعیفی است که دارد. برنامهنویسهای مایکروسافت زمانی از پردرآمدترین اقشار برنامهنویسها و دولوپرها بودند. البته اکنون هم همین موضوع برقرار است و قیمت یک پروژه در این فریمورکها و روی این پلتفرمها بسیار بالاتر از سایرین خواهد بود. اما باید گفت که تقاضا برای آن کم است و میتوان گفت که فریمورکهای php و جاوا اسکریپت بازار را در اختیار گرفتهاند و با توجه به بازدهی و کیفیتی که برنامههای این دو فریمورک دارند کار را به خوبی انجام میدهند.
در کل باید گفت که بازار برنامهنویسی در زبانهای تحت مایکروسافت رو به زوال گذاشته است و بهصورت جهانی اوضاع در حال تغییر بوده و اوپنسورسها ابتکار عمل را در دست گرفتهاند. البته هر چند که NET Core. هم یک اوپنسورس است اما دیدیم که ظاهرا کاربردهایی که این اوپنسورس داستان ما در اختیار کاربران خود قرار میدهد با آنچه که ما از اوپنسورس میشناسیم بسیار متفاوت است.
در مجموع اگر بخواهیم از NET Core. و معایب آن صحبت کنیم باید بگوییم که مایکروسافت زیاد به این قضیه اوپنسورس بودن و منبعباز بودن اهمیتی نداده است و صرفا برای ورود به آن بخشی از فریمورک NET. را آزاد گذاشته است که وارد این حوزه شده باشد. اما در صورتی که به دنبال کاربردهای اصلی هستید باید بدانید که این کاربردها غیررایگان بوده و مانند همان وضعیتی که از این فریمورک بهصورت غیر قانونی استفاده میشد، برقرار میباشد و هر برنامهای هم که با امکانات کامل در این محیط نوشته میشود، از همان روشهای قبلی استفاده میکند و ظاهرا NET Core. چیزی را عوض نکرده است.
نتیجهگیری
در این مقاله دیدیم که Net Core. چیست و تمامی زوایای تلاش مایکروسافت را برای ورود به عرصه پلتفرمهای اپنسورس بررسی کردیم و دیدیم که این پلتفرم چگونه از آب درآمده است. بهصورت کلی میتوان گفت که تکنولوژیهای خوبی که برای این فریمورک به کار گرفته شده است میتواند باعث شود تا Net Core. به یک ابزار قدرتمند تبدیل شود. اما در مورد اینکه آیا این ابزار رایگان و اپنسورس باقی میماند یا مانند سایر پروژههای اپنسورس مایکروسافت رها میشود، نمیتوان نظری داد.