Все любят C#!
Нет, ну правда же? Лично для меня C# остается самым удобным языком, как в плане своих возможностей, так и в плане синтаксиса.
Если же сравнивать C# и JavaScript в плане возможностей, список отличий получится длинной в книгу, и JavaScript в этом сравнении явно не выигрывает.
Собственно поэтому, разработчики WinJS позаботились о том, чтобы мы могли по прежнему использовать C# код в своих Windows Store JavaScript приложениях. Как это можно сделать и какие при этом накладываются ограничения мы подробно рассмотрим в этой статье.
Для начала стоит начать со стороны C# кода. В Visual Studio 2012 был представлен шаблон для нового вида проекта - Windows Runtime Component:
Только этот тип проекта вы можете добавить, как Reference, к своему JavaScript проекту. И, соответственно, все классы C#, которые вы хотите использовать, следует поместить в такой проект. Создадим самый простой класс, исключительно для демонстрации существующих ограничений:
1: namespace WinJsDemo.Utilities
2: {
3: public sealed class ManagementClass
4: {
5: public string GetHelloString(string name)
6: {
7: return "Hello " + name;
8: }
9: }
10: }
[Это важно] Приведенный выше пример будет работать, но использовать его ни в коем случае не стоит, так вызов подобного метода будет происходить в синхронном режиме (то есть в главном потоке UI). В случае задержки все ваше приложение будет "висеть", ожидая ответа из управляемой среды. Как правильно вызывать метод асинхронно будет рассмотрено в следующей статье.
Итак, сходу, мы упираемся в главные ограничения при использовании управляемой среды, вот наиболее существенные из них:
- Свойства, поля, параметры и возвращаемые значения методов всех публичных классов должны быть из семейства Windows Runtime;
- Публичные классы и интерфейсы не могут быть дженериками;
- Публичные классы не могут реализовывать интерфейсы, которые не находятся в Windows Runtime;
- Публичные классы не могут быть унаследованными от типов, которые не находятся в Windows Runtime;
- Все публичные классы должно находится в корневом пространстве имен сборки (при этом имя сборки должно совпадать с именем корневого пространства имен);
- Имя сборки не должно начинаться со слова "Windows";
- Публичные структуры не могут иметь никаких членов, кроме публичных полей. При этом тип данных публичных полей должен быть Value Type или String;
- Все публичные классы должны быть объявлены, как закрытые от наследования (с модификатором sealed).
Стоит отметить, что использование на стороне JavaScript крайне простое - достаточно добавить ссылку на сборку типа Windows Runtime Component, после чего простарнство имен сборки будет доступно в любом месте JavaScript кода:
1: (function () {
2: "use strict";
3:
4: var app = WinJS.Application;
5:
6: app.onready = function(args) {
7: var myClass = new WinJsDemo.Utilities.ManagementClass();
8: document.getElementById("content").innerHTML = myClass.getHelloString("Jack");
9: };
10:
11: app.start();
12: })();
Таким образом, использование управляемого кода открывает широкие возможности для Windows 8 разработчиков, позволяя интегрировать в свои JavaScript приложения бизнес логику любой сложности. Однако не стоит увлекаться вызовами C# кода, те функции которые можно написать на JavaScript - стоит писать на JavaScript.
Собственно, пока это все, что я хотел вам рассказать. С асинхронными вызовами управляемых методов и примерами передачи сложных типов данных между C# и JavaScript, мы познакомимся в следующей статье.
Полезные ссылки вы найдете ниже. Спасибо за внимание. Приятной разработки на Windows 8!
Комментариев нет:
Отправить комментарий