Win32 против .Net [закрыто]

* означает ноль или более предыдущего выражения.

Другими словами, выражение необязательно.

Вы можете определить целое число, подобное этому:

-*[0-9]+

Другими словами, необязательный отрицательный знак, за которым следует одна или несколько цифр.

13
задан STW 14 July 2009 в 20:09
поделиться

6 ответов

Это все из моей точки зрения. Ваш опыт может отличаться.

Преимущества .NET:

  • Кроссплатформенность (через Mono и .Net Core)
  • Хороший выбор классов фреймворка обычно означает меньше кода.
  • Простая интеграция компонентов независимо от язык, на котором был закодирован компонент. (Вам нравится F # или IronPython, отлично! Кодируйте свои сборки на том языке, который вам больше подходит.)

Недостатки .NET:

  • .NET означает разные вещи для разных людей. (Например, где WPF входит в уравнение?)
  • Иногда DLLImport и / или PInvoke - единственный способ получить нужную функциональность, что означает, что вы теряете кроссплатформенность.

Преимущества WIN32:

  • Если вы знаете, что делаете, вы можете создавать отличные приложения с минимальными зависимостями.
20
ответ дан 1 December 2019 в 17:29
поделиться

Кажется, вы уже знаете краткий ответ, но я повторю его здесь для ясности:

Win32: Мощный и полный. Любое задокументированное поведение на платформе Windows можно составить с помощью Win32, но с мощью приходит ответственность и трудности. Там' В нем довольно много тонкостей и трудностей в создании богатого опыта Win32.

.Net: Мощный, но подмножество Win32. .Net предоставляет более чем достаточно возможностей для подавляющего большинства бизнес-приложений и многого другого, но богатый пользовательский интерфейс и конкретные специализированные ситуации просто не существуют в нем, потому что BCL по какой-либо причине не считает, что смысл его поддержать. Самый распространенный пример, с которым я столкнулся, - это возможности пользовательского интерфейса в новых версиях Windows, хотя есть и другие области, где PInvoke может быть полезен. Однако .Net - гораздо более простая модель для понимания и работы с ней, и (по моему опыту) тонкость .net намного менее вероятна, чтобы выстрелить мне в ногу, чем Win32.

Если вы включаете dllimport и PInvoke, тогда я предполагаю, что .Net - разумная альтернатива, которая '

9
ответ дан 1 December 2019 в 17:29
поделиться

.Net (или части WinForms, в любом случае) находится поверх Win32. Или, другими словами, Win32 использовался для создания компонентов форм .Net. В этом смысле вы можете думать о .Net как о наборе предварительно созданных виджетов win32. Вы также можете думать о .Net как о логическом преемнике MFC.

.Net также имеет возможность напрямую обращаться к Win32 API, когда это необходимо, дает вам сборку мусора, очень хорошую библиотеку классов в BCL и множество хороших языковых функций над C / C ++ в C # и VB.Net

Чтобы получить все это, вы теряете некоторую долю независимости. .Net - это надстройка framework , которая по умолчанию поставляется не со всеми версиями Windows, и поэтому у вас есть дополнительные зависимости, о которых нужно беспокоиться при развертывании. У вас также есть соображения производительности, о которых следует подумать при использовании любого языка сборки мусора высокого уровня, где, казалось бы, простой код может делать намного больше, чем вы ожидаете за кулисами. Это особенно верно для некоторых компонентов winforms.

15
ответ дан 1 December 2019 в 17:29
поделиться

Это несправедливое сравнение, между ними нет ничего лучше, все зависит от того, чего вы пытаетесь достичь. Для большинства задач разработки .Net очень сложен и может даже иметь лучшую производительность, чем Win32. С другой стороны, .Net может работать даже вне окон, просто посмотрите на Mono. Теперь для разработки драйверов и вещей низкого уровня вам лучше подойдет Win32.

7
ответ дан 1 December 2019 в 17:29
поделиться

.NET в вашем вопросе подразумевает C # или C ++ / CLI ? .NET с C ++ / CLI - это что-то неестественное. С другой стороны, использование C # с .NET более удобно, чем с Win32 .

1
ответ дан 1 December 2019 в 17:29
поделиться

.Net не заменяет Win32. Win32 - это интерфейс уровня ОС, и вы можете думать о .Net как о небольшой среде под ОС или виртуальной машине, которая находится поверх Win32. . Net обеспечивает нейтральность аппаратной архитектуры (не имеет значения, работает ли ваш клиент на Pentium IV, Core 2 Duo, Itanium, 32-битном, 64-битном или другом) .Net предлагает оптимизированный установщик, который понимает эти среды, так что если инструкция говорит «переместить миллион байт», она будет использовать «наиболее оптимизированную» инструкцию перемещения, доступную на платформе.

.Net упрощает некоторые вещи для разработчика: встроенная сборка мусора предотвращает очень распространенную ошибку - забыть освободить память. Интеграция Visual Studio IDE предлагает, пожалуй, лучшую среду разработки из всех когда-либо существовавших. Конечно, быстро создавать прототипы экранов и кода. (Конечно, Visual Studio предлагает многие из тех же преимуществ кодировщику C / C ++, пишущему в Win32 API.)

Но. Net достигает этого за счет производительности. Код должен быть скомпилирован «точно в срок» (JITted) на машине конечного пользователя, прежде чем его можно будет запустить. Инфраструктура .Net занимает от 5 до 15 мегабайт оперативной памяти только для того, чтобы загрузить достаточно кода для выполнения «Hello World». Инфраструктура .Net не будет хорошо работать на машине с частотой ниже 400 МГц или с менее чем 512 МБ ОЗУ (вы можете запустить ее на меньшем, более медленном компьютере, но ее производительность необходимо будет оценивать для каждого приложения отдельно. .)

6
ответ дан 1 December 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: