выбор между Win32 API и .NET Framework - PullRequest
8 голосов
/ 06 сентября 2010

Мне нужно разработать приложение для окон, которое позволит управлять мышью с помощью веб-камеры, распознавая жесты рук.Я буду использовать vc ++ 2008 для разработки.Но я не совсем понимаю, стоит ли использовать .NET Framework или основные интерфейсы Win32 API.Производительность очень важна для моего приложения.Согласно книге Ivor Horton "Beginning Visual C ++ 2008", при использовании .NET Framework существует небольшое снижение производительностиЯ хотел знать, от каких факторов зависит штраф, и будет ли возможно использовать .NET Framework для моего приложения.

Ответы [ 5 ]

15 голосов
/ 06 сентября 2010

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

Я считаю, что .NET для сложных бизнес-приложений , а не для приложений реального времени или драйверов устройств.

7 голосов
/ 07 сентября 2010

Если вы не очень опытный C ++, программист, C # - гораздо более продуктивный язык (говорящий как человек с более чем 15-летним опытом C ++ и 2 годами C #).

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

Итак, я бы пошел с использованием .Net.

Я также рекомендую использовать C ++ / CLI для прямого вызова сложных собственных библиотек, если вам нужно их интегрировать, а не P / Invoke. Это хорошо для нечетных вызовов, но не позволяет легко получать доступ к структурам данных или смешивать собственный и управляемый код.

2 голосов
/ 06 сентября 2010

Я думаю, вам следует ограничить использование .NET для построения графического интерфейса. Остальные работы попробуйте сделать в Win32. Остался вопрос о распознавании объектов, есть симпатичная библиотека под названием OPENCV (библиотека с открытым исходным кодом Computer Vision Library). Эта библиотека содержит все возможные методы, которые вам потребуются в проекте. Также есть специальная аппаратная библиотека Intel, IPP, которая повышает производительность Opencv.

2 голосов
/ 06 сентября 2010

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

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

Первый шаг, вы должны исследовать, какие библиотеки там делаютраспознавание жестов или подобная обработка изображений.(Я надеюсь, что вы все равно не собираетесь писать эту часть с нуля.) Если вы обнаружите какие-либо библиотеки на основе .NET, утверждающие, что производительность достаточно хорошая для ваших нужд, вы можете попробовать их.В противном случае вы, вероятно, в конечном итоге получите библиотеку на основе C или C ++ или аналогичного.В любом случае, такую ​​возможность можно интегрировать с программой на основе .NET.

1 голос
/ 06 сентября 2010

Быстрый способ выразить это: разницу в производительности между собственным API и .Net можно компенсировать, купив более дорогой процессор.Вы бы заплатили где-то на сумму от 1 до 100 долларов больше, причем разумной оценкой будет 10 долларов - конечно, на каждый процессор.Итак, если вы ожидаете более миллиона пользователей, выберите собственный API.Если вы планируете использовать его на 2-3 демонстрационных ПК, это вообще не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...