Я профессиональный разработчик программного обеспечения, и хотя я пишу в основном корпоративные веб-приложения, я поиграл с Visual Studio 2012 и Windows 8. Вот что я обнаружил:
Поскольку Metro являетсяТеперь словесный термин, я буду использовать термин «планшетные приложения» для обозначения полноэкранных приложений и «настольных приложений» для обозначения программ, работающих на рабочем столе Windows.
Я плохо понимаю эту картину.Что такое C / C ++ в приложениях в стиле Metro?Родной C / C ++?или это управляемый C ++?Они (приложения в стиле Metro) даже не имеют слоя Win32!
Все приложения для планшетов используют управляемый код.Это связано с тем, что операционная система WinRT не может выполнять инструкции x86 или AM64.Обе версии могут работать с .Net кодом просто отлично.Поэтому все приложения WinRT должны использовать управляемый код, использовать пользовательский интерфейс XAML, и они будут распространяться только через Магазин Windows.
Чтобы сделать приложение, совместимое как со стилем Metro, так и с рабочим столом, только еслииспользовать код .NET?
Да.Это точно верно.Вы должны использовать .Net код.Старые родные приложения НЕ могут работать на планшете с Windows 8.Если вы похожи на большинство разработчиков Windows, которые учились на практике, это потребует корректировки того, как вы пишете код.
Вот как я к нему подхожу:
Базовая программа, которая должна работать в различных форм-факторах (планшет, настольный компьютер, телефон), будет иметь 3 класса.Классы Model и Controller будут реализованы в DLL вместе с файлом интерфейса, который определяет события и методы GUI.Единственное, что на самом деле входит в мои .EXE-файлы, это графический интерфейс.И единственная логика в графическом интерфейсе состоит в основном в том, чтобы вызывать событие, когда пользователь выполняет действия в форме, которые требуют, чтобы программа что-то сделала.
Например, пользователь заполняет свое имя в текстовом поле и нажимает кнопку «Отправить».Это вызовет событие Submitted со значением из поля Name в качестве параметра.Контроллер может отправлять обратную связь обратно в форму с помощью метода, такого как UpdateStatus ()
Это звучит сложно и требует более предварительного проектирования.Прелесть этой системы в том, что, как только вы реализуете программу для одного форм-фактора, все, что вам нужно сделать, это изменить свой XAML для других форм-факторов.Ваш контроллер и ваша модель не меняются вообще.(Я уверен, что кто-то укажет, как использовать шаблоны XAML для этого, но я еще не там.)