Автор оригинала: James Ellis-Jones.
Один из ключевых преимуществ .NET Ядро — это его способность работать на Windows, так и на Linux/Mac. Эта статья направлена на то, чтобы помочь вам сделать это наиболее эффективно и воспользоваться гибкостью, которая обеспечивает.
Разработка для перекрестной платформы
Когда вы начнете разработать .NET Основные приложения и код, которым нужно запустить перекрестную платформу, вам необходимо иметь дело с более сложным набором стандартов в мире .NET, которые возникли, поскольку ядро наступил на сцену.
По сути:
- Общие библиотеки должны нацелиться .NET Стандарт, если они должны быть использованы кроссплатформенные. Увеличение номеров версий .NET Стандарт Разрешить более широкий ассортимент API. Вы должны попытаться построить свою библиотеку, чтобы нацелиться на самую низкую версию .NET Стандарт, который вы можете управлять таким образом, чтобы его можно было использовать самым широким диапазоном клиентов. Это обычно будет самая высокая версия .NET Стандарт, используемый любым из Nuget Packages Ваша библиотека по очереди, ссылки. Бонус вот в том, что ваши общие библиотеки также могут быть использованы .NET Рамный код.
- Приложения должны нацелить .NET Основной. В отличие от общего библиотек, ваше приложение должно нацелиться на самую последнюю стабильную версию .NET Ядро, так как ни один другой код не нужно будет зависеть от него, и это дает вам самый широкий диапазон возможных вещей, которые вы можете потребовать с точки зрения пакетов Nuget и общих библиотек.
Еще одна сложность, которая является особенностью .NET Core 2.0 и выше, то это возможно для .NET Основное приложение для цели (некоторые) .NET Рамочные бинары и пакеты Nuget. Но если вы это сделаете, эти двоичные файлы/пакеты не будут работать на Linux/Mac, поэтому не делайте этого, если вы хотите, чтобы ваша заявка была перекрестной платформой.
Самостоятельный или зависимый от основной рамки
Вы можете построить .NET Основные приложения двумя способами. Если вы начнете с шаблона визуального студии для .NET Ядро по умолчанию вы будете создавать рамочное зависимое приложение. Такое приложение при опубликованном, может работать на любой платформе, пока машина имеет .NET Основная среда выполнения установлена на нем.
Для автономных приложений вы указываете одну или несколько платформ в файле .csproj, а выход публикации содержит все библиотеки и требуемое время выполнения dotnet. Поэтому автономное приложение не имеет зависимостей и может работать на указанной платформе только без каких-либо других установок.
Платформы указываются путем добавления строки в файл .csproj, как показано ниже:
win10-x64;osx.10.11-x64
Текущий список доступных платформ можно найти здесь и здесь Отказ
Вы можете указать несколько платформ, но затем для любого данного публикации, вы должны выбрать, какой из них вы собираетесь построить, через -R-переключатель в команде Dotnet Publish или в Visual Studio, выбрав целевую среду выполнения в Диалог настроек для профиля публикации, который вы используете.
Чтобы узнать больше об этих двух вариантах, Go здесь Отказ
Практика кроссплатформенных кодировщиков
Вообще, красота .NET Ядро в том, что если вы создадите его, ваш код просто будет работать на всех поддерживаемых платформах. Есть пара GOTCHA, чтобы остерегаться, однако, когда вы можете непреднамеренно сделать вашу кодовую платформу, характерную, если вы не следуете правилам правильных.
- Где вы выполняете файл IO и должны использовать пути файловых систем, CORE не умно, чтобы автоматически переводить сепараторы пути из Windows ‘\’ в Linux ‘/’ (или наоборот). Способ кодирования вокруг этого — использовать Класс пути либо используя путь. Объедините способ, чтобы создать свой путь или использовать путь. CoritalSeSeParatorchar Constant, чтобы получить сам символ сепаратора.
- Как URL, так и пути файлов чувствительны к регистру на основе Linux Systems, а также нечувствительны к регистру на Windows. Вы должны знать об этом при строительстве путей файлов и веб-ссылок на статические файлы. Кроме того, при использовании ядровой маршруты ASP.NET будьте осторожны о сопоставлении элементов URL для контроллера или имени действий, поскольку они обычно имеют первоначальный капитал. Вероятно, лучший маршрут — использовать ActionnameAtribute, чтобы сделать имена действий в нижнем регистре и избежать сопоставления элементов URL к именам контроллера.
Вы также можете посмотреть на эту серию блога, которые имеют Некоторые более конкретные вопросы Отказ
Какая кроссплатформа включает
Очевидно, строит перекрестную платформу .NET Основное приложение открывает возможности взаимодействия во всем мире Linux, и существует много случаев использования, которые вы можете себе представить, наиболее очевидным из всех существования воспользоваться более дешевой инфраструктурой серверов на основе Linux. Вот некоторые из простых других.
Запустите задний конец на переднем конце разработчики Macs
Если вы конец .NET .NET В наши дни разработчик использовался для работы по Windows, в эти дни вы найдете подавляющее большинство передних цен. Devs будет работать на их Mac. С .NET. Теперь они теперь легко устанавливать вашу заднюю часть на месте на своих машинах. Я нашел следующую настройку очень хорошо работает в этом контексте, где интерфейс находится на каркасе JS и переговаривает с задней частью через API.
- Иметь отдельные репозитории для переднего и заднего конца.
- На задней панели Windows Machine установите узел и NPM вместе с любыми фронтами, используя для создания скомпилированных файлов интерфейса.
- Всякий раз, когда вам нужно обновить или создать передний конец на автомате Windows, запустите процесс сборки и скопируйте компиляционные файлы в WWWroot в вашем проекте ASP.NET Core.
- Используйте метод MAPSPAFALLBACKROUTE в ASP.NET CORE 2.0 или методом USESPA в Core 2.1 в ASP.NET 2.1 (для получения подробной информации об этом см. Это ) сделать эту работу с ядром ASP.NET.
- На интерфейсных MacS установите. Чистый ядра SDK и загрузите автопопорочный репозиторий.
- Чтобы запустить спину API, в оболочке, перейдите в каталог, содержащий файл .csproj в загрузке репозитория, и запустите ‘dotnet Run’. Это запускает задний конец в веб-сервере KestRel: вывод расскажет вам, на каком порте на localhost это работает.
- Имейте переключатель конфигурации в интерфейсе, так что в режиме разработки он будет искать заднее apis apis на URL localhost (с соответствующим портом), а также в производстве, он будет искать API на домен, на котором он работает Отказ
- Если вам нужно, e.g., SQL Server, на передних станках, вы можете настроить докер и запустить его в Docker.
Используйте Docker лучше
Хотя можно запустить приложения Windows на Linux/Mac под Docker, он также требует установки VM, такого как VirtualBox.СЕТЬ Основные приложения могут работать непосредственно на Linux/Mac Blaceing OS так что это не нужно для них, делая .NET Ядро идеальной платформы для создания контейнерных приложений.
Использовать для серверу
.СЕТЬ Ядро теперь поддерживается на AWS Lambda, Azure Functions и Azure Service Fabric. Вы также можете создавать приложения ASP.NET Core, если вы осторожны, чтобы оптимизировать их для быстрого запуска.
Оригинал: «https://www.codementor.io/@jim_ej/working-cross-platform-with-net-core-kbv9sin1t»