Подтвердить что ты не робот

Есть ли способ написать приложение WinRt (Metro), которое также будет работать на Windows 7 и Vista?

Мы не можем оставить наших клиентов, которые не могут обновиться до Windows 8 в течение долгого времени в лиственнице. Однако требуется для "планшета" / "touch" версии нашего приложения.

Итак, как мы можем поддерживать связь с Metro на Windows 8 и нашими текущими клиентами с единой базы кода?

Когда WPF выйдет, после того, как многие "Pushing" увидели Microsoft и заставили его работать в Windows XP, о чем-то вроде этого говорили о WinRT.

(Я не ожидаю решения для работы с XP, поскольку поддержка XP завершается.)

См. также: Может ли версия ARM для Windows 8 запускать приложения стиля Metro (WinRt)?

4b9b3361

Ответ 1

Лучшим ответом является то, что вы не хотите, чтобы одно и то же приложение запускалось в стиле Windows 7 и Windows 8 Metro. Пользовательский интерфейс, который лучше всего подходит для мыши и клавиатур (Windows 7), не будет работать хорошо для презентации с сенсорным экраном и наоборот. Важно переосмыслить интерфейс для двух разных миров.

Тем не менее, у вас есть 2 варианта, если вы хотите поделиться большим количеством кода: 1) Запишите его в основном в JavaScript/HTML5. Это позволит вам повторно использовать многие из активов (особенно части бизнес-логики). 2) Запишите его в (рабочий стол) Silverlight. Silverlight XAML ближе всего подходит для Windows XAML. WPF еще далеко и потребует больше повторной работы позже.

В любом случае вы должны следить за принципами, используемыми при написании межплатформенного кода. Понимайте зависимости платформы и изолируйте их по границам косвенности. Вы хотите локализовать весь код, который придется изменить. Например, вам не нужны вызовы API-интерфейсов .Net System.IO.File, которые, как вам известно, должны будут меняться на вызовы Windows.System.Storage, разбросанные по всему вашему коду. Вместо этого вы хотите, чтобы он был локализован в одной функции, которую можно изменить позже.

Ответ 2

Единственное, о чем я могу думать, это реализовать ваше приложение в HTML5/CSS3/JS и избегать использования API WinRT, насколько это возможно - это может быть осуществимо в зависимости от того, что именно нужно делать вашему приложению (например, переносимый 2D графика легко с холстом HTML5).

Затем для Win8 вы упакуете это как веб-приложение Metro. Для Win7 и ниже вы пишете простое приложение, в которое встроен ваш браузер (не IE9, так как он не работает на XP - так Firefox или Chrome) со всеми скрытыми хром и загружает ваше приложение HTML5 внутри встроенного браузера.

Ответ 3

Как отмечали другие, вы не хотели бы иметь точно такое же приложение, работающее в Win8 Metro и Win7/Vista Desktop. Если вы правильно структурируете свое приложение, используя шаблон дизайна подходящей маркировки, можно разделить довольно много кода между различными версиями, которые вам потребуются. Для версии Win8 вы будете использовать WinRT, для Win7/Vista у вас есть выбор Silverlight или WPF.

Я опубликовал пару статей, которые показывают, как это можно сделать, они включают в себя довольно немного кода:

Ответ 4

Маловероятно, что мы увидим, что Microsoft нажимает стиль Metro приложений к предыдущим выпускам из-за уровня переконструирование, которое перешло в Windows 8.

Я согласен с Zac в этом пункте. Похоже, Microsoft, безусловно, подталкивает и технологию, и удобство использования с введением Windows 8 (и Windows Runtime).

Интерфейс Metro - это другая парадигма интерфейса. Если вы используете текущий Элементы управления Win32 (включая элементы управления WPF), ваше приложение будет выглядят действительно в метро. Единственный способ исправить это повторно реализовать пользовательский интерфейс (ваши классы View в MVVM-дизайне), используя Metro управления. Однако С# и большинство .NET API являются первоклассными граждан в этой новой среде. Остальная часть вашей заявки должна быть в порядке.

Поскольку у вас уже есть то, что я предполагаю, довольно большое приложение, ваше лучшее решение будет разделять ваш взгляд с вашей модели-viewmodel. Затем вы можете продолжить разработку как полнофункциональных интерфейсов Windows 8 Metro с сенсорным интерфейсом, так и "классического" оконного интерфейса (что мы сделали за последние шесть лет). Благодаря хорошему разделению, дизайну и превосходному решению для управления версиями (т.е. Perforce) вы сможете разделить большую часть базы кода.


В дополнение к ответам на ваш недавний вопрос о Windows Runtime Билл Вагнер (один из многих блоггеров С#, за которым я следую) опубликовал резюме на WinRT и управляемые языки конференции; это хорошее чтение и рекомендуется, если у вас есть несколько минут. Одна из вещей, которые его резюме разъясняла (в FAQ в конце), заключалась в том, что будущее .NET как брендинг для используемой нами рамки будет заменено на Windows Runtime.

Еще одна часть из Сообщение о блоге в блоге:

Некоторые из .NET API изменяются для WinRT. У меня нет исчерпывающий список, и я не уверен, что он еще есть. Другие API не экспонируется через WinRT. (Они все еще доступны как .net API, просто не так Метро /WinRT API.)

Ответ 5

Маловероятно, что Microsoft увидит, что Microsoft переместила платформу приложений Metro в прежние выпуски из-за уровня повторной архитектуры, которая попала в Windows 8.

Как сказал Павел, если вы сохранили свое приложение от использования как можно большего количества библиотек WinRT, это возможно, но с другой стороны, теперь вы создаете обычное веб-приложение.