Microsoft предоставила видео, в котором объясняется, как использовать комбинацию JavaScript для «простых» вещей и C ++ для «глубоких» вещей в среде Metro.
Сама идея использования JavaScript и HTML как способа создания приложений в стиле Metro для Windows 8 является чем-то вроде загадки. Зачем тебе идти этим путем. Пользовательский интерфейс может выглядеть так, как будто это просто HTML, но JavaScript настолько настраиваемый, насколько это возможно, просто из-за ряда конкретных вызовов библиотеки, необходимых для его работы.
Microsoft, однако, похоже, поддерживает JavaScript, но есть проблемы — JavaSript медленный и не подходит для написания таких вещей, как видеопроцессоры или продвинутая трехмерная графика. Предлагаемое решение — использовать комбинацию C ++ и JavaScript. Вы используете JavaScript для создания пользовательского интерфейса и делаете «простые» вещи, а C ++ — для глубоких технических вещей.
Чтобы показать вам, как смешивать эти два очень разных языка, есть видео, которое вы можете посмотреть. Настоящая суть разговора начинается примерно с 7-минутной отметки. В примере просто отображается входное изображение и обработанное изображение — обработка выполняется с использованием C ++.
Основная идея состоит в том, что вы добавляете слой WinRT, который обеспечивает связь между JavaScript и C ++. Этот уровень WinRT принимает форму компонента WinRT, который является своего рода компонентом COM, но без тяжелой работы. По сути, вы создаете компонент WinRT, и он становится расширением среды выполнения для подсистемы WinRT. Затем вы можете вызвать компонент WinRT с любого языка с поддержкой WinRT. Процесс заключается в простом использовании шаблона Visual Studio и добавлении некоторых общедоступных методов. Если вы помните разработку COM, вы найдете вещи до странности знакомыми — GUIDS и так далее. Чтобы указать проекту JavaScript или любому языку WinRT использовать новый компонент, вам просто нужно добавить ссылку, создать экземпляр класса и использовать его методы.
Это все очень просто, но это еще одно изобретение колеса. Или это возврат к упрощенному колесу? Сначала был COM, и это было сложно и было много проблем. Затем были .NET и самоанализ, которые устранили сложности COM. Теперь есть компонент WinRT, который представляет собой заново изобретенный COM, чтобы его можно было так же легко использовать, как объект среды выполнения .NET.
Все это неплохо — просто очень странно и, смею сказать, не очень логично.