Разница между приложениями Metro, написанными в формате HTML/CSS/JS и XAML/С#

В чем разница между приложениями Metro, написанными в технологиях веб-разработки и написанными на XAML/С# и т.д.? Предоставляет ли Microsoft Metro API перехваты для Javascript, где все это является родным для С#? Должны ли они работать рука об руку, или это выбор разработчиков, куда идти?

Есть ли определенные функции, которые не могут быть реализованы при использовании JS (кроме аппаратных возможностей OpenGL)?

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

Ответы

Ответ 1

Microsoft поставила много работы, чтобы сделать Javascript языком первого порядка на уровне с С# для разработки WinRT. Оба Javascript и С# имеют прямой доступ к API WinRT через языковые прогнозы. То есть существует уникальная привязка, специфичная для языка, к базовому API. Таким образом, ни один язык не является более "родным", чем другим.

Вы должны иметь возможность написать эквивалентное приложение Metro на любом языке. На высоком уровне это действительно сводится к тому, на каком языке/среде вам более комфортно.

Однако есть несколько отличий, которые должны учитывать это решение. Во-первых, компоненты WinRT могут быть записаны только на С# или С++. Javascript может использовать только эти компоненты. Если есть намерение создавать повторно используемые/совместимые компоненты, следует помнить об этом.

Во-вторых, хотя Windows Phone 8 SDK еще не выпущен, есть признаки того, что приложения Windows Phone 8 могут быть записаны только на С#. Если есть намерение создавать похожие приложения как для планшета, так и для телефона, это, вероятно, серьезное рассмотрение.

Не было много исследований на основе производительности, сравнивающих их в приложении Metro, поэтому трудно сказать, станет ли это фактором или нет.

Тогда есть и сторонняя поддержка. С#/XAML хорошо зарекомендовал себя и имеет много сторонней поддержки. Но аналогично, Javascript имеет много доступных сторонних библиотек (например, jQuery), которые по большей части могут быть добавлены и использованы в приложении Metro. Я бы немного отказался от С#/XAML, но похоже, что поддержка хороша для обоих.