Могут ли старые родные приложения работать на версии планшета для Windows8? - PullRequest
14 голосов
/ 15 сентября 2011

enter image description here

Я не очень хорошо понимаю эту картину. Что такое C / C ++ в приложениях в стиле Metro? Родной C / C ++? или это управляемый C ++? Они (приложения в стиле Metro) даже не имеют слоя Win32!

Чтобы создать приложение, совместимое как со стилем Metro, так и с рабочим столом, следует ли использовать только код .NET? Старые родные приложения могут работать на Windows8 Tablet?

Ответы [ 5 ]

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

Да, старые приложения, включая неуправляемые собственные приложения, написанные на C / C ++ / Win32 и управляемые в .NET, будут нормально работать на планшете с Windows 8. За исключением, конечно, если планшет работает на процессоре ARM; тогда он будет поддерживать только новые приложения в стиле Metro (а также приложения, специально предназначенные для ARM).

На рисунке C / C ++ означает неуправляемые нативные приложения, расположенные на WinRT API, который также является неуправляемым нативным. Для тех, кто хочет использовать C # или VB.NET, будет бесшовная интеграция с .NET.

По последнему вопросу вы не можете создать приложение, которое совместимо как с Metro-style, так и с Desktop ... они взаимоисключающие - вы должны сделать выбор.

5 голосов
/ 15 сентября 2011

WinRT является нативным кодом, а C / C ++ - нативным, хотя их синтаксис при использовании с WinRT выглядит как C ++ / CLI.Из того, что я слышал, похоже, что API был разработан для C ++, а не для C, поэтому он очень объектно-ориентированный, и люди выглядят довольно взволнованными.

C # будет использовать обычный способ COM Interop для использования WinRT.

По словам Энди Рича (MSFT) из этого обсуждения :

Ядро WinRT НЕ управляется - оно является собственным и основанным на COM.Наш язык обеспечивает полностью нативную проекцию этого в синтаксисе высокого уровня, но вы не привязаны к этому синтаксису - вы сможете ориентироваться на среду выполнения Windows, используя низкоуровневый COM или WRL (ATL-подобная библиотека шаблонов) также.(Проекция C # / VB - это отдельная история, они генерируют вызываемые во время выполнения объекты-обертки, которые размещаются между .NET и WinRT.)

4 голосов
/ 15 сентября 2011

C ++ в приложениях Metro является родным C ++. Рекомендуется использовать новые языковые расширения , которые очень похожи на C ++ / CLI и предоставляют аналогичный высокоуровневый опыт - например, нет необходимости вручную иметь дело с объектами и строками подсчета ссылок или реализацией и вызовом QueryInterface - но в чистом нативном коде. Тебе не обязательно это делать.

В любом случае, для ваших собственных классов вы можете определить их в vanilla C ++ и скомпилировать их в библиотеку. Таким образом, вы можете поделиться своей логикой между настольной версией вашего приложения (с пользовательским интерфейсом, реализованным с использованием MFC, Win32, Qt или любым другим) и версией Metro (с пользовательским интерфейсом, реализованным с помощью WinRT API). Аналогично, для приложений .NET вы можете разделить логику на библиотеку классов, которая повторно используется между рабочим столом и Metro.

Невозможно написать одно приложение, которое будет работать на обоих уровнях с одним и тем же интерфейсом, ни в C ++, ни в .NET. С другой стороны, вы можете приблизить это в некоторой степени к HTML / JS, если вы избегаете использования WinRT API и придерживаетесь стандарта HTML5 - тогда вы можете создать «настольную версию», разместив ее в браузере.

2 голосов
/ 08 ноября 2012

Я профессиональный разработчик программного обеспечения, и хотя я пишу в основном корпоративные веб-приложения, я поиграл с 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 для этого, но я еще не там.)

1 голос
/ 15 сентября 2011

Как и в Windows 7, 64-битная Windows не поддерживает старые 16-битные приложения. Кроме этого, да, поддерживаются нативные приложения.

...