Net Core. آغاز تحولی شگرف در برنامه نویسی
NET. از جمله فریمورکهای محبوب برنامه نویسی است که به خصوص در ایران طرفداران زیادی دارد. شرکت مایکروسافت در اواخر دههی 1990 میلادی، پروژهی مربوط به فریمورکهایNET. آغاز کرد که از آن زمان تاکنون ابزارهای توسعهی نرمافزار دستخوش تغییرات بسیاری شدهاند. اخیرا نیز یک تحول بزرگ با ایجاد پلتفرم NET Core. صورت گرفته است.
در آخرین روزهای سال 2014 در کنفرانس توسعهدهندگان ()Connect، از فریمورک جدید NET. با نام NET Core. رونمایی شد. این فریمورک جدید دارای قابلیتها و مشخصات ممتازی از جمله متن باز بودن و قابلیت نصب بر روی سرویسها و سیستمعاملهای مختلف است.
NET Core. چیست؟
NET Core. پلتفرمی چندسکویی و متن باز است که برای ایجاد نرمافزارهای تحت وب مدرن با استفاده از زبان برنامهنویسی NET. ساخته شده است. این پلتفرم ماژولار توسط شرکت Microsoft و انجمن NET. بر بستر GitHub ایجاد شده است.
به عبارت دیگر NET Core. بازسازی کامل فریمورک محبوب NET. با پشتیبانی از پروژههای NET. مایکروسافت است؛ همانگونه که بسیاری از تکنولوژیهای دیگر بر پایهی فریمورک NET. ساخته شدهاند. در ایجاد NET Core. بر سه اصل متن باز بودن، چندسکویی و آسانسازی کد تمرکز شده است و این سه اصل با هم در NET Core. گرد هم آمدهاند. جالب آنکه NET Core. در حالی ساخته شده که تمامی خصوصیات برتر و مهم NET. از جمله امنیت بالا در آن نیز حفظ شده است.
به طور کلی آنچه فریمورکهای NET. را محبوب کرده، قابلیت ایجاد Class Library و در نتیجه دادن آزادی به توسعهدهندگان برای ایجاد اپلیکیشن با هر زبانی (مانند VB، C++، C# و …) است. NET Core. نیز از این قاعده مستثنی نبوده و به راحتی امکان تلفیق و استفاده در کنار زبانهای برنامهنویسی دیگر مانند #C را دارد.
برای درک بهتر این مفاهیم و پلتفرم NET Core. در ادامه با ما همراه باشید…
چرا NET Core.؟
یکی از محدودیتهای نسخه های پیشین فریمورک NET. این بود که امکان استفاده از آن ها در پلتفرمها، سیستم عامل ها و سرویس های مختلف مقدور نبود؛ اما NET Core. این امکان را به کدنویسان و توسعهدهندگان میدهد تا ضمن استفاده از کتابخانه (Library)، آن را در پلتفرمهای مختلف اعم از سیستم عاملها و سرویسهای گوناگون به کار بگیرند. لذا چنانچه وبسایت یا اپلیکیشنی با استفاده NET Core. ایجاد شده باشد، امکان اجرای آن در پلتفرمهای مختلف مقدور میباشد. حتی توسعهدهندگان میتوانند تنها بخشی از فریمورک NET Core. مورد نیاز را در پروژههای خود به کار گیرند و به صورت کامل از پایه از آن استفاده نکنند.
شاید به همین دلیل است که بسیاری بر این باورند NET Core. و #C در آیندهی نزدیک تحولی عظیم در بین زبانهای برنامهنویسی ایجاد خواهند کرد و اکثر افراد به زودی اپلیکیشنهای خود را بر اساس این دو توسعه میدهند؛ کمااینکه در حال حاضر نیز میزان تقاضا و استفاده از آنها افزایش یافته، به طوری که براساس آمار هماینک زبان NET. از PHP پیشی گرفته است:
بر اساس همین آمار که توسط وبسایت TIOBE منتشر شده است، زبان برنامهنویسی PHP در سال 2012 در جایگاه 6ام و زبان برنامهنویسی NET. در مکان 19ام قرار داشته است. حال زبان NET. بهطور شگفتانگیزی با 13 پله صعود از زبان PHP نیز پیشی گرفته است و زبان برنامهنویسی پیاچپی هماینک در مکان 7ام قرار دارد:
#C یکی از تطبیقپذیرترین زبانهای برنامهنویسی است که میتوان با استفاده از آن برنامههای Desktop، سرویسهای Background، برنامههای تحت وب و حتی اپلیکیشنهای موبایلی ایجاد کرد. تطبیقپذیری خاصیتی ضروری است؛ زیرا مهم است که مطمئن شوید وقت و سرمایهای که برای یادگیری #C و .NET Core صرف میکنید، ارزش آن را داشته و نهایتا با یادگیری آن میتوانید کارهای بسیار زیادی انجام دهید که البته با این مهارت در بازار کار حرف زیادی برای گفتن خواهید داشت!
هاست حرفه ای ویندوز هایساپورت در تمامی پکیج های هاست ویندوز از قابلیت NET Core. پشتیبانی می کند!
NET Core. استفادههای بسیاری در مباحث و رشتههای مختلف دارد از جملهی آنها میتوان به استفاده در علوم محاسباتی و مهندسی و توسعهی بازیهای ویدئویی و همچنین به استفادهی در ساخت وبسایتها، پروژههای ابری و ایجاد اپلیکیشنهای تحت وب اشاره کرد. در پروژهی مربوط به NET Core. هماینک کمپانیهای بزرگی مشارکت می کنند تا آیندهی پلتفرم NET. را به صورتی مطلوب شکل دهند. Microsoft، Redhat، Utility، JetBrains، Sumsong و Google از جملهی این کمپانیها هستند. NET Core. به راحتی بر روی Windows، Linux و MacOS قابل اجراست. دیگر برای انجام آنچه مد نظر شماست، محدودیتی پیش رویتان نیست.
افزایش درآمد فردی فریلنسر
از 2 میلیون به 10 میلیون تومان
افزایش درآمد شرکتی
از 20 میلیون به 100 میلیون تومان
میزان سختی
متوسط
ویژگی ها و مزایای NET Core.
در این بخش به 9 ویژگی بارز NET Core. می پردازیم. ویژگی هایی که هر یک احتمالا نه تنها گره ای از کار شما باز می کنند بلکه کار را به مراتب ساده تر و البته لذت بخش می کنند:
ایمن
پشتیبانی توسط شرکت پیشرو مایکروسافت و ایجاد و پایهریزی بر اساس پلتفرم NET. موجب شده تا NET Core. همچنان از استانداردهای امنیتی پیروی کرده و مورد اعتماد شرکتهای مختلف قرار بگیرد.
تطبیق پذیری و پشتیبانی از #C
برای ایجاد اپلیکیشن با استفاده از NET Core. میتوان از #C استفاده کرد. #C ساده، قدرتمند، تطبیقپذیر، ایمن و شیگرا بوده و سازگاری کامل با NET Core. دارد.
رایگان و متن باز
NET Core. با استفاده از مجوزهای Apache 2 و MIT متن باز است و تمامی کامپوننتهای آن در GitHub در دسترس میباشد؛ بنابراین اشخاص و کمپانیهای مختلف میتوانند آن را به صورت رایگان مورد استفاده قرار دهند.
انعطاف پذیر و ماژولار
یکپارچه کردن NuGet با NET Core. باعث شده تا سیستمی کاملاً ماژولار بوجود بیاد تا برای وسعت دادن به برنامه و توسعهی چابکانه آن تنها نیاز به Import کردن پکیجهایی کوچک با قابلیتهای پایه باشد.
ابزار خط فرمان
تمامی موارد تعبیه شده در NET Core. از طریق Command-line نیز قابل مدیریت هستند.
چند سکویی
مایکروسافت با سنتشکنی و در اقدامی جالب و دور از انتظار NET Core. را به صورت چند سکویی یا Cross Platform ایجاد کرده است. با اینکار، امکان پشتیبانی و اجرای کدها در سیستمعاملهای مختلف فراهم شده است.
آماده برای بهتر کردن همه چیز
گویی NET Core. برای بهتر و آسانتر شدن اکثر سرویسهای موجود برای کدنویسی در سطح وب ایجاد شده. در توسعه NET Core. به پشتیبانی از معماری میکروسرویسها و سرویسهای کلود دقت شده و به طور کلی بر اساس موارد ذکر شده NET Core. همانند HiSupport نیز تلاشی است برای ایجاد آیندهای بهتر.
یکپارچگی و سازگاری بالا
NET Core. از طریق همان NET Standard. با کدهای مشابه، سازگاری کامل با فریمورک NET، .Xamiran و Mono دارد. همچنین این فریم ورک به دلیل خاصیت یکپارچگی، امکان بکارگیری GitHub و NuGet را درون خود دارد.
سبک، سریع و مدرن
کارایی بالا و اجرای سریع در سرورهای لینوکس و ویندوز باعث شده تا NET. اخیراً جزو برترین پلتفرمهای موجود در تست Benchmark شود. NET Core. همچنین به دلیل قابلیت پشتیبانی از زبانهای مختلف مانند C#، F#، VB و ساختارهای نوین مانند: Generics، LINQ، Docker و Async لقب مدرن به خود گرفته است.
ترکیب و ساختار .NET Core
به صورت خلاصه، NET Core. شامل موارد زیر است:
NET runtime. مشخصکنندهی نوع سیستم و ارائه دهندهی Assembly Loading، بازیافت حافظه (Garbage collection)، اجرای زبانهای برنامهنویسی مختلف به صورت مشترک در یک سیستم محلی و سایر سرویسهای پایه است.
مجموعهای از کتابخانههای فریمورک (Framework Libraries)
مجموعهای از ابزارهای (SDK (software development kit و کامپایلرهای زبان: NET Core SDK. در واقع ابزارهای توسعه برای NET Core. میباشد که شامل NET Core Runtime. برای اجرا و ابزارهای خط فرمان (Command Line) برای ایجاد اپلیکیشنهای NET Core. مورد استفاده قرار میگیرد.
سخنی با توسعهدهنگان
آنچه NET Core. را محبوب کرده، پشتیبانی آن از اپلیکیشنهایی است که با استفاده از Visual Studio توسط زبانهای برنامهنویسی C#، F# و VB در پلتفرمها و سرویسهای مختلف اجرا میشود.به همین دلیل، HiSupport با استفاده از برنامهنویسی سمت سرور همواره جدیدترین ابزارهای مورد نیاز را در سرورها فراهم کرده و با تهیهی زیرساختهای لازم جهت کدنویسی با استفاده از زبانهای برنامهنویسی مختلف در هاستینگ خود، شرایط را برای اجرای برنامههای تحت وب NET Core. فراهم کرده است.
اما آیا واقعا لازم است که همه برنامه نویسان Net. به یادگیری Net Core. و #C بپردازند؟ چند دلیل ساده برای پاسخ مثبت به این سوال…
1- به آسانی قابل یادگیری است
چنانچه قبلاً با زبانهای برنامهنویسی C، Java و یا حتی Javascript کدنویسی کردهاید، Syntaxهای استفاده شده در #C برایتان بسیار آشنا به نظر میرسند. کدهای #C ساده بوده و به راحتی قابل فهم و خواندن هستند.
منابع آنلاین بسیاری برای یادگیری زبان #C وجود دارد که بسیاری از آنها رایگان و یا کمهزینه هستند. برای مثال:
آموزش زبان NET. و #C توسط مایکروسافت
آموزش تصویری آکادمی مجازی مایکروسافت
چگونه Net Developer. شویم؟
2- زبانی با قابلیتها و ویژگیهای مدرن
NET. و #C با سابقهی بیش از 15 سال به صورت مداوم توسط مایکروسافت و سایر شرکتهای توسعهدهنده رشد یافته و بهینهسازی شده که از آنجمله می توان به ایجاد MVC، Generics، LINQ، Async/Await و … در سال های اخیر اشاره کرد.
در این بین میتوان از NET Core. به عنوان یکی از بهترین بروزرسانیها و تغییرات صورت گرفته نام برد که با ایجاد آن تمامی بستههای ASP.NET مجدداً بازسازی و با ویژگی های زیر بکار گرفته شدند:
این زبان اصطلاحاً Strongly Typed است به آن معنا که در آن امکان تلفیق متغیرهای مختلف درData Typeهای گوناگون وجود ندارد.
دارای کتابخانههای کلاس پایهای (Base Class Library) قوی است.
برنامهنویسی آن غیرهمزمان (Asynchronous programming) با نوعی از رایانش موازی (Parallel computing) میباشد که هر بخش را به صورت مجزا با سرعت بالاتر اجرا می کند. اینگونه میتوان درخواستهای متعدد را از طریق وب به صورت موازی و همزمان با استفاده از Async و Await اجرا کرد.
دارای قابلیت بازیافت حافظه (Garbage collection) است و میتواند حافظه را بصورت خودکار مدیریت کند.
پشتیبانی و امکان استفاده از زبان قدرتند لینک (LINQ)
امکان استفاده از کلاس Generic و List، Dictionary<T, T>
دارای ابزار مدیریت بسته (Package management)
دارای Share Binaries به منظور استفاده و اجرا در فریمورک و پلتفرمهای مختلف
امکان استفاده آسان از فریمورکها به منظور ایجاد اپلیکیشنهای تحت وب MVC و APIهای RESTful
3- قابلیت تطبیقپذیری در وب، موبایل، سرور و دسکتاپ
یکی از بهترین ویژگیهای #C و NET. تطبیقپذیری آنهاست. با استفاده از این دو زبان میتوان برنامههای Desktop، برنامههای تحت وب، سرویسهای Background و حتی به لطف نرمافزار زامارین (Xamarin)، اپلیکیشنهای موبایل ایجاد کرد. تمپلیتهای Net Core. حتی از Bootstrap و npm نیز در بخش کتابخانههای Client-side خود بهره گرفته است.
تطبیقپذیری امری بسیار مهم است؛ چرا که سرمایهگذاری شما از لحاظ وقت و هزینه برای یادگیری یک زبان ممکن است به موارد مهمی از جمله این امر بستگی داشته باشد. در صورت تطبیقپذیر بودن یک زبان میتوانید پس از ساختن اپلیکیشنهای تحت وب در صورت نیاز به ایجاد اپلیکیشنهای موبایل بپردازید.
قابلیت تطبیقپذیری NET Core. حتی باعث شده تا از Microsoft Azure نیز پشتیبانی کند. به راحتی میتوانید آن را اجرا و تنها با چند کلیک از خاصیت Cloud استفاده کنید. Docker نیز به راحتی پشتیبانی شده و به سادگی میتوانید از اپلیکیشن خود در وبسرور آمازون (AWS) و سایر پلتفرمهای هاستینگ استفاده کنید.
4- ابزارهای شگفتانگیز برای توسعه
Visual Studio همواره به عنوان یکی از بهترین محیطهای یکپارچه جهت توسعه نرمافزار بوده است که امکان نصب و استفاده از آن در سیستم عاملهای مختلف وجود دارد. این نرمافزار یک ویرایشگر کد حرفهای است که دارای قابلیتهایی نظیر تکمیل کننده خودکار کد در هنگام نوشتار (Intelligent code completion)، خطایابی (Debugging)، Profiling، یکپارچگی با گیت، تست (Unit testing) و … است. NET Core. از Visual Studio پشتیبانی کرده و امکان ویرایش کدها و استفاده از آپشنهای مختلف این نرمافزار مقدور میباشد. همچنین میتوان برای ویرایش کدها از پلاگینهای خارقالعادهی ویژوال استادیو مثل Resharper استفاده کرد.
همچنین نوشتن و ویرایش کدهای NET Core. با ویرایشگرهای متن ساده نیز امکانپذیر است. برای مثال برای کسانی که به استفاده از ویرایشگرهای vim و emacs عادت دارند، ویرایش کدهای NET Core. و #C را میتوانند بوسیلهی آنها نیز انجام دهند.
5- کتابخانههایی بسته به مهارت شما
NET Core. از کتابخانههای کلاس پایهای استفاده میکند. برخلاف Node.js، عبارات و تابعهای سادهای مانند ()LeftPad درون آن قرار داده شده است. وجود آرایههای کلاسهای پایه تا حد زیادی از نیاز به وجود پکیجهای اضافی میکاهد. مایکروسافت برای پایهریزی و اجرای NET. از پروژهها و انجمنهای گوناگونی نظیر JSON.NET به عنوان یکی از کتابخانههایی پر کاربرد در پروژههای مختلف، کمک گرفته است.
تمامی سرویسهای میزبانی وب ویندوزی HiSupport قابلیت پشتیبانی از Node.js و JSON.NET را دارند.
همچنین مایکروسافت از شیوهها و الگوهای مختلفی برای NET. استفاده کرده است. برای مثال، راههای استانداردی برای دسترسی به دیتا نظیر Entity Framework و فریم ورک مدل-نما-کنترلگر (MVC) به عنوان ابزار درونی تعبیه شده است که اکثر توسعهدهندگان از آن ها استفاده می کنند. این فریمورکها امر جابهجایی و همکاری بین تیمهای مختلف را آسان کرده و برای توسعهدهندگان امکان آگاهی از نحوهی انجام پروژه با سرعت بالا و ویرایش راحتتر آن را فراهم میکند.
6- متن باز بودن NET Core.
شاید همیشه بر این باور بودیم که محصولات Microsoft بسته و غیر قابل انعطاف هستند اما یکی از بزرگترین تحولاتی که در NET Core. روی داده است، Open-source کردن کدها میباشد. تمامی کدهای NET Core. بر روی بستر گیت قرار داده شده است تا هرکس تمایل داشت آن ها را مشاهده و حتی در امر گسترش مشارکت کند. منبع باز کردن NET. تغییری بزرگ و دور از ذهن بود.
به عنوان یک توسعه دهنده ممکن است برای شما هم بارها اتفاق بیافتد که بخواهید نسبت به آنچه از پشت پرده کدها اتفاق میافتد آگاهی پیدا کنید. برای مثال ممکن است شک داشته باشید که آیا ()Dipose که در پایان کار با کامپوننتها از آن استفاده میکنید، در صورت فراخوانیش برای یک Database Connection، ارتباط با دیتابیس را قطع میکند یا خیر. حال چنانچه به طریقی به منبع کدها دسترسی داشته باشید، به راحتی میتوانید جواب این سوالات را پیدا کنید.
حتی اگر کار خاصی با Source Code نداشته و قصد مشارکت در پروژه نیز نداشته باشید، از انجمن بزرگ موجود میتوانید بهره ببرید. در این انجمنها مشکلات و پیشنهادات مطرح و در کوتاهترین زمان ممکن بررسی در موردش صحبت میشود. در نهایت در بسیاری از موارد در زمانی بسیار کوتاه اقدامات لازم در خصوص آنها انجام میشود. دیگر زمان انتظار تا انتشار نسخهی اصلی جدید برای انجام بهینهسازیها و بروزرسانیهای لازم و یا انتظار تا انتشار نسخههای فرعی جهت رفع مشکلات و باگهای موجود گذشته است. NET. با HiSupport قویتر از همیشه در کنار شماست.
حرف آخر!
همواره برنامهنویسان چندزبانه (اصطلاحاً Polyglot) مورد توجه و مهارت کاربردی آنها زبانزد عموم افراد بوده است. چندزبانه بودن بیشتر شامل مهارت کدنویسی با زبانهای برنامهنویسی PHP، Ruby، Python، Scala، Go، Node.js، Swift و … میباشد. کار حیرتانگیزی که مایکروسافت و انجمن دات نت با NET Core. کرده، آدم رو به وجد میآره! وقتی که میدونید اپلیکیشن NET. شما بر روی Mac نیز اجرا میشه، این یه خبر خیلی خوبه که بعد از سالها بالاخره چنین تغییری رخ داده.
مشکل اکثر زبانهای برنامهنویسی اینه که اونها فقط در یک مورد خیلی خوبن. مثلا Ruby و PHP برای برنامههای تحت وب عالین. Swift و C شی گرا برای ساختن برنامههای iOS و MacOS خوب هستن. زمانی که میخواید یک سرویس Background بنویسید، Python، Java و سایر زبانها به کمکتون میان. در کنار C#، احتمالاً فقط JavaScript و Java هستن که ممکنه در خیلی از جاها به کارتون بیاد و بتونین پروژهها رو پیش ببرید.
حتی اگر زبانهای برنامهنویسی زیادی هم بلد باشین، ممکن هست سخت باشه تا با استفاده از مهارتتون از عهدهی تمام مشکلات بر بیاید و این مورد ممکنه فرصتهای شغلیتون رو محدود کنه. نکتهی مهم و جالبی که در مورد #C وجود داره اینه که بسیار تطبیقپذیر هست و میتونین اون رو برای انواع مختلفی از اپلیکیشنها به کار ببرید. حالا با NET Core.ای روبهرو هستیم که در MacOS و Linux نیز به راحتی کار میکنه و حقیقتاً دیگه کاری نیست که شما نتونید باهاش انجام بدین!
بعضی جاها خیلی چرت گفتی، مثلا دات نت فریم ورک هست نه زبان
از توجه و نکته سنجی شما متشکریم.
در قسمتهای ابتدایی این مقاله ASP.NetCore و همینطور .Net به عنوان یک فریم ورک معرفی شده و سپس با دیگر روشهای برنامه نویسی که برخی زبان و برخی فریم ورک هستند مقایسه گردیده است. گاها زبان با فریم ورک همپوشانی زیادی دارد که در برخی مفاهیم اختلافی بین آنها وجود نداشته و ممکن است از واژه زبان نیز استفاده شود.
موفق باشید.
سلام خسته نباشید
با توضیحاتی که در مورد زبان سی شارپ و فریمورک asp.net فرمودید پس چرا شما با وردپرس طراحی شده؟
با سلام و تشکر از توجه شما،
هر پلتفرم برنامه نویسی طبیعتا مزایا و قابلیت هایی دارد در PHP فریم ورک محبوب لاراول و در محصولات مایکروسافت، ASP.NetCore است. این انتظار شما و هدف گذاری برای ساختار وبسایت است که می تواند انتخاب نهایی را از جهات مختلف در بر داشته باشد. مواردی چون: وقت، هزینه، دانش، قابلیت ها و امکانات، سادگی کار، قابلیت توسعه سریع، در دسترس بودن، امنیت، سرعت، پشتیبانی، انعطاف پذیری و …
همچنین ممکن است در مواردی پلتفرم های برنامه نویسی بر موضوعی خاص تاکید داشته باشند. برخی برای توسعه اپلیکیشن، برخی API، برخی ها وب و وبسایت، برخی ساختار مبتنی بر MVC و دیگری شی گرا و سایر کاربردهای دیگر که با مطالعه در مورد هر یک و تطبیق با نیاز خود می توانید انتخابی درست داشته باشید.
و البته وردپرس مبتنی بر PHP می باشد.
سلام وقت بخیر. تشکر بابت مقاله کامل و مفید.
من آشنایی خاصی با برنامه نویسی ندارم و فقط تجربه کد نویسی جاوا اسکریپت رو دارم میخواستم راهنمایی کنید که برای شروع یادگیری .net core دقیقا چه پیش نیازهایی رو باید قبلش پاس کنم ؟ مثلا زبان های برنامه نویسی پایه مثل C باید یاد بگیرم ؟
با سلام،
خوشحالیم که این مطلب مورد توجه شما قرار گرفته.
در پاسخ به سوال شما، توصیه می شود ابتدا با C# و همینطور ASP.Net MVC کار کنید. این دو را می توان از پیش نیازهای ASP.NetCore تلقی کرد.