Сфера применения WinAPI - PullRequest
       0

Сфера применения WinAPI

1 голос
/ 23 апреля 2011

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

Я бы использовал .NET Framework, но тогда пользователи Windows XP будут вынуждены установить огромный пакет .NET Framework только для запуска некоторых небольших инструментов. Мне это не очень нравится.

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

Ответы [ 5 ]

2 голосов
/ 24 апреля 2011

Знания редко бесполезны.Изучение Windows API может не быть напрямую применимым ко многим заданиям (скажем, в отношении знаний MFC или .NET), но понимание того, как все работает на уровне API, ценно.Если вы ищете рыночные навыки, знания .NET и MFC, безусловно, более востребованы, чем сырой Windows API, поэтому развитие этих навыков, вероятно, даст вам более широкий круг потенциальных работодателей.Но в то же время у вас намного больше конкурентов.

Знания Windows API менее распространены, это означает, что конкуренция за эти рабочие места меньше, а работодателей меньше.Первая работа по программированию, легче взять на работу, если вы идете с толпой - развивать навыки, которые наиболее востребованы.Получив работу, вы можете использовать свое свободное время на вещах, которые вам интересны.

Это то, что я делал несколько лет назад.Я получил работу по написанию COBOL для банков и проводил вечера по написанию программ на ассемблере, C и Pascal на своем персональном компьютере.Это заняло время, но в итоге я получил работу, выполняющую ту работу, которую я действительно хотел сделать.

1 голос
/ 24 апреля 2011

Ангел, я не согласен с ним выше. .NET, безусловно, является текущим шагом в разработке Windows, он прекрасно устанавливается на Windows XP, если на коробке с Windows XP достаточно памяти и производительности для запуска XP SP3, а XP на данный момент является античным продуктом. Если вы только начинаете, зачем начинать с древности?

Я древний по стандартам программиста. Это мой тридцатилетний опыт программирования, начинающийся в основном на ассемблере. Я работал в среде Microsoft начиная с DOS 1.1, так много лет назад, когда даже базовая среда C была полным мусором. Сначала ассемблер, а затем я начал интенсивно работать в Turland Pascal от Borland, тогда горячим билетом был C ++ Borland с OWL, затем Microsoft превратила Vistual Studio в лучшую в своем классе и выпустила WFC и COM.

Большую часть моей работы всегда занимала разработка систем и коммуникаций, поэтому я даже не изучал большую часть обычной части "разработки пользовательских приложений" в мире Windows API и всегда очень активно участвовал в ядре Win32 C. API. Отличный набор API, но C # в .NET намного проще, и вы можете сделать гораздо больше программного обеспечения гораздо быстрее, зачем?

Никто не может освоить все API-интерфейсы Microsoft. Это просто ошеломляет. Можно также начать с самых актуальных! Я крутой старый чувак для программиста, и я бы не стал уходить от многолетнего программирования на C и C ++ напрямую к Win32 API, но Microsoft проделала такую ​​фантастическую работу с .NET и компилятором C # JIT, что я переехал в 2002 году.

Для меня важно то, что программист, в любом случае старший программист, уже не может быть просто «программистом Windows», и мир перешел на объектно-ориентированные платформы, такие как .NET и Java. C # и Java чертовски похожи, так почему бы не изучить оба. Это платформы для будущего. Код C # работает на Mono в Linux, а Java работает практически на всем и является ведущей средой для разработки для мобильных устройств.

Почему вы ограничиваете себя в своей среде программирования, чтобы избежать необходимости устанавливать некоторые библиотеки в 10-летней операционной системе, которая была устаревшей ее производителем? Учитывая то, что процессор в несколько миллиардов герц с несколькими ядрами, гигабайтами оперативной памяти и терабайтами памяти стоит сегодня несколько сотен долларов, я не думаю, что отказ от нескольких задержек, «зависших» с XP, стоит потраченного времени.

1 голос
/ 24 апреля 2011

Использование инструментов C # / .NET более высокого уровня может быть действительно полезным для сокращения времени разработки большинства приложений, но, как и все инструменты более высокого уровня, вы жертвуете управлением низкого уровня. Таким образом, в зависимости от того, является ли скорость более или менее важной, чем точность, и управление будет диктоваться средствами WinAPI или .NET, которые лучше подходят для ваших нужд. При этом следует отметить, что .NET может вызывать библиотеки WinAPI C с использованием функциональности P / Invoke. Вы можете использовать P / Invoke wiki , чтобы показать вам правильные способы выполнения вызовов на вызовы WinAPI, но имейте в виду, что в некоторых ситуациях это может быть довольно проблематично. Сколько бы это ни стоило, мне понравилось работать с языком C #.

1 голос
/ 24 апреля 2011

Прежде всего, позвольте мне задать вам вопрос:

Почему вы думаете, что вам нужен полный контроль над всем при кодировании приложений с графическим интерфейсом? Не вижу смысла? Пользователи Windows ожидают, что приложения GUI будут выглядеть как приложения Windows GUI. Нет необходимости иметь полный контроль.

imho нет никаких оснований делать все самостоятельно, вместо того, чтобы использовать существующую инфраструктуру, такую ​​как MFC или .Net. Вы все еще можете получить контроль, если вам нравится , но в большинстве случаев вам не нужно.

Лучше всего: вы можете делать все за меньшее время, чем все самостоятельно.

1 голос
/ 24 апреля 2011

Да.Все элементы Windows в .net - это просто оболочка для Windows API.Если вы знаете, что вы делаете в Win32 и GDI, вы обнаружите, что многие вещи .net GUI очень знакомы и их легко понять.И что еще лучше, в отличие от многих «чистых» .net-программистов, вы будете гораздо лучше понимать, что на самом деле происходит под капотом, что иногда может быть очень удобно.

Не беспокойтесь оWindows XP - сами Microsoft теперь поддерживают только SP3, и более или менее только для критических недостатков безопасности.С тех пор было два новых поколения ОС, поэтому разумно поддержать Win7 и просто сообщить пользователям XP, что им нужны некоторые предварительные условия для запуска вашего приложения.Если вы можете найти пользователя WInXP, который еще не установил .net, то это так.Если из-за этого вы чувствуете себя слишком виноватым, один из подходов, который может помочь, - нацелиться на .net 2.0, чтобы избавить пользователей от необходимости обновляться до .net 3.5 или 4.0.

Так что нет, я не думаю, что изучать Win32API - это пустая трата времени.

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

...