.NET или WinAPI - PullRequest
       41

.NET или WinAPI

0 голосов
/ 26 мая 2009

Я пытаюсь создать настольное приложение. Самое большое требование состоит в том, чтобы это было как можно меньше. Для пользователей Windows, лучше ли встроить его в .NET или WinAPI? Я не из программного обеспечения, прошу прощения, если это бессмысленный вопрос, но я слышал, что с .NET есть вероятность, что некоторые пользователи Windows могут не иметь его на своих компьютерах, и в этом случае они потребуются загрузить большую часть программного обеспечения, в то время как это никогда не будет иметь место с winAPI. Это правильно? Какой процент Windows может не иметь .NET 2.0 на своих компьютерах? Кроме того, я слышал, что разработка этого небольшого приложения в WinAPI потребует больше усилий. Стоит ли это делать или же .NET дает вам почти столько же пользователей? Спасибо

PS. Я новичок в этом форуме (и, как я уже упоминал выше, не из программного обеспечения), но должен сказать, что этот форум - лучшее, что я нашел для принятия фундаментальных решений о приложении, которое я пытаюсь создать. Но дело в том, что чем больше я учусь, тем больше нет. вопросов, с которыми я сталкиваюсь .. спасибо всем за помощь: -)

Ответы [ 8 ]

5 голосов
/ 26 мая 2009

Самое большое требование - чтобы он был как можно меньше.

Если это требование является законным, оно в значительной степени вынуждает вас перейти на уровень Win32 API. Но я действительно подвергаю сомнению это требование. В наши дни загрузка нескольких МБ уже не та, что была раньше, и есть способы смягчить проблемы, если большая часть вашей пользовательской базы все еще находится на дозвоне. Сравнение этого с повышенной сложностью (и, следовательно, временем) разработки для Win32 и .Net может иметь большой смысл.

Какой процент Windows может не иметь .NET 2.0 на своих компьютерах?

Трудно получить реальные цифры проникновения, и я видел статистику выше> 90% и до 20%. Так что все сводится к тому, что вы хотите верить. Если это действительно так важно, вы можете разработать моно и использовать его для статического связывания времени выполнения.

1 голос
/ 26 мая 2009

Кроме того, я слышал, что развитие это маленькое приложение в WinAPI займет больше усилий.

Хорошо, представьте, что вам нужно построить машину.

  1. Заходите в каталог автозапчастей, заказываете правильное количество клапанов, поршней, зубчатых колес, вентилятора, радиатора и т. Д. Для двигателя. Вы заказываете все смазочные материалы, зубья, подшипники, гайки и болты, необходимые для сборки коробки передач. Вы заказываете передние фары, лампочки для фонарей, поэтому для разбития фонарей, указателей поворота, фонарей заднего хода.

Вы заказываете достаточно стали, чтобы сварить шасси, вы заказываете несколько сидений, немного ткани для их обивки, рычаг переключения передач, педали, переключатели для освещения, двери, стекло для окон и, наконец, зеркало заднего вида.

Все это приходит, и вы должны собрать все это вместе. Шасси настолько же прочно, как и самый прочный сварной шов, и перед вами стоит огромная задача собрать все это вместе, и место для ошибки огромно. И только когда вы соберете все это вместе, вы поймете, что не заказали ни ступицы колес, ни шины.

Это Win32, Windows API.

  1. Заходите в каталог автозапчастей, заказываете шасси с установленными сиденьями, фарами, колесами и т. Д. Вы заказываете двигатель и коробку передач. Три вещи прибывают. Вам все еще нужно установить двигатель и подключить трансмиссию (нетривиальные задачи), но это гораздо более простое предложение.

Это .net framework.

Если проект больше, чем автомобиль с дистанционным управлением для маленького ребенка, возьмите дистрибутив и используйте .net

1 голос
/ 26 мая 2009

Большинство компьютеров в настоящее время имеют .NET в той или иной форме благодаря Центру обновления Windows и другим программам, которые пользователь мог установить. Если вы новичок в кодировании, я бы определенно использовал WinForms / .NET вместо непосредственного кодирования для Windows API. Это намного проще, даже если больше.

1 голос
/ 26 мая 2009

Взгляните на этот вопрос.

Но если вам нужен действительно крошечный исполняемый файл, без необходимости установки полной платформы .NET, перейдите на Win32. У вас нет предустановленной платформы .NET в Windows XP.

0 голосов
/ 20 февраля 2011

Используйте Silverlight. Легкость .Net и не зависит от локальной конфигурации программного обеспечения. Даже в будущем будет работать нормально на Linux. И на телефонах в некоторой степени:)

0 голосов
/ 26 мая 2009

Является ли "минимально возможное" самым важным требованием? На этом пути у вас будет меньше зависимостей (и, следовательно, меньше развертываемых), но ваши затраты и время на разработку увеличатся.

Я собираюсь выйти из строя и сказать, что на большинстве ПК с Windows уже установлена ​​платформа .NET (либо через Центр обновления Windows, либо предварительно установленную). Если вы разрабатываете для XP или Vista, это, безусловно, будет иметь место.

Но, что более важно, размер окончательного пакета так же важен, как и время до стоимости? Вам будет гораздо проще найти разработчиков, которые быстро пишут хороший код в .NET. Разработка WinAPI может быть утомительной, медленной и стоить значительно больше времени при отладке. Это не значит, что разработчики WinAPI не очень хороши в том, что они делают, но .NET - это прогресс в разработке программного обеспечения, который позволяет вам сосредоточиться больше на бизнес-задачах, а не на технической области.

Если вы являетесь руководителем проекта или руководителем проекта, возможно, вы захотите провести анализ затрат, чтобы определить, что действительно важно в вашем решении.

0 голосов
/ 26 мая 2009

Написание собственного (неуправляемого) кода, вызывающего WinAPI, обеспечит вам меньшую площадь без зависимостей от .NET framework.

Но если вам нужно меньшее развертывание .net framework, взгляните на .net профиль клиента . Все сборки .net, которые вы обычно используете, занимают 28 МБ. (С загрузчиком 200 КБ, который устанавливает только то, чего еще нет на клиентском компьютере)

См. Также этот блог .

0 голосов
/ 26 мая 2009

Обязательно используйте «нативный код», если он должен быть минимальным. Однако это намного сложнее, особенно если вы не из программного обеспечения.

Может быть, лучше передать эту работу на аутсорсинг?

...