Есть ли способ написать приложение WinRt (Metro), которое также будет работать на Windows 7 и Vista? - PullRequest
24 голосов
/ 15 сентября 2011

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

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

Когда вышел WPF, после многих «толчков», которые Microsoft с тех пор видела и заставляла его работать на Windows XP, говорилось ли что-нибудь подобное об WinRT.

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

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

Ответы [ 5 ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

...