По моему мнению, большим преимуществом использования единой среды (например, C # /. NET) является переносимость кода. И такие классные вещи, как LINQ, без которых вы не сможете жить. Тем не менее, несколько мобильных ОС (iOS, Android, WP7) довольно сильно отличаются от интерфейса пользователя.
И, если я не ошибаюсь в отношении вашего приложения, оно получает значительную долю взаимодействий пользовательского интерфейса, если оно запускается на мобильном устройстве. Большинство мобильных приложений имеют код 80% пользовательского интерфейса.
Таким образом, вы все равно будете писать отдельный набор кода пользовательского интерфейса для каждой платформы - например, вы будете писать в Silverlight WP7 (и во всем доброте WPF), вы будете писать совершенно разные Набор кода для iOS в Какао (IB, Views, контроллеры и прочее), вы будете писать еще совершенно другой набор кода для Android.
Мой опыт всегда заключался в том, что для написания хорошего кода пользовательского интерфейса на любой платформе требуется большой опыт, например изучение WPF / SL - это уже кошмар, бросить в Cocoa Touch и весь беспорядок в Android. Конечно, вы можете написать три набора пользовательского интерфейса, которые выглядят и чувствуют себя достаточно схожими, но есть вероятность, что вы будете изо всех сил пытаться повторно использовать код и иметь общие структуры данных, что ваш пользовательский интерфейс окажется на уровне ниже по сравнению с выделенными приложениями - - и в этом современном мире мобильных приложений современный пользовательский интерфейс не супер (не говоря уже о подпункте) означает смерть для вашего приложения.
Кроме того, все три мобильных среды имеют разные парадигмы подключения, а также мультимедийные парадигмы. Вы заканчиваете тем, что пишете три версии, и изучаете три среды, хотя пишете на одном языке, с которым вы знакомы.
Максимум, что вы собираетесь использовать - это внутренние модули. Механизмы принятия решений, процедуры поиска, управление данными и т. Д. И даже это будет проблематично, поскольку вам придется идти на компромиссы в своих структурах данных, чтобы обеспечить простую интеграцию с тремя различными наборами кода пользовательского интерфейса, работающими над тремя различными парадигмами пользовательского интерфейса. , Например, используете ли вы DependencyObjects для использования для привязки к представлениям Silverlight в модели MVVM? Если вы это сделаете, это не будет работать с моделью Какао MVC, и вам придется кодировать эти привязки отдельно.
И поскольку не все мобильные среды позволяют использовать полный набор функций - например, MonoTouch для iOS не имеет общих конструкций, которые невозможно определить во время компиляции. По сути, вы используете очень маленькое подмножество .NET (и должны постоянно напоминать себе, какую функциональность можно использовать где), чтобы вы могли запускать их все на трех разных платформах без существенных изменений.
Теперь изображение имеет все эти ограничения, когда вы пишете для платформы WP7, которая поддерживает весь набор функций .NET. Я не знаю о вас, но я сойду с ума. И ваше приложение WP7 никогда не будет даже близко конкурировать с другими приложениями.
По-моему, боль и компромиссы не стоят того. В итоге вы получите три приложения, которые не понравятся людям ни на одной из платформ.
Если все хорошее заключается в логике вашего приложения, и это так хорошо, что люди будут игнорировать проблемы пользовательского интерфейса, просто чтобы получить доступ к функциональным возможностям вашего приложения. По моему опыту, это почти никогда не происходит.