# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Core >  چرا ASP NET Core را انتخاب کنیم؟

## hakim22

یادگیری یک فریم ورک کار پر زحمتی است. باید وقت و انرژی  زیادی صرف کنید تا درباره ی نحوه ی برنامه نویسی ، تست ، اجرا و انتشار  برنامه دانش لازم را بدست بیاورید. مشکل اینجاست که گزینه های زیادی در  اختیار دارید و انتخاب یکی از آنها می تواند مسیر کاری شما را تا حد زیادی  تغییر دهد.
در این مقاله به معرفی مزایای فریم ورک ASP.NET  Core می پردازیم و دلایل انتخاب آن را شرح می دهیم. اگرقصد دارید تازه  وارد دنیای توسعه ی وب شوید این مقاله می تواند راهنمای شما جهت انتخاب  بهترین فریم ورک باشد. در اینجا  10 دلیل می آوریم که برای پروژه ی بعدی  خود را با ASP.NET Core پیاده کنید.

1*- سورس باز است*
مایکروسافت  برای مدتها به عنوان شرکتی با درهای بسته فعالیت می کرد اما در چند سال  گذشته این رویه کاملا تغییر کرده است. فریم ورک ASP NET Core کاملا به صورت  سورس باز در سایت GitHub توسعه داده میشود . می توانید به صورت زنده و  مستقیم شاهد روند پیشرفت پروژه باشید یا حتی در توسعه ی آن همکاری داشته  باشید. سورس باز بودن به شما امکان می دهد به تحلیل کدها بپردازید و ببینید  که در پس زمینه ی این تکنولوژی چه می گذرد. رقبای مایکروسافت همیشه سعی می  کردند سورس باز بودن را به عنوان یک مزیت مهم به رخ بکشند اما دیگر چنین  نیست.


*2- Cross-Platform*

می  توانید برنامه های NET Core را روی انواع سیستم عامل ها پیاده یا اجرا  کنید. فرقی نمی کند که هدف شما سیستم عامل ویندوز ، لینوکس یا macOs باشد.  تمامی ابزار مورد نیاز برای کار با ASP NET Core در سیستم عامل های غیر از  ویندوز فراهم است. در حال حاضرمایکروسافت یک نسخه از Visual Studio را برای  macOS ارائه میکند. همچنین برای کد نویسی می توانید از VSCode استفاده  کنید که روی همه ی سیستم عاملها اجرا میشود و محبوب ترین برنامه ی کد نویسی  در دنیاست. معمولا سرورهای لینکوس هزینه ی کمتری دارند و این برای شرکتها و  استارتاپ هایی که بودجه ی کمی دارند خبر خوبی است.


*3- نصب پهلو به پهلو*

فریم  ورک NET Core به صورت Side-By-Side نصب میشود. می توانید چندین نسخه از  دات نت کور را در کنار هم روی سیستم عامل داشته باشید بدون آنکه تداخلی  بوجود آید. با این قابلیت دیگر لازم نیست نگران آپدیت شدن فریم ورک و از  کار افتادن برنامه های قدیمی باشید. برنامه ی قدیمی با نسخه ی قدیمی کار  میکند و برنامه ی جدید از نسخه های جدید استفاده می کند.


*4- سرعت*

فریم  ورک ASP NET Core تا چند برابر سریعتر از سایر فریم ورکهای وب کار می کند.  فریم ورکهایی مثل Node یا Ruby یا Laravel حتی نزدیک به اعداد و ارقام ASP  NET Core نیستند. سرعت می تواند نقش بسیار تعیین کننده ای در هزینه ی نگه  داری سایت داشته باشد. به تازگی یک شرکت هندی با مهاجرت به ASP NET Core  تعداد سرورهایش را به نصف کاهش داده است. سخت افزار پر هزینه ترین بخش  سرویس های تحت وب است و ASP NET Core می تواند در این زمینه بسیار صرفه  جویی ایجاد کند.


*5- دیتابیس*

ابزار  Entity Framework کار کردن با دیتابیس را بسیار ساده می کند. در عین سادگی  این ابزار بسیار قدرتمند است و با می تواند با سرعت بالا داده ها را  پردازش کند. همه ی سایتهای اینترنتی نیاز به دیتابیس دارند و EF به عنوان  بخشی از فریم ورک NET Core نقش اساسی در کار شما دارد. مهمتر از همه آنکه  مایکروسافت خودش این ابزار را توسعه میدهد و همیشه همراه با ASP.NET Core  آپدیت میکند.


*6- میکرو سرویس ها*

سایتها  بزرگ معمولا در یک سرور نگه داری نمی شوند. بلکه به قطعات کوچک تری به نام  میکرو سرویس تقسیم می شوند که دیتابیس مجزا دارند و جدا از هم کار میکنند.  فریم ورک ASP NET Core کاملا ماژولار طراحی شده است و به راحتی می توانید  قسمتهایی را که لازم ندارید از چرخه ی کاری آن حذف کنید. کارایی بالای ASP  NET Core آن را به عنوان بهترین گزینه ی طراحی Micro Service معرفی میکند.


*7-  Docker*
داکر  ابزاری است اجرا برنامه ها را ساده میکند. داکر می تواند پروژه ی شما  تبدیل به یک بسته ی یکپارچه کند که بدون نیاز به نصب هیچ ابزاری دیگری روی  هر سیستمی کار می کند. شرکتهای زیادی از این ابزار برای انتشار محصولات روی  سرور یا سیستم مشتری استفاده می کنند. فریم ورک ASP.NET Core سازگاری  کاملی با این تکنولوژی دارد.


*8- سی شارپ*
مایکروسافت  سرمایه گذاری زیادی صرف توسعه ی زبان برنامه نویسی #C میکند. هر ساله نسخه  های جدیدی از سی شارپ عرضه شده و روز به روز به قابلیتهای آن افزوده  میشود. از این زبان می توانید برای پیاده سازی انواع نرم افزارها استفاده  کنید. فرقی نمی کند که برنامه برای سیستم عامل ویندوز، اندروید iOS یا  لینوکس طراحی می کنید یا می خواهید در زمینه ی هوش مصنوعی یا توسعه ی وب  فعالیت کنید. تنها با دانستن این زبان برنامه نویسی قادر هستید در شاخه های  مختلف تکنولوژی کار کنید.


*9- ویژوال استودیو*
ویژوال  استدیو کاملترین نرم افزار برای برنامه نویسی است و انواع زبانهای برنامه  نویسی را پوشش میدهد. این ابزار کاملا با ASP NET Core سازگار است و همه ی  آن چیزی که برای کد نویسی و تست و اجرای برنامه نیاز دارید در اختیارتان  قرار میدهد. در سایر فریم ورکها همیشه چالش انتخاب IDE دارید که هیچکدام از  آنها توسط شرکت سازنده ی فریم ورک تهیه نشده است.


*10- اکو سیستم*
مهمترین  مزیت استفاده از فریم ورک ASP.NET Core این است که این فریم ورک توسط  مایکروسافت تهیه و پشتیبانی میشود. هزاران برنامه نویسی با سرمایه های چند  صد میلیون دلاری تمام وقت مشغول هستند تا بهترین فریم ورک موجود را عرضه  کنند. مایکروسافت به همینجا بسنده نمی کند. علاوه بر ASP NET Core ابزار  Entity Framework هم توسط همین شرکت توسعه داده میشود. دیتابیس SQL Server و  نرم افزار Visual Studio همه ی نیازهای شما را برطرف میکند. در واقع برای  پیاده سازی وب سایت لازم نیست به سراغ محصولات شرکتهای دیگر یا افراد سوم  بروید. حتی می توانید از Team Services برای مدیریت پروژه و پیگیری روند  کار استفاده کنید. همه ی اینها به صورت رایگان در اختیار برنامه نویسان  قرار داده میشود.


*نتیجه گیری*
اگر  فریم ورک ASP.NET Core را با ابزاری مانند Node.js مقایسه کنید می بینید  که گوگل فقط فریم ورک مبنای Node را پیاده میکند. برای توسعه ی وب باید به  سراغ فریم ورکهای سورس بازی بروید که توسط اشخاص سوم طراحی شده است که هر  زمان ممکن است کار را تعطیل کنند و به سراغ سرگرمی دیگری بروند. در بسیاری  از فریم ورکها اصلا ابزاری مشابه Entity framework وجود ندارد. اگر شما  مزایای استفاده از ASP NET Core را با هر فریم ورک دیگری مقایسه کنید می  بینید که گزینه ی بهتری وجود ندارد.

----------


## electera

ممنونم از شما.
همیشه در مورد مزیتها صحبت میشه اما در مورد معایب و محدودیت ها کمتر مطالبی پیدا میشه و بقول خودتون:
"یادگیری یک فریم ورک کار پر زحمتی است. باید وقت و انرژی زیادی صرف کنید تا درباره ی نحوه ی برنامه نویسی ، تست ، اجرا و انتشار برنامه دانش لازم را بدست بیاورید. مشکل اینجاست که گزینه های زیادی در اختیار دارید و انتخاب یکی از آنها می تواند مسیر کاری شما را تا حد زیادی تغییر دهد."
1- اگر دوستان کمی واقع بینانه بتونن در مورد محدودیتها صحبت کنن، راهنمایی خوبی میتونه باشه.
2- آیا درسته که قراره در core3 امکان گرفتن خروجی exe بیاد؟
3- بجای وقت گذاشتن روی WPF آیا core میتونه گزینه مناسبتری باشه؟

----------


## hakim22

البته هر تکنولوژی معایبی هم داره. 

برنامه نویسی هم سلیقه ای هست و هر کسی ایده ی خودش رو داره.

تقریبا میشه با هر فریم ورک وب هر سایتی ساخت. ممکنه انجام بعضی کارهای در یکی ساده تر و در یکی سخت تر باشه ولی محدودیت اساسی ندارن.

اول از همه مطمئن بشید که از زبان سی شارپ خوشتون میاد. چون در ASP.NET Core باید با #C کار کنید. این زبان استاتیک تایپ هست (مانند Java ) برای اجرا باید کامپایل و بیلد بشه و نوع متغیرها  مشخص باشه. در مقایسه با PHP یا Python که به صورت اسکریپت قابل اجرا هستن و دینامیک تایپ هستن. 

وقتی قراره پروژه های کوچیک کار کنید زبان های اسکرپیتی خیلی سریعتر کار شمارو راه میندازن. مثلا اگه قرار یک وبلاگ درست کنید یا یک سایت برای معرفی شرکت بسازید که تعداد کاربرهای کمی داره خیلی سریع می توانید با WordPress و PHP کار رو انجام بدید. به همین خاطر هست که این دو تکنولوژی کسب و کارهای کوچک رو قبضه کردن. البته صد در صد میشه با PHP سایتهای بزرگ ساخت. مشکل اینه که ساختن پروژه های بزرگ با زبان های اسکریپتی چالش بیشتری داره و نیاز به تخصص و مهارت بالایی هم داره. نظر شخصی من اینه که زبانهایی مثل PHP برای پروژه های کوچیک خیلی سریع و ساده هستن ولی برای پروژه های بزرگ خیلی کار رو سخت میکنن. بگذریم از اینکه از نظر Performance هیچکدام از این فریم ورکها حتی نزدیک به اعداد و ارقام ASP.NET Core نیستن. 

حالا اگر از سی شارپ استفاده کنید به همراه پروژه وب می توانید نرم افزار دسکتاپ یا اندروید (Xamarine)  یا WPF هم بسازید. در حالی که با PHP فقط وب کار می کنید. 

یادگیری ASP.NET Core سخت تره و نیاز به تلاش بیشتری داره. بعضی کارها ممکنه در 10 دقیقه در سایر فریم ورکها انجام بشه همون کار ممکنه یک ساعت وقت شما رو در ASP.NET Core بگیره. البته حالت عکس هم پیش میاد ولی کم هست. در عوض وقتی سرور شما ترافیک بالایی میگیره بیشتر می توانید روی ASP.NET Core حساب کنید. ASP.NET Core برای سادگی طراحی نشده و بازار اول مایکروسافت برای این محصول کسب و کارهای بزرگ است.

خیلی گشتم مقاله ای پیدا کنم که مشخصا به دلایل بد بودن ASP.NET Core اشاره کنه ولی پیدا نکردم. در عوض برای Node.js از ای دست مقاله ها خیلی می بینید. حتی سازنده ی Node.js که الان دیگه روی اون فریم ورک کار نمیکنه سال پیش در کنفرانس Nodejs یک جلسه ی کامل درباره ی ایرادهای اون و تصمیمات غلتش در پیاده سازی این فریم ورک صحبت کرد. تصمیماتی که الان برای تغییر دادنشون خیلی دیر شده و اگر Node.js بخواد اونها رو اجرا کنه باید مانند مایکروسافت یک نسخه ی کاملا جدید ارائه کنه. حتی شخصی که Express.js رو ساخته چند سال پیش با اعلام اینکه به نظرش Node.js خوبه ولی براش جذاب نیست این فریم ورک رو رها کرد. در حال حاضر Node نزدیکترین رقیب ASP.NET Core هست و وضعش اینه.






> آیا درسته که قراره در core3 امکان گرفتن خروجی exe بیاد؟


در Core 3.0 امکان پیاده سازی پروژه های WinForm و WPF اضافه میشه و این موضوع را با تبدیل پروژه های Paint.NET و KeePass تست کردند. 




> بجای وقت گذاشتن روی WPF آیا core میتونه گزینه مناسبتری باشه؟



این دوتا ربطی به هم نداره.  WPF برای ساختن نرم افزارهای ویندوزی هست در حالی که ASP.NET برای ساخت وب سایت هست. اگر WPF بلد باشید در آینده می توانید برنامتون رو در دات نت کور بنوسید و از مزایای این فریم مثل سرعت و پرتابل بودن استفاده کنید.

----------

