Install the .net framework for developers
Содержание:
- Что такое фреймворк?
- Контейнер внедрения зависимостей
- Предназначение .NET Framework
- Библиотека классов Net Framework
- Node.js/Express
- Увеличение производительности
- Middleware
- .NET, .NET Framework, and .NET Core
- Фреймворк — что это такое простыми словами?
- Polymer
- Устранение неполадок с установкой .NET Framework 3.5Troubleshoot the installation of the .NET Framework 3.5
- Распространение внештатных пакетовHow OOB packages are distributed
- Web-Framework Python BlackSheep
- Диспетчер middleware
- Установка языковых пакетовTo install language packs
- Ограниченная поддержка платформы
Что такое фреймворк?
Как гласит Википедия, фреймворк в программировании (от англ. «framework» — «каркас», «рамка») – это ПО (программное обеспечение), которое облегчает разработку больших проектов, которые предполагаются состоять из различных компонентов.
Общение с фреймворком происходит благодаря его API (прикладной программный интерфейс), состоящее из специальных функций и других специфических конструкций (middleware у Laravel, к примеру), описанных в официальной документации.
Если говорить о framework в контексте веб-программирования (та область, в которой с ними работал лично я), то это некая надстройка над «чистым языком», которая придаёт проекту, на нём создаваемому, расширяемость (возможность расширять функционал путём установки пакетов, модулей и прочих дополнений), а также задаёт ему заведомо описанную архитектуру (структура папок и файлов будущего сайта).
Понятие фреймворка родственно с «библиотекой», которые активно используются в таких языках программирования как C++, Delphi и др. (всем известные dll-файлы, на которые иногда ругается Windows, написанный на C++).

Скажу больше, поскольку я начинал свой путь программиста именно с последних, то когда я начал вникать в web, думал, что фреймворк – это аналог библиотек для языков веб-программирования.
Оказывается, что это разные вещи, различия которых заключаются в маленьком, но весьма заметном нюансе.
Фреймворк и библиотеки оба являются программными надстройками над «чистыми» языками. Однако, библиотека – это всего лишь набором подпрограмм, которые расширяют базовый функционал, а фреймворк ещё и задаёт структуру проекта.
Те, кто уже работал с фреймворками знают, каким образом это достигается.
Для разработки веб-ресурса разработчик вынужден сперва настроить веб-сервер, после чего создаётся каталог будущего сайта, куда устанавливается чистый framework, представляющий из себя набор каких-то файлов и каталогов, на базе которых уже и создаётся сайт.
Фреймворк, как вы могли убедиться, — это понятие универсальное, выходящее за рамки веб-программирования. У того же C++, оказывается, есть фреймворк – Juce. Однако, такого их количества, как в web, наверное, нет больше нигде.
Для одного только языка PHP их существует несколько десятков (всем известные Yii, Laravel, Symphony, CakePHP и др.). Также существуют фреймворки и для других языков, применяемых в web:
- CSS (Twitter Bootstrap);
- JavaScript (AngularJS);
- Python (Django);
- Ruby (Ruby-on-Rails)
Сложно сказать, чем обусловлено большое количество PHP-фреймворков. То ли какими-то слабостями языка, которые создатели frameworks хотят исправить с помощью своих творений.
То ли их обилие – это чисто маркетинговый ход, т.к., несмотря на то, что большинство фреймворков бесплатные и с открытым кодом (OpenSource), программисты весьма неплохо зарабатывают на создании дополнений для них.
Но, скорее всего, первопричина кроется как раз в популярности самого PHP и количеством программистов, работающих с ним. А, как известно, сколько людей, столько и мнений об идеальной структуре приложений, которые создатели фреймворков и воплощают в своих творениях.
Учитывая огромное количество PHP frameworks и их распространённость среди разработчиков, в дальнейшем разговоре о преимуществах фреймворков и их недостатков как для заказчиков, так и программистов под данным термином будут подразумеваться продукты именно для PHP.

Поэтому, если вы увидите какие-то нестыковки приводимых аргументов с frameworks для других языков, не спешите раздражаться
На этом наш краткий ликбез завершён, и мы переходим к самой вкусной части статьи – к обзору их достоинств и недостатков.
Контейнер внедрения зависимостей
Поскольку мы настроили Composer, установка PHP-DI пройдёт практически безболезненно. Для этого снова обратимся к командной строке:
Обновите для конфигурирования и сборки контейнера.
Ничего особенного пока не произошло. Это лишь простой пример, где всё необходимое помещено в один файл для удобства наблюдения.
Мы , поэтому нужно явно объявить зависимости (а не использовать автоматическое внедрение или аннотации) и извлечь из контейнера объект .
Заметка на полях: автоматическое внедрение зависимостей может быть полезной фичей в начале создания приложения, но в дальнейшем оно усложняет сопровождение, поскольку зависимости остаются относительно скрытыми. К тому же возможно, что через несколько лет другой разработчик подключит какую-нибудь библиотеку, и в результате несколько библиотек будут реализовывать один интерфейс. Это сломает автоматическое внедрение зависимостей и приведёт к непредсказуемому потоку багов. Разработчик, внёсший изменение, может их вообще не заметить.
Давайте ещё больше всё упростим, импортировав пространства имён там, где это возможно.
Пока что выглядит всё так, словно мы устроили суматоху ради выполнения того, что уже делали раньше.
Не беспокойтесь, контейнер нам пригодится, когда добавим несколько других инструментов, помогающих передавать запросы напрямую через приложение. Эти инструменты будут использовать контейнер для загрузки правильных классов по мере необходимости.
Предназначение .NET Framework
Применяется для разработки приложений, работающих на локальной машине и веб-приложений. На нем могут быть также основаны веб-сервисы. Поддерживает языки программирования, в числе которых: Visual Basic и C#. Предоставляет разработчику выбор языка программирования, который будет использован при создании программы.
Удобство пользователей и разработчиков
С .NET Framework необходимость писать каждую программу «с нуля» отсутствует. Есть готовые фрагменты программного кода. Элементы окон стандартные. Разработчик лишь вставляет текст, формирует меню приложения и определяет, что будет происходит, когда вы нажмете на определенную кнопку.
Не приходится задумываться над особенностями кода, который нужен для поддержки программы операционной системой и для работы с сервисами Майкрософт, к которым относится и магазин приложений Windows Store. Платформа заботится об экономном использовании аппаратных ресурсов компьютера. Поэтому распространенные в начале века ситуации, когда пустяковый на первый взгляд софт загружал оперативную память, стали большой редкостью.
Комфортно и разработчику и вам. Пользователям не приходится каждый раз изучать нестандартный интерфейс софта, рожденного фантазией программиста. Создатели ПО могут сосредоточиться на функционале приложений. Пользователю нужно лишь позаботиться, чтобы на компьютере была установлена среда выполнения .NET Framework.
Универсальная платформа
Microsoft обеспечивает работу основанного на .NET Framework софта во всех поддерживаемых компанией операционных системах.
Степень обратной совместимости ПО высока. Рассмотрю на примере старых версий. Вам нужна программа, основанная на версии 2.0. Запускаете ее на ноутбуке или настольном ПК с поздней версией. И старый софт будет работать.
Основанное на платформе ПО работает на любой Windows с установленным .NET Framework. Встроен механизм безопасности. Осуществляется управлением памятью. Платформа .NET видит те ресурсы, которые не используются работающей программой. Очистит память от ставших ненужными в процессе работы фрагментов.
Для разработчиков предусмотрены инструменты упаковки приложений. Они легко устанавливаются на ПК.
Архитектура .NET Framework
CLI («Common Language Infrastructure») — платформа, на которой выполняются программы. Основные функции CLI:
- Обработка исключений. К ним относятся ошибки, возникающие при работе программы. Приведу примеры:
- Приложение пытается открыть на локальном компьютере файл, который отсутствует
- Приложение обращается к базе данных, а соединение с ней отсутствует
- Чистка мусора, то есть удаление ресурсов, которые больше не нужны. Проверяется, какие ресурсы не используются и производится их освобождение для выполнения других задач. Примеры фрагментов, которые удаляются в процессе работы без вмешательства пользователя:
- Дескриптор файла, который больше не требуется
- В соединении с базой данных больше нет необходимости. Программа завершила все операции с базой данных
- Работа с различными языками программирования
Уровни .NET Framework
Выделяются три уровня:
- Языки программирования. Часто используемые: VB.NET и C#
- Компиляторы. Для каждого языка программирования предусмотрен отдельный компилятор. Для VB.NET — один, для C# — другой
- Интерпретатор «Common Language Interpreter» используется для запуска приложения, написанного на любом языке программирования. Поэтому компилятор отравит программу в него для последующего запуска приложения
Библиотеки
.NET Framework включает в себя набор стандартных библиотек классов: методов и функций. Например, есть библиотека классов для обработки всех операций на уровне файлов. Есть метод чтения текста из файла и есть метод записи текста в файл.
Типы основанных на платформе приложений
ПО, которое может работать на основе .NET Framework:
- WinForms: программы, которые будут работать на компьютере пользователя. Пример клиентского приложения: текстовый редактор «Блокнот»
- ASP.NET применяется для разработки веб-приложений, которые станут работать в любом браузере, в том числе: Chrome, Edge, Firefox. При этом:
- Веб-приложение будет обрабатываться на сервере, на котором установлены информационные службы интернета (IIS)
- IIS — это компонент Microsoft, который применяется для запуска приложения ASP.NET
- Результат выполнения отправляется на компьютер пользователя и отображается в браузере
- Технология ADO.NET применяется для создания приложений, предназначенных для работы с базами данных, такими как Microsoft SQL Server и Oracle
Библиотека классов Net Framework
Это коллекция типов, тесно интегрирующихся со средой CLR. Библиотека классов объектно-ориентирована. Из предоставляемых ею типов управляемый пользовательский код нередко наследует функции. Благодаря этому упрощается работа и уменьшается время, затраченное на освоение новейших средств платформы. Помимо того, созданные независимыми авторами элементы можно с легкостью объединять со встроенными классами. К примеру, входящий в состав коллекций платформы набор интерфейсов можно применять при разработке пользовательских компонентов. Подобные классы легко объединятся со встроенными.
Node.js/Express
▍Сильные стороны Node.js
- Появление Node.js сделало возможным фуллстек-разработку веб-проектов на JavaScript. В результате в распоряжении разработчиков серверных частей приложений оказались и сильные возможности JavaScript, и наработки экосистемы JS, библиотеки, которыми стало реально воспользоваться в серверном окружении.
- JavaScript-код, аналогичный по функционалу, например, коду, написанному на C, оказывается компактнее. Производительность JavaScript-кода при этом достаточно высока для применения его в проектах, в которых важна скорость работы кода.
- Код клиентских и серверных частей проектов легче поддерживать в согласованном состоянии, так как и там и там используется один и тот же язык.
- Один и тот же код можно совместно использовать и на клиенте, и на сервере.
- Благодаря существованию модулей Node.js, которые, в сущности, представляют собой особым образом оформленные фрагменты кода, разработчики могут с удобством использовать в своих проектах чужой код, а так же собственные наработки.
- Платформа Node.js, и, соответственно, основанные на ней фреймворки, отличаются нетребовательностью к ресурсам и масштабируемостью. Именно поэтому Node.js — это платформа, к которой часто прибегают те, кто пользуется микросервисными архитектурами.
- Эта платформа хорошо подходит для разработки микросервисов ещё и из-за существования системы модулей Node.js, которые можно представить себе в виде строительных блоков серверных приложений.
- В Node.js JavaScript код компилируется в машинный код, что позволяет получить гораздо более высокую производительность, чем при интерпретации кода. Сообщество JavaScript-разработчиков видит постоянное улучшение производительности Node.js за счёт того, что Google постоянно работает над совершенствованием V8.
- Благодаря тому, что в Node.js имеется система ввода-вывода, не блокирующая главный поток, эта платформа демонстрирует высокую производительность. Достойная скорость обработки запросов достигается благодаря использованию JavaScript-механизмов конкурентного однопоточного выполнения кода.
- Node.js — это опенсорсный проект, вокруг которого собралось огромное сообщество разработчиков. Это значит, что тот, кто столкнётся с какой-то проблемой, сможет достаточно быстро найти её решение.
- Node.js, в ближайшем будущем, может стать платформой, которую будут использовать для проведения «тяжёлых» вычислений, наподобие тех, которые применяются для решения задач машинного обучения.
Увеличение производительности
Благодаря среде выполнения повышается эффективность работы разработчиков. К примеру, программисты могут использовать ее преимущества при написании приложений на привычном для них языке. Разработчикам доступны библиотека классов и компоненты. Даже если элементы будут написаны на другом языке, программисты смогут их использовать. Функцию применяют многие производители компиляторов, обращающиеся к среде выполнения. Благодаря этому средства платформы становятся доступными для существующих кодов, написанных на соответствующих языках, а процесс переноса созданных приложений значительно облегчается.
Middleware
Если представить приложение в виде луковицы, в которой запросы идут снаружи к центру, а ответы в обратном направлении, то middleware — это каждый слой луковицы, который получает запросы, вероятно, что-то делает с ответами и передаёт их в нижний слой либо генерирует ответ и отправляет в верхний слой. Такое случается, если промежуточный слой проверяет запросы на соответствие каким-то условиям вроде запроса несуществующего пути.
Если запрос проходит до конца, приложение обработает его и превратит в ответ. После этого каждый промежуточный слой в обратном порядке будет получать ответ, возможно, модифицировать его и передавать следующему слою.
Варианты использования промежуточных слоев:
- Отладка проблем при разработке.
- Постепенная обработка исключений в production.
- Ограничение частоты входящих запросов.
- Ответы на запросы неподдерживаемых медиатипов.
- Обработка CORS.
- Маршрутизация запросов в соответствующие обрабатывающие классы.
Промежуточный слой — это единственный способ реализации инструментов для обработки всех этих ситуаций? Вовсе нет. Но реализации middleware позволяют сделать цикл запрос/ответ гораздо понятнее, что сильно упростит отладку и ускорит разработку.
Мы воспользуемся промежуточным слоем для последнего сценария: маршрутизации.
.NET, .NET Framework, and .NET Core
.NET is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.
There are various implementations of .NET. Each implementation allows .NET code to execute in different places—Linux, macOS, Windows, iOS, Android, and many more.
- .NET Framework is the original implementation of .NET. It supports running websites, services, desktop apps, and more on Windows.
- .NET Core is a cross-platform implementation for running websites, services, and console apps on Windows, Linux, and macOS. .NET Core is open source on GitHub.
- Xamarin/Mono is a .NET implementation for running apps on all the major mobile operating systems, including iOS and Android.
Фреймворк — что это такое простыми словами?
Фреймворком ещё называют ряд программных библиотек, которые позволяют значительно упростить язык программирования, а так же в следствии этого упрощается и сам сайт (сама структура). И уже после этого соответственно ускоряется работа проекта.
Определение слова Фреймворк
В любом проекте встречаются разные типовые задачи, которые требуют нашего вмешательства. В переводе с английского framework означает каркас (это если переводить буквально). Так и получается, что фреймворк это каркас из определённых программ, и вам уже останется только соорудить «стены» для своего проекта, чтобы всё успешно работало.
Примеры фреймворка
- Первый пример. Самый распространённый пример фреймворка это jQuery. Он является целой библиотекой, целым кладезем для одной из самых популярных программ Javascript.
- Второй пример. Самым новым фреймворком (или модным) для программирования PHP пока что является Yii.
- Третий пример. Так же отличительным примером фреймворка является CMF, и расшифровывается эта аббревиатура как Content Management Framework.
Фреймворк это простыми словами, любая программа из библиотек, которая призвана помочь веб-мастеру или программисту. И как мы поняли, фреймворки бывают разными, и их достаточно много.
Вообще, понятие Framework не много расплывчатое значение. Но как мы поняли, в основном его используют программисты. Но его ещё используют и ряд других специалистов. Термин одинаково достаточно подходит и для объяснения того или иного контекста, и для уточнения.
Можно так же привести пример с Conceptual Framework (что в переводе означает — «концептуальная основа«). Это довольно расплывчатая структура, которая больше напоминает абстрактное значение. Его в основном используют в разработках исследования, чтобы определить существующие способы решения задач.
Другой пример, тоже связанный с данным значением. Но определяется он как Software Framework (что в переводе означает как — «программная платформа»). Его используют для того, чтобы обозначить «каркас» либо всей системы, с которой программист будет работать, либо с частью системы, или подсистемой. К нему будут относиться различные части кода библиотек, разные вспомогательные программы и другие языки сценария. Всё это призвано для того, чтобы облегчить работу той или иной разработки действительно крупного веб-проекта.
Мы уже достаточно узнали, и ответили на самый главный вопрос, фреймворк что это такое простыми словами. Теперь пойдём «вглубь», и попробуем понять что дало бы это нам на практике.
Polymer
Объявление компоненты:
Бросается в глаза получение параметров через селекторы, что делает использование компоненты весьма не наглядным:
В целом, описание компоненты похоже на хак, который берёт чужое дерево и видоизменяет его до неузнаваемости. В хитросплетениях реального и теневого дерева довольно сложно разбираться.
Наследование пока не поддерживается, так что используем силу копипасты:
Отдельно стоит отметить проблему стилизации. Каждая компонента тянет с собой свои стили, которые по умолчанию изолированы от всех остальных компонент. С одной стороны, это позволяет использовать короткие имена классов в рамках одной компоненты, с другой же, добавляет проблем при необходимости кастомизировать визуализацию компоненты в каком-то конкретном контексте использования.
Устранение неполадок с установкой .NET Framework 3.5Troubleshoot the installation of the .NET Framework 3.5
Во время установки могут возникнуть ошибки 0x800f0906, 0x800f0907, 0x800f081f или 0x800F0922. В этом случае обратитесь к разделу Ошибка установки .NET Framework 3.5: 0x800f0906, 0x800f0907 или 0x800f081f.During installation, you may encounter error 0x800f0906, 0x800f0907, 0x800f081f, or 0x800F0922, in which case refer to .NET Framework 3.5 installation error: 0x800f0906, 0x800f0907, or 0x800f081f to see how to resolve these issues.
Если вам по-прежнему не удается устранить проблему с установкой или у вас нет подключения к Интернету, вы можете попытаться установить платформу с установочного носителя Windows.If you still can’t resolve your installation issue or you don’t have an Internet connection, you can try installing it using your Windows installation media. Дополнительные сведения см. в разделе Развертывание .NET Framework 3.5 с помощью системы обслуживания образов развертывания и управления ими (DISM).For more information, see Deploy .NET Framework 3.5 by using Deployment Image Servicing and Management (DISM). Если вы используете ОС Windows 7, Windows 8.1 или последнюю версию Windows 10 и у вас нет установочного носителя, вы можете создать его здесь: Создать установочный носитель для Windows.If you’re using Windows 7, Windows 8.1, or the latest Windows 10 version but you don’t have the installation media, create an up-to-date installation media here: Create installation media for Windows. Дополнительные сведения о компонентах Windows 10 по запросу: Компоненты по запросу.Additional information about Windows 10 Features on Demand: Features on Demand.
Распространение внештатных пакетовHow OOB packages are distributed
Внештатные выпуски для среды CLR доставляются посредством NuGet, который представляет собой диспетчер пакетов для .NET.OOB releases for core common language runtime (CLR) components are delivered through NuGet, which is the package manager for .NET. NuGet позволяет легко просматривать и добавлять библиотеки в проекты .NET Framework из Visual Studio.NuGet enables you to browse and add libraries to your .NET Framework projects easily from within Visual Studio. Диспетчер пакетов NuGet входит в состав всех выпусков Visual Studio, начиная с Visual Studio 2012.NuGet Package Manager is included with all editions of Visual Studio starting with Visual Studio 2012. В Visual Studio диспетчер пакетов NuGet можно найти в меню Сервис.Look for NuGet Package Manager on the Tools menu in Visual Studio. Если этот компонент отсутствует, выполните инструкции в разделе Установка NuGet.If it’s not installed, follow the instructions on Installing NuGet. Дополнительные сведения о NuGet см. в документации по NuGet.For more information about NuGet, see the NuGet docs.
Web-Framework Python BlackSheep
BlackShepp является асинхронным веб-фреймворком для создания веб-приложений Python, которые не блокируются и в основе которых лежат события. Вдохновлен Flask и ASP.NET Core.
BlackSheep поддерживает автоматическую связку значений с обработчиками запросов, задействуя аннотации типа или конвенции. Он также поддерживает внедрение зависимостей и имплементацию стратегий для обработки аутентификации и авторизации, используя внешние библиотеки.
Установка BlackSheep
Shell
pip install blacksheep
| 1 | pip install blacksheep |
Пример Hello world на BlackSheep
Python
from datetime import datetime
from blacksheep.server import Application
from blacksheep.server.responses import text
app = Application()
@app.route(‘/’)
async def home(request):
return text(f’Hello, World! {datetime.utcnow().isoformat()}’)
|
1 |
fromdatetimeimportdatetime fromblacksheep.server importApplication fromblacksheep.server.responses importtext app=Application() @app.route(‘/’) async defhome(request) returntext(f’Hello, World! {datetime.utcnow().isoformat()}’) |
Диспетчер middleware
Чтобы наше приложение стало работать с каким-либо промежуточным слоем, нам понадобится диспетчер.
PSR-15 — это стандарт, определяющий интерфейсы для middleware и диспетчеров (в спецификации они называются «обработчики запросов»), обеспечивающий взаимосовместимость широкого спектра решений. Нам лишь нужно выбрать диспетчер, совместимый с PSR-15, и он будет работать с любым совместимым middleware.
В качестве диспетчера установим Relay.
А поскольку спецификация PSR-15 подразумевает, чтобы реализация промежуточного слоя передавала HTTP-сообщения, совместимые с PSR-7, мы воспользуемся Zend Diactoros.
Подготовим Relay к приёму промежуточных слоев.
В строке 16 мы с помощью будем и передачи его . Здесь запрос попадает в стек промежуточных слоев.
Теперь добавим и обработчика запросов ( определяет, валиден ли запрос и может ли он быть обработан нашим приложением, а обработчик запросов передаёт запрос тому обработчику, что сконфигурирован для этого маршрута).
А теперь определим маршрут для класса обработчика Hello, world!.. Здесь мы воспользуемся маршрутом , чтобы продемонстрировать возможность использования маршрута, отличающегося от базового URI.
Чтобы всё заработало, нужно обновить , сделав его вызываемым классом, то есть чтобы этот класс можно было вызвать как функцию.
Обратите внимание на добавленный в магическом методе. Скоро вы поймёте, к чему это
Теперь откройте http://localhost:8080/hello и наслаждайтесь своим успехом!
Установка языковых пакетовTo install language packs
Языковые пакеты — это исполняемые файлы, содержащие локализованные ресурсы (например, переведенные тексты сообщений об ошибках и пользовательского интерфейса) для поддерживаемых языков.Language packs are executable files that contain the localized resources (such as translated error messages and UI text) for supported languages. Если языковой пакет не установлен, сообщения об ошибках платформы .NET Framework и другой текст отображаются на английском.If you don’t install a language pack, .NET Framework error messages and other text are displayed in English
Обратите внимание, что веб-установщик автоматически устанавливает языковой пакет, который соответствует операционной системе, но можно загрузить на компьютер дополнительные языковые пакеты.Note that the web installer automatically installs the language pack that matches your operating system, but you can download additional language packs to your computer. Автономные установщики не содержат языковых пакетов.The offline installers don’t include any language packs
Важно!
Языковые пакеты не содержат компоненты платформы .NET Framework, необходимые для запуска приложения, поэтому перед установкой языкового пакета необходимо запустить веб-установщик или автономный установщик.The language packs don’t contain the .NET Framework components that are required to run an app, so you must run the web or offline installer before you install a language pack. Если вы уже установили языковой пакет, удалите его, установите .NET Framework и переустановите языковой пакет.If you have already installed a language pack, uninstall it, install the .NET Framework, and then reinstall the language pack.
-
Откройте страницу загрузки языковых пакетов для установленной версии платформы .NET Framework:Open the language pack download page for the .NET Framework version you’ve installed:
- .NET Framework 4.8.NET Framework 4.8
- .NET Framework 4.7.2.NET Framework 4.7.2
- .NET Framework 4.7.1.NET Framework 4.7.1
- .NET Framework 4.7.NET Framework 4.7
- .NET Framework 4.6.2.NET Framework 4.6.2
- .NET Framework 4.6.1.NET Framework 4.6.1
- .NET Framework 4.6.NET Framework 4.6
- .NET Framework 4.5.2.NET Framework 4.5.2
- .NET Framework 4.5.1.NET Framework 4.5.1
- .NET Framework 4.5.NET Framework 4.5
-
Выберите требуемый язык в списке и подождите несколько секунд, чтобы страница перезагрузилась на этом языке.In the language list, choose the language you want to download, and wait a few seconds for the page to reload in that language.
-
Выберите Загрузить.Choose Download.
В приведенной ниже таблице перечислены поддерживаемые языки.The following table lists the supported languages.
| ЯзыкLanguage | cultureCulture |
|---|---|
| АрабскийArabic | arar |
| ЧешскийCzech | cscs |
| ДатскийDanish | dada |
| ГолландскийDutch | nlnl |
| ФинскийFinnish | fifi |
| Английский (США)English (USA) | en-USen-US |
| ФранцузскийFrench | frfr |
| НемецкийGerman | dede |
| ГреческийGreek | elel |
| ИвритHebrew | hehe |
| ВенгерскийHungarian | huhu |
| ИтальянскийItalian | itit |
| ЯпонскийJapanese | jaja |
| КорейскийKorean | koko |
| НорвежскийNorwegian | Нетno |
| ПольскийPolish | plpl |
| Португальский (Бразилия)Portuguese (Brazil) | pt-BRpt-BR |
| Португальский (Португалия)Portuguese (Portugal) | pt-PTpt-PT |
| РусскийRussian | ruru |
| Китайский, упрощенное письмоSimplified Chinese | zh-CHSzh-CHS |
| ИспанскийSpanish | eses |
| ШведскийSwedish | svsv |
| Китайский (традиционный)Traditional Chinese | zh-CHTzh-CHT |
| ТурецкийTurkish | trtr |
Ограниченная поддержка платформы
Любой кросс-платформенный фреймворк — это слой абстракции над нативной платформой и позволяет обращаться только к тем её возможностям, которые прямо поддерживаются фреймворком.
В большинстве случаев есть возможность расширить поддержку возможностей платформы путём написания нативных плагинов к фреймворку, но в некоторых случаях это может существенно усложнить разработку. Свежий пример из нашумевшей статьи AirBnb — React Native, который в данный момент не умеет “из коробки” работать с 64-битными Android-библиотеками.
Также нужно обратить внимание, что нативные плагины и основной код кросс-платформенного приложения, как правило, исполняются в разных процессах и взаимодействие между ними может вызывать проблемы с производительностью. Для работы с датчиками, или SQLite это, обычно, не проблема, но если вы используете, скажем, библиотеку OpenCV в качестве нативного плагина и начинаете кидать видео между ней и основным приложением, замедление может быть существенным








