Подтвердить что ты не робот

Является ли среда выполнения .NET(DNX) похожей на моно?

Вот описание DNX:

Среда выполнения .NET(DNX) - это комплект для разработки программного обеспечения (SDK) и среды выполнения, в которой есть все необходимое для сборки и запускать приложения .NET для Windows, Mac и Linux. Он обеспечивает хост-процесс, логику хостинга CLR и обнаружение управляемой точки входа. DNX была создана для запуска кросс-платформенных веб-приложений ASP.NET, но это могут запускать и другие типы приложений .NET, например, кросс-платформенные консольных приложений.

Альтернатива DNX моно? Если нет, тогда какая разница?

4b9b3361

Ответ 1

Альтернатива DNX моно? Если нет, тогда какая разница?

Моно - это открытая платформа разработки . Реализация основана на спецификации CLI, такой как платформа, предоставляемая Microsoft. Он включает компилятор С#, среду выполнения, BCL и нечто вроде MCL (библиотека классов Mono, которая является расширением BCL). Моно может работать на Linux, OSX, BSD и Windows на разных архитектурах.

DNX - это SDK, содержащий все биты, необходимые для сборки и запуска приложения (включая настраиваемые утилиты, такие как dnu, который используется для сборки и упаковки приложения), включая CLR (в настоящее время он развертывается с CoreCLR). Этот CoreCLR также можно переключить с помощью Mono, что означает, что он будет потреблять все службы среды исполнения Mono, компилятора и т.д.

Моно, в отличие от DNX, обеспечивает полную платформу (Runtime, BCL, JIT и т.д.). DNX используется на самом низком уровне в качестве собственного процесса, который вызвал CoreCLR. DNX будет использоваться для сценариев, таких как самостоятельный хост или создание и запуск из командной строки.

Как отмечает @xanatos, DNX стремится поставлять среду выполнения с приложением, где многократные промежутки времени могут жить бок о бок, не мешая друг другу.

Возможно, это изображение может прояснить:

DNX Diagram

Вот список, который DNX может запускать сверху (x86 показывается дважды по умолчанию):

Active Version           Runtime Architecture Location                           Alias
------ -------           ------- ------------ --------                           -----
  *    1.0.0-beta2-10735 clr     x86          C:\Users\victorhu\.dnx\runtimes default
       1.0.0-dev         clr     x64          C:\Users\victorhu\.dnx\runtimes clr-x64-dev
       1.0.0-dev         clr     x86          C:\Users\victorhu\.dnx\runtimes clr-x86-dev
       1.0.0-dev         coreclr xd64         C:\Users\victorhu\.dnx\runtimes coreclr-x64-dev
       1.0.0-dev         coreclr x86          C:\Users\victorhu\.dnx\runtimes coreclr-x86-dev
       1.0.0-dev         mono                 C:\Users\victorhu\.dnx\runtimes mono-dev

Существует обширная страница wiki объясняющая структуру DNX для большего. @Указывает на страницу документов ASP.NET.

Обновление: 25/02/2016

Теперь DNX удаляется в пользу .NET CLI Tools.

Ответ 2

Да, DNX очень хорошо сравнивается с Mono mono.exe. Или, во всяком случае, время выполнения других языков VM, таких как Java (java.exe) или Python (python.exe). Все они решают одну и ту же проблему с курицей и яйцом, они работают на операционных системах, которые не знают beans о виртуальной машине. Сначала он должен быть инициализирован, точка входа в программу должна быть расположена, а метод Main() должен быть запущен до начала запуска вашей программы.

Небольшое различие в DNX с этими другими виртуальными машинами заключается в том, что он сохраняет CLR и дрожание по-прежнему в отдельной библиотеке coreclr.dll. Остальные - монолитные со всем кодом поддержки времени выполнения, скомпилированным в один exe. Сохранение монолитности улучшает производительность холодного запуска. Вероятно, что-то, что будет происходить и с dnx, как только CoreCLR стабилизируется и не имеет множества различных бета-релизов.

Это в противном случае следует за архитектурой .NET в Windows, это c:\windows\system32\mscoree.dll, которая загружает CLR. И CLR и джиттер являются отдельными DLL, clr.dll и clrjit.dll для .NET 4.x. Mscoree использует значительные обман и обман, чтобы заставить его выглядеть так, как будто вы можете запустить управляемую программу из одного EXE файла. В частности, трюк для создания 64-битного процесса из 32-разрядного EXE файла является героическим, он исправляет внутренние структуры загрузчика операционной системы, чтобы выполнить этот подвиг. Это требует, чтобы сама Windows знала, что EXE содержит управляемый код. Обман, который не хорошо переводится на другие операционные системы, такие как Linux и OSX, поэтому они решили использовать более обычный способ для CoreCLR.


Обновление: DNX теперь устарел, а заменен на DOTNET. В противном случае без аннулирования этого содержимого сообщения просто упростится.

Ответ 3

DNX удаляется, как сказано на месте репо. Лучше сравнить dotnet cli с моно. Dotnet cli - это новый проект, и он не поддерживает все библиотеки .net, у него есть собственные базовые библиотеки, которые отличаются от .net framework.