مقایسهی NET Core. و NET Framework.
طی بررسیهایی که برروی NET Core. انجام شدهاست، به نظر میرسد که هدف بزرگی را در پیش گرفته باشد. درواقع به نظر میرسد در سال 2018 تقاضا برای متخصصین این تکنولوژی خیلی بالا برود. ولی تفاوت آن با NET Framework. در چیست و چه مواقعی باید از آن استفاده کنیم؟ در این مقاله به بررسی تفاوتهای اصلی این دو و بهترین زمان استفاده از هرکدام از آنها خواهیم پرداخت.
در گذشته، NET Framework. تنها برروی دستگاههای ویندوزی قابل استفاده بود. «زامارین» (Xamarin) و «مونو» (Mono) سعی کردند که NET. را به تلفنهای همراه، «Mac» و لینوکس هم بیاورند. NET Core. یک کتابخانهی استاندارد ارائه میدهد که میتواند در ویندوز، لینوکس، Mac و به لطف زامارین، در تلفنهای همراه نیز مورد استفاده قرار گیرد.
چهار اجزای اصلی از ساختار NET. موارد زیر هستند:
- «Common language specification» یا «CLS» که مشخص میکند هر شی چگونه قرار بگیرد تا در هر جایی که NET. کار میکند، کار کند. درواقع «CLS» یک زیر مجموعه از «Common Type System» یا «CTS» است که یک روش عمومی برای تعریف انواع دادهها است.
- «Framework class library» یا «FCL» که یک کتابخانهی استاندارد است که کلاسها، اینترفیسها و انواع دادهای مورد استفاده را شامل میشود.
- «Common language runtime» یا «CLR» که یک ماشین مجازی است که فریمورک را در خود اجرا کرده و نرمافزارهای نوشته شده در NET. را مدیریت میکند.
- ابزارهایی نظیر Visual Studio که برای ساخت نرمافزارهای اجرایی، وبسایتهای تعاملی، وب اپلیکیشن و وب سرویسها استفاده میشود.
مقایسهی NET Core. و NET Framework.
طراحی و مدیریت هردوی این runtimeها بر عهده مایکروسافت است، و در نتیجه تعداد زیادی از APIهای مشترک را شامل میشوند. به این APIهای مشترک، NET Standard. گفته میشود.
توسعهدهندگان از NET Framework. برای ساخت اپلیکیشنهای ویندوز و سرور استفاده میکنند که شامل اپلیکیشنهای ASP.NET هم میشود. NET Core. برای ساخت اپلیکیشنهای سروری (Server Applications) مورد استفاده قرار میگیرد که امکان اجرا برروی ویندوز، لینوکس و مک را دارند. در حال حاضر NET Core. از ساخت اپلیکیشنهای دسکتاپی که دارای رابط کاربری هستند پشتیبانی نمیکند. توسعهدهندگان میتوانند نرمافزارها و کتابخانههای خود را برای هرکدام از این runtimeها در #C یا VB.NET یا #F بنویسند.
- #C یک زبان برنامهنویسی شیءگرا است که به سایر زبانهای C شباهت دارد. یادگیری کلیت این زبان برای کسانی که با سایر زبانهای C و مشابه کار کرده باشند دشوار نیست.
- #F یک زبان برنامهنویسی کراس-پلتفرم است که از برنامهنویسی شیءگرا پشتیبانی میکند.
- ویژوال بیسیک نیز در NET Framework. موجود است و پشتیبانی محدودی نیز از NET Core 2.0. دارد.
چه موقع از NET Core. استفاده کنیم؟
NET Core. یک فریمورک کراس-پلتفرم و متنباز (Open-source) است که میتواند برای ساخت اپلیکیشن برای هر پلتفرمی مورد استفاده قرار گیرد. اغلب برای ساخت نرمافزارهای ابری (Cloud Applications) یا تبدیل اپلیکیشنهای تجاری بزرگ به مایکروسرویسها (Microservices) از این فریمورک استفاده میکنند.
1. در مواقعی که نیاز به برنامهنویسی کراس-پلتفرم دارید
از NET Core. در مواقعی استفاده کنید که میخواهید نرمافزارتان را در پلتفرمهای مختلف، از جمله ویندوز، لینوکس و Mac اجرا کنید. این سیستمعاملها در NET Core. پشتیبانی میشوند و لیست سیستمعاملهای پشتیبانی شده به طور مداوم در حال گسترش است.
ویژوال استودیو را میتوانید علاوه بر ویندوز، به طور محدود در Mac نیز اجرا کنید. «ویژوال استودیو کد» (Visual Studio Code) را میتوانید در ویندوز، لینوکس و Mac اجرا کنید. امکان استفاده از «Command line» در تمامی پلتفرمهای پشتیبانی شده موجود است.
2. در مواقعی که از مایکروسرویسها استفاده میکنید
مایکروسرویسها که یک نوع ساختار برپایهی سرویس را ارائه میدهند، نرمافزارهایی هستند که از سرویسهای کوچک و ماژولار تشکیل شدهاند. هر سرویس میتواند پروسهی مختص به خودش را اجرا کند و در نرمافزارهای مختلف به صورت مستقل اعمال شود. NET Core. اجازهی مخلوط کردن چند تکنولوژی را میدهد، سبک است و میتواند برای هر مایکروسرویس حجم سبکتری داشته باشد. با اضافه شدن مایکروسرویسهای جدید، سایز آن قابل تغییر است.
3. هنگامی که در نرمافزار خود از مخزنهای داکر (Docker Containers) استفاده میکنید
مخزنهای داکر و مایکروسرویسها اغلب در کنار هم استفاده میشوند. به دلیل سبکی و ماژولار بودن این مخزنها، NET Core. به خوبی با آنها سازگار است. نرمافزارهای تحت سرور میتوانند به کمک مخزنهای داکر به صورت کراس-پلتفرم عرضه شوند. البته NET Framework. هم میتواند همراه داکر استفاده شود، ولی حجم نهایی بیشتر خواهد بود.
4. در مواقعی که نیاز به پردازش قوی و سیستمهای انعطافپذیر دارید
براساس پیشنهاد مایکروسافت، بهتر است که NET Core. را به همراه ASP.NET Core استفاده کنید تا بهترین عملکرد و اندازه را بگیرید. این امر در مواقعی مهم میشود که از صدها مایکروسرویس استفاده کنید. با اینکار، تعداد سرور و ماشین مجازی مورد نیاز کاهش مییابد. این کارایی و انعطافپذیری میتواند تجربهی کاربری بهتری را ارائه دهد و در کنار آن، در هزینهها صرفهجویی کند.
5. در مواقعی که از چندین نسخهی .NET همزمان استفاده میکنید
برای نصب نرمافزارهایی که به نسخههای مختلفی از NET Framework. نیاز دارند، توسعهدهندگان باید از NET Core. استفاده کنند. با اینکار میتوان چندین سرویس را که به NET Framework. های متفاوت نیاز دارند، برروی یک سرور اجرا کرد.
6. در مواقعی که میخواهید از رابط «Command line» استفاده کنید
برخی از توسعهدهندگان ترجیح میدهند در ویراستارهای سبکتر و برپایهی متن کار کنند. NET Core. یک «CLI» برای همهی پلتفرمهایی که پشتیبانی میکند، ارائه دادهاست. نصب آن بسیار ساده و سبک است، و همیشه هم فرصت جابهجایی به محیطهای توسعه نظیر ویژوال استودیو را دارید.
چه موقع از NET Core. استفاده نکنیم؟
یکی از مشکلات NET Core. این است که تمام امکانات NET. را ندارد و از تمام کتابخانهها و افزونهها پشتیبانی نمیکند. در برخی از مواقع بهتر است که از NET Core. استفاده نکنیم، البته با گذر زمان و توسعهی بیشتر، احتمالا در آینده برای تمام موارد استفاده مناسب خواهد شد. ولی فعلا بهتر است در موارد زیر از آن استفاده نکنیم:
1. در مواقع توسعهی نرمافزار بر پایهی«Windows Forms» و «WPF»
این دو هنوز پشتیبانی نمیشوند. هنوز هم برای ساخت یک اپلیکیشن NET. برای Mac باید از مونو استفاده کنید.
2. در مواقع استفاده از ASP.NET Webforms
مایکروسافت برنامهای برای منتقل کردن آن به ASP.NET Core ندارد.
3. در مواقعی که نیاز به ساخت یک «WCF Service» دارید
NET Core. در حال حاضر از WCF پشتیبانی نمیکند. به جای آن باید یک «REST API» به کمک «ASP.NET Core MVC» بسازید.
4. در مواقعی که امکاناتی میخواهید که مختص NET Framework. است
برخی از امکانات NET Framework. هنوز در NET Core. وجود ندارد. برای مثال، «Entity Framework Core» با «Entity Framework v6» متفاوت است.
5. در مواقعی که نیاز به استفاده از APIهای مختص ویندوز دارید
اگر نرمافزار شما نیاز دارد تا با رجیستری ویندوز، WMI یا سایر APIهای مخصوص ویندوز کار کند، امکان نوشتن آن با NET Core. را ندارید. NET Core. به گونهای طراحی شده است که محیط بستهتر و دور از سیستمعامل داشته باشد.
چه موقع از NET Framework. استفاده کنیم؟
NET Framework. همراه با ویندوز عرضه شدهاست. معمولا برای ساخت نرمافزارهای ویندوز و نرمافزارهای تجاری به همراه NET workflow. استفاده میشود. از امکانات آن میتوان موارد زیر را نام برد:
- مدیریت حافظه
- محافظت از دادهها و حافظه
- امنیت
- شبکه
- عرضهی نرمافزار
- ساختمان دادهها
- APIهای مختلف
علاوه بر این موارد، میتوان آن را همراه داکر و «Windows container» استفاده کرد. بهترین مواقع استفاده از NET Framework. عبارتند از:
1. در مواقعی که از قبل تحت استفاده بودهاست
به جای مهاجرت کردن به NET Core.، نرمافزار خودتان را گسترش بدید. برای مثال، توسعه دهندگان میتوانند یک وب سرویس جدید را در ASP.NET Core بنویسند.
2. در مواقعی که از کتابخانههای جانبی استفاده میکنید
هنوز تمامی امکانات NET Framework. در NET Core. پشتیبانی نمیشود. برخی از امکانات پشتیبانی نشده عبارتند از:
- ASP.NET Web Forms applications
- ASP.NET Web Pages applications
- ASP.NET SignalR server/client implementation
- WCF services implementation
- سرویسهای مربوط به «Workflow»
- «Windows Presentation Foundation» یا «WPF» و «Windows Forms»
- «Visual Basic» و «#F»
3. در مواقعی که پلتفرم مقصد از NET Core. پشتیبانی نمیکند
هنوز تمامی پلتفرمهای مایکروسافت و جانبی از NET Core. پشتیبانی نمیکنند، نظیر سرویس آزور (Azure). البته خیلیها برنامه دارند تا در آینده پشتیبانی از آن را اضافه کنند. ممکن است در برخی از سرویسهای پشتیبانی شده هم دچار مشکل شوید. با رشد NET Core. پیدا کردن راه حل برای مشکلاتی که ممکن است سر راه شما باشد، راحتتر میشود.
سلام و وقت بخیر
مثل همیشه مطالب مفید و کاربردی هستند.
تنها در خواستی که دارم تاریخ درج مطالب رو هم بی زحمت برای هر پست که منتشر میکنید،بگذارید تا بدونیم که بروز است یا خیر
خیلی ممنون
سلام، وقت شما بخیر؛
در زیر عنوان هر یک از مطالب مجله فرادرس آخرین تاریخی که مطلب بازبینی و به روز رسانی شده، ذکر شده است.
از اینکه با مجله فرادرس همراه هستید از شما بسیار سپاسگزاریم.