.NET Core як потужний інструмент оптимізації програмного забезпечення і спрощення процесу розробки



Дана стаття присвячена розгляду нових можливостей,що надає програмна платформа .NET Core. Виявлено, що разом з перевагою кросплатформності .NET Core має ряд модернізацій, що роблять її потужним інструментом оптимізації програмного забезпечення і спрощення процесу розробки. Проводиться порівняння певних аспектів програмної платформи .NET Core. і .NET Framework в результаті якого виявлено такі переваги .NET Core: модульність, керованість, розширюваність.

.NET CORE, .NET FRAMEWORK, КРОСПЛАТФОРМНІСТЬ, СЕРЕДОВИЩЕ ВИКОНАННЯ, СТАНДАРТНА БІБЛІОТЕКА, ДИНАМІЧНО ПРИЄДНУВАНАБІБЛІОТЕКА

.NET Core as a powerfulinstrument for software optimization and simplification of a development process

Prokhorova Keteryna Serhiivna Full-time student, _The National Technical University of Ukraine “Kyiv Polytechnic Institute_ Ukraine, Kyiv

This article is dedicated to consideration of new features, which areprovided by .NET Core software platform. Was revealed that .NET Core isn't justcross-platform framework, but it is also a powerful tool for optimizing and simplifying a development process. A comparison of certain aspects of .NETCore. and .NET Framework software platforms led to revealing of such .NET Core advantages: modularity , manageability, extensibility.

.NETCORE, .NET FRAMEWORK, CROSS-PLATFORM, RUNTIME, STANDARD LIBRARY, DYNAMIC-LINKLIBRARY

Історія .NET Framework налічує більше 15 років. За цей період програмна платформа обростала новою функціональністю, додавались нові компоненти і розширювався діапазон мов, що підтримувались. Той факт, що платформа .NETFramework розрахована на роботу під операційними системами сімейства MicrosoftWindows зумовив виникнення проектів Potable .Net і Mono метою яких надання кросплатформної втілення .NET Framework. Багатокомпонентність і мультифункціональність платформи .NET Framework є причиною виникнення труднощів при досягненні поставленої мети. Тому й виникають численні проблем з стандартизацією, а користувачі стикаються з обмеженнями у використанні різноманітних аспектів .NET Framework. З огляду на це, можна стверджувати, що є необхідність у представленні цілісного і ефективного рішення, що забезпечить .NETFramework перевагою кросплатформності і відповідність ESMA стандартам. Рішення було представлено MicrosoftCorporation. Наразі розробляється нова платформа, що використовує здобутки .NET Framework, названа .NET Core і вже доступна версія .NET Core 1.0. .NET Core – це кросплатформна реалізація .NET, що має низку суттєвих відмінностей і модернізацій відносно свого попередника. .NET Core включає середовище виконання CoreCLR, бібліотеку класів CoreFX, що прийшли на заміну Common Language Runtime(CLR) і Base Class Library (BCL). Бібліотека BCL встановлюється централізовано і всі .NET програми сумісно її використовують. .NET Core надає більш гнучкий підхід. По-перше, розробник може самостійно обрати яку версію бібліотеки використовувати. По-друге, завдяки специфічній структурі CoreFX, є можливість підключити окремі бібліотеки у вигляді пакетів за допомогою NuGet. CoreFX побудована як набір бібліотек-компонентів, що розроблювались таким чином, щоб мінімізувати залежності від інших бібліотек. Наприклад,System.Collections тепер зележить лише від System.Runtime, а в .NETFramework ця бібліотека залежить також і від System.Xml. Тобто розробник підключає лише ті бібліотеки, що необхідні. Вони будуть включені як частина додатку і поставлятимуться разом з ним з метою усунення конфліктів з централізовано встановленою версією і труднощів при розгортанні додатку. Так само як і з бібліотеками, можливість обирати необхідне середовище виконання також присутня. Можна використовувати CoreCLR чи .NET Native для додатків Universal WindowsPlatform (UWP). Крім того, наразі у процесі розробка нове середовище виконання для .NET Core - CoreRt, що оптимізоване для Ahead-of-Time (AOT) компіляції. Вже випущено бета-реліз - CoreRT for CLI Beta 01-15-2016. Ще одною модернізацією є те, що .NETCore дозволяє розробнику налаштовувати і контролювати середовище виконання. Це спрощує процес написання коду, гарантує безпечне виконання та служить інструментом оптимізації і забезпечення сумісності з машинним кодом. Разомз середовищем виконання і бібліотекою класів .NET Core включає компілятор, який також можна обирати на розсуд програміста і підключати за допомогою NuGet. Для компіляції в байткод може використовуватись NET Compiler Platform (кодова назва Roslyn). Roslyn написаний на керованому коді, надається у вигляді динамічно приєднуваних бібліотек. .NET Core дозволяє повністю використовувати всі переваги використаного у Roslyn підходу «компілятор як сервіс». Розробнику надається графічний інтерфейс в якому можна переглянути дані проходження процесу компіляції. Це надає додаткові можливості для відлагодження коду. Якщо говорити про компіляцію в машинний код, то наразі .NET Core містить вбудований модернізований just-in-time(JIT) компілятор RyuJIT для компіляція «на льоту». Його задача підвищити швидкодію без погіршення, а може, й покращення якості, отриманого коду. Крім стратегію JITв .NET Core доступна також інша стратегія - Ahead ofTime(AOT), в цьому напрямку йде робота над середовищем виконання CoreRt і компілятором LLILC. Стратегія AOT означає, що компіляція виконується перед виконанням. Необхідно зазначити, що є аспекти в яких .NET Core поступається останній версії .NETFramework - .NET Framework 4.6.1. Оскільки .NET Core зовсім молода платформа, не всі можливості, що реалізовані в останній версії .NET Framework доступні в .NET Core. Але розробка ведеться дуже динамічно завдяки наступним обставинам: .NETCore є пріорітетним напрямок для Microsoft, проект має відкритий програмний код і доступній на GitHub, спільнота .NET Foundation бере активну участь у процесі розробки. Варто зауважити таку важливу річ: Microsoft анонсує, що нові версії .NET Coreвипускатимуться значно частіше ніж релізи .NETFramework. Це означає, що настане момент, коли в .NETCore з`являться елементи не доступні в .NETFramework. Як перевагу .NET Framework можна розцінювати те, що належність платформи до Windows компонентів забезпечує їй обслуговування і оновлення засобами Windows Updates. Підхід, що застосовує .NET Core, вбачає включення певних компонентів платформи безпосередньо в розроблювані додатки. Таким чином, кожен додаток має свій власний набір різноманітних компонентів. Тому, вони повинні обслуговуватись через NuGet, а не через оновлення операційної системи. Наприкінці наведемо конкретні рекомендації щодо випадків, коли доцільно використання .NET Core, а коли .NET Framework. Для створення десктопних додатків для Windows альтернативи відсутні – зараз і надалі використовуватиметься .NET Framework. .NET Core варто використовувати для написання ASP.NET, консольних та UWP додатків, а також бібліотек тафреймворків. У всіх інших випадках використовується на сьогоднішній день .NET Framework. На ділі спектр використання .NETCore буде розширюватись, а щодо програмного забезпечення, що не може бути написане на платформі .NET Core сьогодні, можна застосовувати наступний принцип: використовувати сервіси написані на .NET Core в сценаріях програм. Корисно знати, що у деяких випадках код, написаний використовуючи .NET Framework, може бутибез змін перенесений на .NET Core. Для перевірки цього можна використати .NET Portability Analyzer. Виходячи з вищенаписаного можна підсумувати, що разом з кросплатформністю .NET Core надає ряд інших переваг, а саме: модульність, керованість та розширюваність. Такі ґрунтовні якісні зміни, що привносить .NET Core порівняно з .NET Framework, надають широкий спектр можливостей для написання ефективних і кросплатформних програмних продуктів, але разом з цим, від розробника вимагається вищий рівень професіоналізму і обізнаності, з метою отримання ним можливості використання повного спектру нововведень.

Перелік посилань

  1. Overview of .NET Ecosystem in 2015 [Електроннийресурс] // Режим доступу: https://dotnet.github.io/about/overview.html

  2. .NET Framework [Електроннийресурс] // Режим доступу: https://uk.wikipedia.org/wiki/.NET\_Framework

  3. Mono [Електронний ресурс] // Режим доступу: https://uk.wikipedia.org/wiki/Mono

  4. Portable .NET Framework [Електроннийресурс] // Режим доступу: https://en.wikipedia.org/wiki/Portable.NET

  5. .NETCore and Open-Source [Електронний ресурс] //Режим доступу: https://msdn.microsoft.com/en\-us/library/dn878908\(v=vs.110\).aspx

  6. Introducing .NET Core [Електроннийресурс] // Режим доступу: http://docs.asp.net/en/latest/conceptual\-overview/dotnetcore.html

  7. Introducing .NET Core [Електроннийресурс] // Режим доступу: https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introducing\-net\-core/

  8. RyuJIT .NET JIT compiler CTP1 FAQ[Електронний ресурс] //Режим доступу: https://blogs.msdn.microsoft.com/dotnet/2013/11/18/ryujit\-net\-jit\-compiler\-ctp1\-faq/

  9. .NET Compiler Platform [Електронний ресурс] // Режимдоступу: https://en.wikipedia.org/wiki/.NET\_Compiler\_Platform
  • Рецензент: к.т.н., доц. каф. АСОІУ НТУУ "КПІ" Жданова О. Г.
May 24, 2016