.NET Core Interview Questions by https://www.interviewbit.com/ РУССКИЙ Flashcards
Что такое приложения универсальной платформы Windows (UWP) в .Net Core?
Универсальная платформа Windows (UWP) — один из методов, используемых для создания клиентских приложений для Windows. Приложения UWP будут использовать API WinRT для предоставления мощного пользовательского интерфейса, а также функций расширенной асинхронности, которые идеально подходят для устройств с подключением к Интернету.
Возможности приложений UWP:
- Безопасность: приложения UWP будут указывать, к каким ресурсам устройства и данным они получают доступ.
- Можно использовать общий API на всех устройствах (работающих на Windows 10).
- Это позволяет нам использовать определенные возможности устройства и адаптировать пользовательский интерфейс (UI) к различным размерам экрана устройства, DPI (точек на дюйм) и разрешениям.
- Он доступен в Microsoft Store на всех или указанных устройствах, работающих на Windows 10.
- Мы можем устанавливать и удалять эти приложения без какого-либо риска для машины/вызывая «машинную гниль».
- Вовлечение: использует живые плитки, действия пользователя и push-уведомления, которые взаимодействуют с временной шкалой Windows, а также с функцией Cortana «Продолжить с того места, на котором я остановился», для вовлечения пользователей.
- Может быть запрограммирован на C++, C#, Javascript и Visual Basic. Для пользовательского интерфейса можно использовать WinUI, HTML, XAML или DirectX.
Напишите программу для вычисления сложения двух чисел.
Шаги следующие:
- Вам нужно создать новый проект ASP.NET Core «CalculateSum». Откройте Visual Studio 2015, перейдите в Файл–> Новый–> Проект. Выберите опцию Веб на левой панели и выберите опцию ASP.NET Core Веб-приложение (.NET Core) под центральной панелью. Измените имя проекта на «CalculateSum» и нажмите кнопку ОК.
- В окне шаблона выберите Веб-приложение и установите Аутентификация на «Без аутентификации» и нажмите кнопку ОК.
- Откройте «Обозреватель решений» и щелкните правой кнопкой мыши папку «Главная» (она находится в разделе Представления), затем щелкните Добавить новый элемент. Вам нужно выбрать Шаблон страницы представления MVC в разделе ASP.NET и переименовать его в «addition.cshtml», а затем нажать кнопку Добавить.
- Откройте addition.cshtml и напишите следующий код:
@{ ViewBag.Title = "Дополнительная страница"; } <h1>Добро пожаловать на страницу добавления</h1> <form asp-controller="Home" asp-action="add" method="post"> <span>Введите первое число: </span> <input id="Text1" type="text" name="txtFirstNum" /> <br /><br /> <span>Введите второе число: </span> <input id="Text2" type="text" name="txtSecondNum" /> <br /><br /> <input id="Submit1" type="submit" value="Add" /> </form> <h2>@ViewBag.Result</h2>
Здесь мы создали простую форму с двумя текстовыми полями и одной кнопкой «Добавить». Текстовые поля называются txtFirstNum
и txtSecondNum
. На странице контроллера мы можем получить доступ к этим текстовым полям с помощью:<form asp-controller="Home" asp-action="add" method="post">
Эта форма укажет, что все отправленные данные будут перемещены в HomeController, и будет выполнено действие добавления метода.
- Откройте
HomeController.cs
и напишите в нем следующий код:
using System; using Microsoft.AspNetCore.Mvc; namespace CalculateSum.Controllers { public class HomeController : Controller { public IActionResult Index() { return View(); } public IActionResult About() { ViewData["Message"] = "Application description page."; return View(); } public IActionResult Contact() { ViewData["Message"] = "Contact page."; return View(); } public IActionResult Error() { return View(); } public IActionResult addition() { return View(); } [HttpPost] public IActionResult add() { int number1 = Convert.ToInt32(HttpContext.Request.Form["txtFirstNum"].ToString()); int number2 = Convert.ToInt32(HttpContext.Request.Form["txtSecondNum"].ToString()); int res = number1 + number2; ViewBag.Result = res.ToString(); return View("addition"); } } }
В этой программе мы добавили два метода IAction addition() и add(). Метод Addition() вернет страницу представления добавления, а метод add() получит входные данные из браузера, обработает их, а результаты будут сохранены в ViewBag.Result и затем возвращены в браузер.
Теперь нажмите Ctrl+F5 для запуска вашей программы. Это запустит веб-сайт ASP.NET Core в браузере. Добавьте /Home/addition
в конце ссылки и нажмите Enter.
Заключение
.NET — это полнофункциональная среда разработки программного обеспечения, которая в основном используется для создания крупных корпоративных и масштабируемых программных приложений. .NET Framework имеет широкую сферу применения на рынке. Это гибкая и удобная среда, которая хорошо сочетается с другими технологиями.
.NET Core была разработана в ответ на всплеск популярности Java. .NET Core обычно используется в проектах с низким уровнем риска. Некоторые компоненты .NET можно использовать в приложениях .NET Core (но не наоборот). Эта статья в основном концентрируется на концепциях фреймворка .Net и .NET Core.
Расскажите о компонентах .NET Core.
.NET Core Framework состоит из следующих компонентов:
-
CLI Tools: Command Line Interface (CLI) tools — это кроссплатформенный инструмент для разработки, сборки, выполнения, восстановления пакетов и публикации. Он также способен создавать консольные приложения и библиотеки классов, которые могут работать на всей платформе .NET. Он устанавливается вместе с .NET Core SDK для выбранных платформ. Поэтому он не требует отдельной установки на машине разработки. Мы можем проверить правильность установки CLI, введя
dotnet
в командной строке Windows и нажав Enter. Если отображаются тексты, связанные с использованием и справкой, то мы можем сделать вывод, что CLI установлен правильно. - Roslyn (платформа компилятора .NET): это набор компиляторов языка с открытым исходным кодом, а также API анализа кода для языков программирования C# и Visual Basic (VB.NET). Roslyn предоставляет модули для динамической компиляции в Common Intermediate Language (CLI), синтаксический (лексический) и семантический анализ кода, а также эмиссию кода.
-
CoreFX: CoreFX — это набор библиотек фреймворка. Он состоит из новой библиотеки базовых классов BCL (Base Class Library), то есть
System.*
, таких какSystem.Xml
,System.Collections
и т. д. - CoreCLR: CLR (Command Language Runtime), основанная на JIT (Just In Time). CoreCLR — это реализация среды выполнения, которая работает на кроссплатформенной основе и имеет GC, RyuJIT, собственное взаимодействие и т. д.
Что такое промежуточное программное обеспечение в .NET core?
- Промежуточное ПО — это программное обеспечение, собранное в конвейер приложения для обработки запросов и ответов. Каждый компонент будет выбирать, следует ли передавать запрос следующему компоненту в конвейере, также он может выполнять работу до и после следующего компонента в конвейере.
- Например, у нас может быть компонент промежуточного ПО для аутентификации пользователя, еще одно промежуточное ПО для обработки ошибок и еще одно промежуточное ПО для обслуживания статических файлов, таких как файлы JavaScript, изображения, файлы CSS и т. д.
- Он может быть встроен в фреймворк .NET Core, который может быть добавлен через пакеты NuGet. Эти компоненты промежуточного ПО встроены как часть класса запуска приложения метода configure. В приложении ASP.NET Core эти методы Configure настроят конвейер обработки запросов. Он содержит последовательность делегатов запросов, которые вызываются один за другим.
- Обычно каждое промежуточное ПО обрабатывает входящие запросы и передает ответ следующему промежуточному ПО для обработки. Компонент промежуточного ПО может принять решение не вызывать следующее промежуточное ПО в конвейере. Этот процесс известен как короткое замыкание конвейера или завершение конвейера запросов. Этот процесс очень полезен, поскольку он позволяет избежать ненужной работы. Например, если запрос сделан для статического файла, такого как файл CSS, изображение или файл JavaScript и т. д., эти статические файлы промежуточного программного обеспечения могут обработать и обслужить запрос и, таким образом, коротко замкнуть оставшийся конвейер.
Здесь есть три промежуточных программных обеспечения, связанных с веб-приложением ASP.NET Core. Это может быть либо промежуточное программное обеспечение, предоставляемое фреймворком, добавленное через NuGet, либо ваше собственное пользовательское промежуточное программное обеспечение. HTTP-запрос будет добавлен или изменен каждым промежуточным программным обеспечением, и управление будет опционально передано следующему промежуточному программному обеспечению, и окончательный ответ будет сгенерирован при выполнении всех компонентов промежуточного программного обеспечения.
Различия между .NET Core и .NET Framework.
Особенности .NET Core и .NET framework
Совместимость
- .NET Core: работает по принципу «создать один раз, запустить где угодно». Кроссплатформенный, поэтому совместим с различными операционными системами, такими как Linux, Windows и Mac OS.
- .NET framework: этот фреймворк совместим только с операционной системой Windows. Несмотря на то, что он был разработан для поддержки программного обеспечения и приложений во всех операционных системах.
Установка
- .NET Core: поскольку он кроссплатформенный, он упаковывается и устанавливается независимо от ОС.
- .NET framework: он устанавливается в виде одного пакета для ОС Windows.
Модели приложений
- .NET Core: он не поддерживает разработку настольных приложений и в основном ориентирован на Windows Mobile, Интернет и Магазин Windows.
- .NET Framework: используется для разработки как настольных, так и веб-приложений, а также поддерживает формы Windows и приложения WPF.
Производительность и масштабируемость
- .NET Core: обеспечивает высокую производительность и масштабируемость.
- .NET Framework: менее эффективен по сравнению с .Net Core с точки зрения производительности, а также масштабируемости приложений.
Поддержка микросервисов и сервисов REST
- .NET Core: поддерживает разработку и реализацию микросервисов, и пользователю необходимо создать REST API для их реализации.
- .NET Framework: не поддерживает разработку и реализацию микросервисов, но поддерживает сервисы REST API.
Упаковка и доставка
- .NET Core: поставляется в виде набора пакетов Nugget.
- .NET Framework: Все библиотеки, которые относятся к .Net Framework, упакованы и отправлены все сразу.
Разработка Android
- .NET Core: Он совместим с платформами мобильных приложений с открытым исходным кодом, такими как Xamarin, через .NET Standard Library. Разработчики могут использовать инструменты Xamarin для настройки мобильного приложения для определенных мобильных устройств, таких как Android, iOS и Windows Phone.
- .NET Framework: Он не поддерживает разработку мобильных приложений.
Инструменты CLI
- .NET Core: Для всех поддерживаемых платформ он предоставляет облегченные редакторы вместе с инструментами командной строки.
- .NET Framework: Этот фреймворк тяжел для CLI (интерфейса командной строки), и разработчики обычно предпочитают работать с облегченным CLI.
Модель развертывания
- .NET Core: обновленная версия .NET Core инициируется на одной машине за раз, что означает, что она обновляется в новых папках/каталогах в существующем приложении, не влияя на него. Таким образом, можно сказать, что .NET Core имеет очень хорошую гибкую модель развертывания.
- .NET Framework: при выпуске обновленной версии она сначала развертывается только на Internet Information Server.
Объясните явную компиляцию (компиляцию Ahead Of Time).
- Компиляция Ahead-of-time (AOT) — это процесс компиляции языка высокого уровня в язык низкого уровня во время сборки, т. е. до выполнения программы. Компиляция AOT снижает нагрузку во время выполнения.
- AOT обеспечивает более быстрое время запуска в больших приложениях, где большая часть кода выполняется при запуске. Но ему требуется больше дискового пространства и памяти или виртуального адресного пространства для хранения как IL (Intermediate Language), так и предварительно скомпилированных образов. В этом случае компилятор JIT (Just In Time) будет выполнять много работы, например, действия дискового ввода-вывода, которые являются дорогостоящими.
- Явная компиляция преобразует язык верхнего уровня в объектный код при выполнении программы. Компиляторы Ahead-of-time (AOT) предназначены для того, чтобы убедиться, что процессор поймет построчный код, прежде чем взаимодействовать с ним.
- Компиляция Ahead-of-Time (AOT) происходит только один раз во время сборки и не требует отправки HTML-шаблонов и компилятора Angular в пакет. Сгенерированный исходный код может быть запущен сразу после загрузки в браузер, более ранние шаги не требуются. Компиляция AOT превратит шаблон HTML в исполняемый фрагмент кода. AOT будет анализировать и компилировать наши шаблоны статически во время сборки.
Преимущества компиляции AOT:
- Размер приложения меньше, поскольку сам компилятор не поставляется, а неиспользуемые функции могут быть удалены.
- Шаблонизация ошибок анализа, обнаруженных ранее (во время сборки)
- Высокая безопасность (не требуется динамическая оценка шаблонов)
- Рендеринг компонента происходит быстрее (предварительно скомпилированные шаблоны)
- Для компиляции AOT требуются некоторые инструменты для ее автоматического выполнения в процессе сборки.
Что такое МЭФ (MEF)?
MEF (Managed Extensibility Framework) — это библиотека, полезная для разработки расширяемых и легких приложений. Она позволяет разработчикам приложений использовать расширения без необходимости настройки. Она также позволяет разработчикам расширений упростить инкапсуляцию кода и, таким образом, избежать хрупких жестких зависимостей. MEF позволит вам повторно использовать расширения в приложениях, а также между приложениями. Она является неотъемлемой частью .NET Framework 4. Она улучшает обслуживаемость, гибкость и тестируемость больших приложений.
В каких ситуациях будут использоваться типы проектов .NET Core и .NET Standard Class Library?
Библиотека .NET Core используется, если есть необходимость увеличить площадь поверхности .NET API, к которой будет обращаться ваша библиотека, и разрешить только приложениям .NET Core быть совместимыми с вашей библиотекой, если вас это устраивает.
Библиотека .NET Standard будет использоваться, если вам нужно увеличить количество приложений, совместимых с вашей библиотекой, и уменьшить площадь поверхности (часть кода, с которой может взаимодействовать пользователь) .NET API, к которой будет обращаться ваша библиотека, если вас это устраивает.
Что такое CoreRT?
- CoreRT — это собственная среда выполнения для компиляции .NET изначально заранее, и она является частью нового .NET Native (как было объявлено в апреле 2014 г.).
- Это не виртуальная машина, и она не имеет возможности генерировать и запускать код на лету, поскольку она не включает JIT. Она имеет возможность RTTI (идентификация типа во время выполнения) и рефлексии, а также имеет GC (сборщик мусора).
- Система типов CoreRT разработана таким образом, что метаданные для рефлексии вообще не требуются. Эта функция позволяет иметь цепочку инструментов AOT, которая может связывать неиспользуемые метаданные и может идентифицировать неиспользуемый код приложения.
Что такое .NET Core SDK?
.NET Core SDK — это набор инструментов и библиотек, позволяющий разработчику создавать приложения и библиотеки .NET для .NET 5 (также .NET Core) и более поздних версий. Он включает .NET CLI для создания приложений, библиотеки .NET и среду выполнения для создания и запуска приложений, а также dotnet.exe (исполняемый файл dotnet), который запускает команды CLI и запускает приложение.