Разработка для Windows Mobile: C ++ или C # - какая из них лучше? Зачем? - PullRequest
4 голосов
/ 01 марта 2010

Какой язык мне следует использовать при разработке для Windows Mobile? C # или C ++ или что-то еще? Почему один лучше других?

Ответы [ 5 ]

5 голосов
/ 01 марта 2010

Это зависит от того, что вы кодируете.

Выполнение собственных вызовов в ОС возможно с помощью P / Invoke из C #, но широкое использование, вероятно, легче с помощью собственного C ++. Вам также потребуется C ++ для использования некоторого оборудования, которое не было упаковано в Compact Framework.

Большая часть оборудования (GPS, камера и т. Д.) Доступна через CF. Если вы работаете с устройством Win Mobile 6.x, вам, вероятно, лучше с C #. Помимо аппаратного обеспечения, объектная модель Pocket Office (POOM) также доступна для C #, поэтому вы можете интегрироваться с ней.

Стоит отметить, что большинство ссылок на Windows Phone 7 относятся к управляемому коду и возможности Silverlight. С Silverlight в миксе, вам придется кодировать с C #.

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

Scott

2 голосов
/ 01 марта 2010

На этот вопрос нет правильного ответа, потому что не существует единого «лучшего» определения. Если вы знаете C ++ и уже имеете много ресурсов кода C ++, C ++ выглядит привлекательно. Если вы знаете c #, а не C ++, то C # выглядит привлекательно.

Приложения C ++ загружаются быстрее, но для многих приложений это неприемлемо. Приложения на C # могут быть написаны быстрее, но они также не имеют детерминизма. Я бы даже больше не пытался использовать пользовательский интерфейс в C ++ и не думал бы о доступе к базе данных в C ++. Я бы не стал писать драйвер на C # или расширение оболочки.

Вообще говоря, большинство решений, которые я когда-либо предлагал, были сочетанием двух. C # имеет свои сильные стороны. Быстро писать, легче отлаживать и тестировать модули, трудно (хотя и не невозможно) создавать утечки, а для некоторых операций (таких как доступ к данным или синтаксический анализ XML) это просто проще.

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

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

2 голосов
/ 01 марта 2010

Это зависит в основном от задачи.

c ++ имеет следующие плюсы / минусы:

  • Прямой доступ к ресурсам, более быстрые программы
  • Может иметь доступ к очень глубоким частям ОС, не требуется для приложений высокого уровня
  • сложнее в разработке и требует управления ресурсами от разработчика

C #:

  • Работает под виртуальной машиной (CLR), поэтому медленнее
  • Быстрая и простая разработка приложений
  • Богатая встроенная библиотека
1 голос
/ 02 марта 2010

Исходя из моего опыта, легче начать с c #, и если вам достаточно API, предоставляемого компактной средой, то все в порядке.

С другой стороны, если ваш проект несколько сложен или если вы хотите сделать что-то, что не входит в компактную среду, вам может понадобиться создать вспомогательный .dll в c ++. Даже в этом случае вы, возможно, хорошо делаете свою основную программу на c # и программируете dll на c ++.

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

Но вы также больше пострадаете от ограничений ОС Windows Mobile. Например, максимум 32 МБ на процесс или все .dll совместно используют одно адресное пространство.

Итак, в конце концов, это действительно зависит от того, что вы планируете делать, и от того, какой у вас опыт.

1 голос
/ 01 марта 2010

Это зависит.

По крайней мере, представьте конкретный вариант использования. А возможно использовать SO поиск? :)

C ++ или C # для программирования мобильного устройства штрих-кода?

Edit: Очевидно, другие были быстрее на розыгрыш, и дали более четко сформулированные ответы. Тем не менее, я все еще рекомендую прочитать вышеупомянутую тему.

...