В последнее время все становится довольно запутанным. Есть .NET Framework, есть .NET Core, и есть .NET. Все они в значительной степени похожи между собой, но при этом сильно отличаются друг от друга.
Как Open Source навсегда изменил .NET
В последнее время все становится довольно запутанным. Есть .NET Framework, есть .NET Core, и есть .NET. Все они в значительной степени похожи между собой, но при этом сильно отличаются друг от друга.
Все началось с .NET Framework в 2002 году. За последние двадцать лет программное обеспечение изменило наше общество. Теперь люди и компании полагаются на ПО гораздо больше, чем в 2002 году. Разработка ПО как профессия тоже изменилась. Обычный разработчик сегодня намного охотнее делится знаниями о своей профессии с другими девелоперами программного обеспечения, чем в 2002 году.
С течением времени изменилась и разработка .NET. Ведь .NET стал целым сообществом, а не только языком программирования, каким его считали некоторые. .NET Framework и .NET Core/.NET - это существенно разные вещи.
Тут речь пойдет о том, как .NET Framework, а значит, и работа современного .NET-разработчика изменились за последние двадцать лет. Давайте немножко вернемся в прошлое:
Как появилась платформа .NET Framework
Все началось в 2002. До 2002 года создание приложений на языке программирования Microsoft было далеко не легкой прогулкой... Вместо .NET у нас был язык программирования Visual Basic. На нем также можно было создавать веб-сайты, это и назвали ASP. Он был неплох, но PHP и Java его превосходили, и все больше и больше разработчиков уходили от языков программирования Microsoft.
Поэтому в 2002 году компания Microsoft представила .NET Framework. Это гораздо более мощная среда приложений, разработанная так, чтобы ее могли легко освоить программисты на C++, Java и Visual Basic. С какой целью? Вернуть всех к программированию на языках Microsoft. И это сработало.
Внедрение Open Source
Когда в 2002 .NET Framework был впервые представлен, обмен идеями и наработками между программистами в Интернете не был запрещен с точки зрения компании. Да, Open Source существовал уже тогда, но большинство людей не понимали его сути и думали, что он означает бесплатное ПО.
С каждым годом проектов с открытым исходным кодом появлялось все больше и больше. Люди тратили свое свободное время на создание приложений и охотно делились кодом в Интернете.
Многие подходили к Open Source с другой стороны. Они рассуждали так: "А зачем платить за поддержку программного обеспечения, которое не дает нам конкурентных преимуществ? Давайте сделаем его открытым, поделимся им с другими компаниями, и пусть сопровождение станет коллективной работой. Это снижает затраты на разработку ПО и делает его гораздо дешевле и быстрее.
Некоторые компании на основе Open Source выстравивали бизнес-модель. Используя в разработке открытый код, они создавали спрос уже на платный продукт, т.е., получали прибыль.
В итоге, сегодня большая часть вашей кодовой базы на самом деле не является вашей
Примерно в 2010 году Open Source окончательно прижился в сообществе .NET. Тогда появился менеджер пакетов под названием NuGet. По сути, это означало, что разработчики с помощью Visual Studio могли загружать фрагменты ПО с открытым исходным кодом в свои программы.
Менеджер пакетов NuGet в Visual Studio. Загружайте все, что только захотите!
Open Source стал доступным для рядового разработчика, и многое изменилось. Хотите отправить электронное письмо? Для этого не надо писать код! Скачайте пакет NuGet! В результате любая задача, которую нужно было реализовать, загружалась в программу в виде NuGet-пакета, и разработчику лишь оставалось написать то, что имело значение: бизнес-логику.
Природа программного обеспечения менялась на глазах. Большая часть любого приложения представляла собой связку (совокупность) пакетов NuGet, сшитых вместе некоторым пользовательским кодом. Та часть, которой управляла команда разработчиков, стала значительно меньше, чем раньше.
Да здравствует .NET Core
В 2016 году цели, поставленные компанией Microsoft перед .NET Framework, были успешно достигнуты. .NET Framework был признан зрелой, мощной платформой приложений, и многие компании использовали его для создания своего ПО.
Но. к тому времени Microsoft уже наметила новые цели. В 2010 году компания Microsoft представила Microsoft Azure. Вместо торговли лицензиями на Windows, Microsoft решила продавать инфраструктуру, работающую на платформе Azure. Для этого язык программирования должен был стать независим от платформы, а .NET Framework был как раз противополжностью этому. Поэтому от .NET Framework отказались. Microsoft представила его преемника: .NET Core, независимую от платформы систему приложений, совместимую с облаками Azure, AWS и Google cloud.
Нестабильность .NET (Core)
До 2016 года обновления .NET Framework не имели большого влияния. Microsoft пыталась сохранить поддержку функций из старых версий .NET Framework. Но это изменилось. Microsoft объявила о прекращении выпуска новых основных версий .NET Framework. Они не могли полностью отказаться от фреймворка, потому что слишком много компаний сильно зависели от него.
Вскоре Microsoft представила .NET Core 2. Компания не слишком позаботилась о его совместимости с .NET Core. Позже был выпущен .NET Core 3. И снова, они не очень озадачились совместимостью с .NET Core. А затем компания и вовсе отказалась от .NET Core и представила нечто совершенно иное: .NET 5, а затем и .NET 6. Microsoft объявила .NET Core 1 и 2 устаревшими. И все это произошло в течение 6 лет.
Ествественно, что и компаниям, и сообществам Open Source, которые работали в .NET Core, было трудно угнаться за такими темпами. Так как все эти версии фреймворка были несовместимы друг с другом, было практически невозможно поддерживать версии ПО для всех этих версий .NET. Так что на деле оставалось два варианта: вы либо продолжаете использовать .NET Framework, либо обновляетесь до последней (LTS) версии .NET Core/.NET.
В результате этого сообщество разделилось: есть разработчики .NET Framework и разработчики .NET (Core). И они весьма отличаются друг от друга.
Большинство проектов с открытым исходным кодом предпочли оставаться в курсе последних версий .NET. Поэтому, большинство Open Source-проектов прекратили поддержку .NET Framework. В результате .NET Framework стало гораздо сложнее использовать с новейшими платформами и технологиями. .NET Framework был низведен до уровня языка программирования старой школы, языка программирования для крупных предприятий, не использующего облачные технологии.
Microsoft ❤ Open Source, Java, and Linux
Микрософт сделала еще несколько радикальных изменений. Для начала они открыли доступ к .NET Core. Теперь каждый мог внести в него свой вклад. В какой-то момент они решили дополнить это приобретением самой большой онлайн-платформы с открытым исходным кодом (GitHub).
А поскольку Microsoft занимается продажей инфраструктуры на Azure, нет смысла исключать приложения на базе Java. Таким образом, Microsoft Azure совместима и с ними.
Как Docker и облако открыли новое измерение в разработке программного обеспечения
Как уже упоминалось, Open Source проявляется в пакетах NuGet. Это небольшие фрагменты программного обеспечения, которые можно включить в приложение .NET. Но с появлением Docker эта концепция вышла на новый уровень.
В Microsoft Azure (или любой другой облачной платформе, если на то пошло) можно запускать контейнеры Docker. Композиция контейнеров превращается в одно логическое приложение, ориентированное на потребителя. Это позволяет разработчикам создавать приложения, состоящие из частей, которые могут быть написаны на разных языках программирования.
Эта концепция привнесла новое измерение в разработку программного обеспечения. Чтобы эффективно работать таким образом, разработчики теперь должны были хорошо понимать, как работает инфраструктура. По сути, разработчик становился ответственным за выбор фрагментов инфраструктуры.
Нехватка разработчиков программного обеспечения
Короче говоря, в отличие от разработки .NET Framework, разработка .NET превратилась в нечто большее, чем просто написание кода. Стало необходимо быть в курсе последних инициатив Open Source, контейнерных платформ, инфраструктуры и многого другого.
В результате разработчикам .NET понадобились источники информации, чтобы оставаться в курсе событий. Желательно в увлекательной форме. Поэтому разработчики начали делиться своими знаниями, проводя бесплатные мини-семинары на meetup.com. Там отсутствует оплата за вход, а участники обычно получают бесплатное питание. Как правило, люди общаются друг с другом, чтобы узнать другую точку зрения на вопрос.
Резюме
Фреймворк .NET Framework - это мощная платформа для разработки приложений, которая работает под управлением Windows. Это затрудняет ее запуск в Azure. Корпорация Microsoft решила представить .NET Core: фреймворк для разработки приложений, не зависящий от операционной системы.
После представления .NET Core компания Microsoft решила не тратить слишком много усилий на обеспечение совместимости новых версий .NET Core друг с другом. Это заставило многих разработчиков выбрать один из двух путей: либо придерживаться .NET Framework, либо переходить на .NET Core.
Обычно люди выбирали .NET Core, когда запускали свои программы в облаке. Но разработка программного обеспечения в облаке стала самостоятельной профессией. Это гораздо больше, чем просто писать код на C#.
Чтобы идти в ногу со временем, разработчики .NET начали устраивать встречи друг с другом, писать блоги, делиться кодом на GitHub и так далее. Таким образом они могли быть в курсе событий в мире, который меняется быстрее, чем когда-либо прежде.
Одним словом, если коротко о главное: .NET Framework и .NET Core - это две совершенно разные вещи (или, как говорят в Одессе - две большие разницы).