وبسایت شخصی حسن هاشمی

برنامه نویس. ایران. قم :))

اجرای برنامه های Net. روی لینوکس و مک

اواخر سال 2014 بود که اخباری رو از مایکروسافت در جهت انتقال .Net به پلتفرم های دیگه توی سایت مایکروسافت خوندم، اولش فکر کردم دارن میبافن و دارن برای زامارین تبلیغات می کنن :)

مایکروسافت محصول جدیدی به نام Net Core. رو معرفی کرده که اصولاً قراره برادر کوچکتر Net Framework. اصلی باشه، و روی لینوکس و مک اجرا میشه.

توی این پست می خوام امکانات این محصول جدید رو بررسی کنم.

یه دیاگرام که مایکروسافت آماده کرده رو ب��اتون میذارم:


از اونجایی که ورژن جدید net core. به صورت open source روی github و اینجا ارائه شده دریافت اطلاعات در مورد نحوه پیاده سازیش کار آسونیه.

به صورت پیش فرض net core. روی ویژوال استودیو 2015 نصب شده هست.

ورژن جدید به عنوان یه فورک از دات نت فریمورک اصلی شروع شد و مایکروسافت قسمت هایی که به سیستم عامل ویندوز وابسته بود رو به نحوی بازنویسی کرده که مستقل از پلتفرم باشن.

یعنی بخش هایی از CLR که مستقیماً توابع WIN32 رو استفاده می کردن به صورت سنتی در قالب ifdef# و ifndef# های زبان C باز نویسی شدن یه چیزی توی این مایه ها که خودم استفاده می کنم همیشه:

#ifdef _WIN32 
    // define functions for windows
#elif __linux__
    // Linux API
#elif __APPLE__
    // MAC OS API s
#endif

یه کم ترسناکه برای پروژه های بزرگ ولی اینا واقعاً همین روش رو استفاده کردن :).

قست BCL از دات نت جدید CoreFX نامگذاری شده و CLR جدید هم CoreClr گفته میشه.

در حال حاضر مایکروسافت تلاشش رو برای توسعه api های net core. روی بخش هایی گذاشته که بتونن asp.net رو روی لینوکس اجرا کنن. یعنی نمیشه به این زودیا توقع داشت که شاهد WPF روی لینوکس باشیم چون همونطور که می دونید وقتی پای UI میاد وسط همه سیستم عامل ها خیلی سفارشی شده api ها شون رو طراحی می کنن و برای اینکه بتونیم یه فریمورک UI مستقل از پلتفرم داشته باشیم یا باید بین همه سیستم عامل ها یه مخرج مشترک بگیریم که باعث میشه کیفیت محصول نهایی بیاد پایین (چون از همه امکانات سیستم عامل نمشیه استفاده کرد) و راه دوم هم اینه برای هر سیستم عامل جدا پیاده سازی کنیم که خیلی زمان بره.

DNX

اصطلاحاً به مجموعه core clr و corefx و یه سری کتابخونه کمکی که وظیفه لود کردن برنامه های net core. رو توی سیستم عامل موقع اجرا دارن DNX گفته میشه.


یکی دیگه از ویژگی های منحصر به فرد پیاده سازی ورژن جدید ماژولار بودنش هست. دیگه خبری از نصب net framework. به صورت machine wide نیست یعنی هر برنامه ورژن دات نتی که استفاده می کنه رو توی فولدر جداگونه داره و این طور نیست که که یه بار دات نت فریورک نصب بشه و تمام برنامه های نصب شده از همون استفاده کنن یعنی dnx های مختلف روی یه ماشین وجود خواهند داشت.

دوماً اینکه تمام بخش های dnx به وسیله Nuget روی ماشین کلاینت آورده میشن.


این خاصیت ابزاری رو می طلبه که ورژن های مختلف dnx رو روی یه ماشین مدیریت کنه که مایکروسافت به این منظور ابزاری رو به نام dnvm همراه با ویژوال استودیو 2015 ارائه کرده.

برای شروع بذارید یه dnx نصب کنیم:

1- ابتدا developer command prompt ویژوال استودیو 2015 رو باز کنید و تایپ کنید dnvm.

2- تایپ کنید dnvm install latest

همین دوتا دستور آخرین ورژن dnx رو توی پوشه C:\Users\<UserName>\.dnx براتون نصب می کنه. 


و برای اینکه وبسایت asp.net قابل اجرا روی لینوکس تون رو هم تحت dnx ی که نصب کردید بسازید تنها کافیه توی ویژوال استودیو 2015 توی قسمت Preview ها یکیشون که مربوط به asp.net هست رو انتخاب کنید بعد توی قسمت Properties پروژه تون ورژن dnx دلخواه رو انتخاب کنید.



پیاده سازی net core. جزئیات زیادی داره که مجال توضیحش توی یه پست نیست اما خوشبختانه چون open source هست مستقیماً میتونید در جریان کارها و تست هایی که روی هر بیلد انجام میشه قرار بگیرید به عنوان مثال پایین این صفحه نتایج تست هایی بعد از هر بار بیلد روی سیستم عامل های مختلف انجام میدن رو روزانه آپدیت می کنن.

و البته می تونید از  visual studio code که قابل نصب روی لینوکس هم هست استفاده کنید.

یه اسکرین شات هم ازون میذارم که ست کامل بشه :)


نظرات (1) -

Loading