هادی شجاعیان
هادی شجاعیان
خواندن ۷ دقیقه·۲ سال پیش

تاریخچه دات نت(Net.)، مایکروسافت مهاجرت از درهای بسته به شرکتی دموکراتیک

داستانی به نام دات نت فریمورک (FROM .NET FRAMEWORK UP TO .NET5 )

قبل از اینکه بخواهیم به تاریخچه دات نت فریمورک بپردازیم، لازم می بینیم کمی از سیاست های شرکت مادر دات نت یعنی مایکروسافت اطلاعاتی بدست بیاوریم. مایکروسافت شرکتی که همیشه پشت درهای بسته کارش را انجام میداد، اصلا میونه خوبی با برنامه های متن باز نداشت کارش بدین صورت بود که تیم بر روی محصول کار می کرد هر چندسال یکبار آپدیت می داد عرضه می کرد، بنابراین همیشه چند خصلت بد را یدک می کشید => روند رشد کند، مستندات ضعیف، اوپن سورس نبود، فعالیت پشت درهای بسته => ایراداتی که جامعه نرم افزاری همیشه به مایکروسافت وارد می کرد و به حق هم بود.

رویکردی که در بالا اشاره شد دلایل کافی بود تا مایکروسافت به تدریج افول کند. جریان رقابت با اندروید و گوگل هنوز به خاطرمان است، وارد رقابتی مسخره با اندروید و گوگل شد، نوکیا را بدون هیچگونه برنامه ای خریداری کرد و در کنار آن ویندوز فون را معرفی کرد، کاملا مشخص بود قبل از شروع مسابقه رقابت را به گوگل و اندروید باخته است. چون هیچ ارزش افزوده جدیدی را برای رقابت با اندروید و شرکت گوگل ارائه نمی کرد، برنامه درست و حسابی هم نداشت. با همان سیاست های قدیمی وارد رقابت با دنیای جدید شده بود تا اینکه ساتیا نادلا رهبری مایکروسافت را به عهده گرفت، مسیح مایکروسافت از راه رسید و روح تازه ای در کالبد بی جان مایکروسافت دمید.(کتاب از نو نوشته ساتیا نادلا پیشنهاد می کنم).

قسمت1 پیدایش دات نت فریمورک Net Framework.

مایکروسافت دانت فریمورک را در سال 2002 به بازار ارائه کرد، با استقبال خوبی هم روبرو شد، تا قبل از ارائه دات نت فریمورک مایکروسافت فقط ویژوال استودیو را داشت و یکسری زبان برنامه نویسی ارائه می کرد و می توان گفت بستر مناسبی برای توسعه نرم افزار ایجاد نکرده بود به همین دلیل مایکروسافت عملا در مقابل رقبا خیلی حرفی برای گفتن نداشت و باید برای ادامه مسیر چاره اندیشی می کرد. من یادم هست اون زمان دلفی رقیب جدی برای مایکروسافت محسوب می شد. مایکروسافت برای اینکه بتواند حرفی برای گفتن داشته باشد نیاز به یک بستر جدید داشت تا بتواند بستری را فراهم کند که برنامه نویس بدون درگیر شدن با مفاهیم سطح پایین تر کدنویسی کند و نرم افزار طراحی کند. چاره اندیشی مایکروسافت منجر به => متولد شدن بستر دات نت فریمورک شد.

دات نت فریمورک به کمک CLR یک لایه واسط بین سیستم عامل و نرم افزار ایجاد می کند، بدینصورت که برنامه شما با سیستم عامل در ارتباط نیست، نرم افزار ما در بستر دات نت فریمورک اجرا میشه و این دات نت فریمورک است که با سیستم عامل تعامل می کند و مدیریت اجرای برنامه ما را به عهده دارد( برای اطلاعات بیشتر می تونید در مورد زبان های بر پایه CLR مطالعه کنید ) به همین دلیل مایکروسافت ادعا کرد با توجه به این قابلیت می توانیم Cross Platform باشیم، بدین صورت که نرم افزار را تولید کن و در هر سیستم عاملی که خواستی اجرا کن.( اما هیچوقت این ادعا عملی نشد )

قسمت 2 مشکلات دات نت فریمورک و پیدایش Mono

  • 1.ادعای Cross Platform

هیچوقت این ادعای مایکروسافت عملی نشد، نه تنها عملی نشد بلکه تا آنجایی پیش رفت که Net Framework قسمتی از خود ویندوز شد، همراه با ویندوز دات نت فریمورک نصب می شد و تمام. اما این تازه شروع ماجرا بود، عده ای از برنامه نویس ها که با دات نت فریمورک و زبان سی شارپ حال می کردن و این بستر را مناسب می دیدن،( شاید هم سود مالی، یعنی متوجه این خلا شدن و تصمیم گرفتن با پر کردن این خلا و فروش شرکت به مایکروسافت درآمدزایی ایجاد کنن) متوجه شدن گویا مایکروسافت قرار نیست به وعده Cross Platform که داده بود عمل کند، نتیجه گرفتن خودشان دست به کار بشوند و یک بستر ایجاد کنن، پروژه Mono استارت خورد، در حال حاضر شرکتی به نام زامارین که یک شرکت تابع شرکت مایکروسافت می باشد، توسعه آن را بر عهده دارد، توسط این فریمورک ( زامارین )شما می توانید با زبان سی شارپ برنامه هایی برای IOS, Android , Windows تولید کنید.

پروژه Mono
پروژه Mono
  • 2.دو فریمورک جدا

بنابراین ما الان دو فریمورک جدا داشتیم، دات نت فریمورک که توسط مایکروسافت توسعه داده شده بود و کلاس های خودش را داشت( Net Framework BCL.) و فریمورک دیگری که ادعا می کرد کپی برابر اصل دات نت فریمورک است به نام Mono BCL، اما قطعا در جزئیات شبیه هم نبودن، چون دو تیم جدا بودن و مضاف بر آن تیم مونو دسترسی به کدهای داخلی کلاس های دات نت فریمورک که نداشته، بنابراین قطعا در جزئیات مشابه نبودن. اما به هر حال با دو فریمورک طرف بودیم. تصویر زیر به خوبی نشان می دهد. وقتی با دو فریمورک طرف هستیم، اشتراک گذاری کدها یکی از دغدغه های اصلی برنامه نویسان می شود، کدی که نوشتم آیا با همان کیفیت در فریمورک دیگر اجرا می شود یا خیر.

.NET Framework Vs Xamarin
.NET Framework Vs Xamarin


  • 3.دات نت فریمورک مناسب نیاز روز نبود( Net Core. ):

نوبت رسیده بود به پردازش ابری و سرویس های ابری، دات نت فریمورک برای این وضعیت اصلا آماده نبود، فریمورکی کند که نمی تونست برای این شرایط خودش را آماده رقابت کند، بنابراین مایکروسافت دوباره باید چاره اندیشی می کرد، مایکروسافت نیاز به یک دات نت فریمورک جدیدتر داشت، بنابراین تصمیم گرفت یک پروژه جدید برای بازنویسی دات نت فریمورک خودش شروع را استارت بزند و حاصل این تصمیم ارائه Net Core. بود.

دات نت کور(Net Core.) دو تا عضو جدید داشت Dot Net CLI و Asp .NET Core، اکنون ما با 3 تا فریمورک طرف بودیم، همانطور که در عکس مشاهده می کنید. برنامه نویس رسما در اشتراک گذاری کد قاطی می کرد و از طرفی آپدیت برای خود مایکروسافت هم سخت بود، نمی شد یکبار ورژن Net Framework را آپدیت کنی یکبار Net Core و یکبار Xamarin، اینجا بود که مایکروسافت Net Standard Library. را منتشر کرد. یعنی به عبارتی شما می گفتید من برنامه خودم را با Net Core. نوشتم با Net Standard. ورژن 2 یا 2.1 یا هر ورژن دیگر. یعنی استاندارد سازی ورژن های ما برای اساس Net Standard جلو می رفت.( حواسمون هست دیگه Net Standard استاندارد هستش، پیاده سازی نیست) در تصویر می تونید مشاهده کنید. به نظر من کار منطقی هم بود، نمیشد مایکروسافت یکبار آپدیت بده بگه این آپدیت مختص Net Framework. است و یکبار دیگه برای Xamarin، تصور کنید چقدر مدیریت کدها سخت و مایکروسافت هم کلا confuse می شد.

قسمت 3 مشکلات هنوز حل نشده بود، انتشار Net5.

کماکان مشکلات مایکروسافت با دات نت فریمورک حل نشده بود، و هنوز هم باید راه حل مناسبتری پیدا می کرد برای حل مشکلات جدید خودش، مشکلاتی که مایکروسافت با ارائه دات نت کور کماکان باهاش روبرو بود

  • کماکان چندین بستر مختلف داریم: تصور کنید یک ماژول در دات نت استاندارد وجود داشت اما ممکن بود در فریمورک های متفاوت خروجی متفاوت می گرفتی، بنابراین خیلی با اطمینان نمی تونستی خروجی یکسانی در فریمورک های متفاوت بگیری.
  • سرعت توسعه Net Core. نسبت به Net Framework.: دات نت کور یک تیم جدید، سریعتر، چابکتر در مقابل دات نت فریمورک قدیمی تر، خسته تر، نمی تونستند پا به پای هم پیش بروند، یکی باید برای اون یکی باید قربانی می شد.

مایکروسافت برای حل مشکلات بالا تصمیم گرفت یک ترکیب جدید ایجاد کند و حاصل این ترکیب جدید تولد Net5. شد. ترکیب دات نت فریمورک، دات نت فریمورک کور، زامارین شد => دات نت5

پیدایش Net5.
پیدایش Net5.


مایکروسافت از ورژن دات نت کور3.1 و دات نت فریمورک 4.8 پرش کرد و در سال 2020 دات نت5 را ارائه کرد. مایکروسافت تصمیم گرفت فقط یک فریمورک داشته باشد و فقط آنرا پیش ببرد و آن دات نت بود که اولین نسخه آن دات نت5 بود و ورژن های بعدی دات نت6، دات نت 7 و دات نت8.

بنابراین ما یک کراس پلتفرم روبرو هستیم به نام دات نت که با آن می توانیم برای هر سیستم عامل و هر دستگاهی نرم افزار تولید کنیم.

دنیای دات نت
دنیای دات نت

قسمت پایانی زمانبندی انتشار دات نت توسط مایکروسافت

مایکروسافت بعد از انتشار دات نت5 تصمیم گرفت در بازه های زمانی مشخص آپدیت جدید عرضه کند.برای محیط های عملیاتی نسخه های LTS پیشنهاد می شود چون پشتیبانی بیشتری دارند.

قبل از معرفی دات نت فریمورک من یادم هست با ویژوال بیسیک کد میزدیم چقدر با فایل های DLL مشکل داشتیم بخصوص استفاده آنها در کامپیوتر مقصد، یادم هست پروژه دوره کاردانی از یک DLL استفاده کردم که ماژولی داشت برای تلفظ لغت انگلیسی، برای نرم افزار دیکشنری که طراحی کردم استفاده می کردم وقتی برنامه را بردم روی سیستم دانشگاه هر کاری کردم اجرا نکرد که نکرد، یکی از مشکلات تکنولوژی COM استفاده از فایل های DLL در کامپیوتر مقصد بود. البته این چیزا رو نمیدونستم، فقط از اجرا نشدن داشتم حرص می خوردم البته الان هم خیلی نمیدونم.

پایان.


مایکروسافتدات نت کور
مهندس نرم افزاری که فول استک دولوپر است، استارتاپ یک سبک زندگی است
شاید از این پست‌ها خوشتان بیاید