Совместное использование кода между проектами iOS и Android - PullRequest
2 голосов
/ 02 мая 2011

Меня наняли для разработки мобильной платформы для веб-службы, созданной моим работодателем. В идеале менеджмент хотел бы иметь несколько повторно используемых компонентов, которые можно было бы использовать на мобильных платформах (первоначально iOS и Android, возможно, Windows Phone 7 в более поздний момент).

Мне было интересно, насколько это возможно. Одним из требований является собственный интерфейс, поэтому мы будем использовать Cocoa Touch на iOS и любой набор инструментов (на основе Java), используемый для создания собственного интерфейса для Android. Приложение будет взаимодействовать с веб-сервисами, в основном теми, которые мы создавали внутри. Веб-сервисы были разработаны в .NET.

Что касается компонентов многократного использования, я думаю, мы могли бы использовать некоторый код C ++ для выполнения вызовов веб-службы и, возможно, даже больше для серверной части приложения, но мне интересно, будет ли это хорошим подходом. Apple Foundation Framework имеет несколько отличных встроенных возможностей для доступа к веб-сервисам, не говоря уже о других библиотеках с открытым исходным кодом, например, ASIHttpRequest, SBJSON и т. Д. Я думаю, то же самое будет и для Android (хотя пока у меня нет реального опыта работы с Android). Кроме того, при рассмотрении проектов, выполняемых такими компаниями, как Google, Twitter и Facebook, каждая из этих компаний предлагает собственные библиотеки, созданные для основных платформ мобильных ОС. Если крупные компании используют такой подход, нам кажется логичным последовать его примеру.

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

Кто-нибудь посоветует нам использовать C / C ++ для разработки такой платформы (разделяемой библиотеки) для мобильного сайта наших веб-сервисов? Если так, то почему?

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

Это действительно зависит от того, какой уровень настраиваемого кода вы хотите иметь.Ранее я работал в игровой компании, и мы сделали две игры для iPhone и Android, и как минимум 90% кодовой базы было разделено между двумя платформами в коде c ++.Иногда значительно проще реализовать элементы со специализированными сторонними библиотеками, такими как Facebook и т. П., Но поддержание этого кода означает постоянное выполнение этого для обеих платформ.Это было одной из причин, почему мы даже реализовали наши собственные объекты пользовательского интерфейса в c ++ для наших игр.Поскольку даже при первоначальной настройке проще было бы работать с Interface Builder и XML-файлами Android, необходимые для обслуживания и настройки в итоге стали значительно меньше, потому что мы использовали общую кодовую базу.

Короче, я бы настоятельно рекомендовал написать любой общий настраиваемый код на C / C ++, а также вещи, которые значительно проще в своих собственных кодовых базах (java для android или obj-c для iphone), и вы этого не сделаетеожидайте, что многое изменится, чтобы отделиться.

2 голосов
/ 02 мая 2011

В зависимости от того, какой протокол WS вы используете, это может быть более или менее сложно сделать, но в любом случае я вижу небольшое преимущество в C / C ++ для мобильной платформы.Если бы вы использовали SOAP, я бы никогда не подумал о C / C ++, даже для настольного приложения.Я уже использовал библиотеки SOAP для C ++, и их гораздо сложнее использовать, чем их аналоги из Java / .net, и способ их реализации (сопоставление объектов SOAP со структурами C) очень подвержен сбоям при изменении формата.Не говоря уже о том, что вы должны перекомпилировать своего клиента при изменении WSDL.

Как я понял в вашем случае, вы планируете использовать REST.Я никогда не находил хорошую библиотеку REST для C / C ++, но недавно я сделал настольный проект, в котором я реализовал клиент REST C ++, используя просто WinHTTP (в Windows) и libCURL (в Linux).Конечно, они предоставляют только часть HTTP, поэтому мне пришлось добавить cppdom для разбора XML.Если вы используете JSON, есть много хороших библиотек, таких как jsoncpp, libjson.

Я бы сказал вам, что даже в среде рабочего стола это сделать сложнее, чем в .net или java, и это было сделано только потому, что это было частью более крупного приложения, уже написанного на C/ C ++.

В любом случае, у вас будет больше работы и не будет больших преимуществ, поскольку все эти современные мобильные платформы предоставляют богатые библиотеки, которые делают то же самое, и, вероятно, пользователь вашего API будет развиваться на основном языке платформы, так что выу нас будет двойная дополнительная работа по реализации кода доступа WS и кода привязки.Как я полагаю, вся (или, по крайней мере, большая часть) вашей логики находится на вашем сервере, а не на клиенте, между платформами не так много общего кода, оправдывающего использование C / C ++.

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