2016-10-13 10 views
1

Как мы все знаем, что WinRT является расширенной версией компонентной объектной модели Microsoft (COM). У меня не было большой возможности работать непосредственно с компонентами COM, кроме как управлять распределенными транзакциями более десяти лет назад. Я уверен, что COM много используется на уровне ОС.Каковы модели поведения/ограничения стиля компонентного объекта (COM), отображаемые типами WinRT

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

  • типов WinRT должны быть запечатаны по умолчанию, как просили в этом посте here.
  • они предлагают ограниченную поддержку наследования и дженериков в том смысле, что он поддерживает только наследование интерфейса, но не наследование реализации, как это предлагается в принятом ответе в этом сообщении here.

Может кто-нибудь помочь мне с некоторыми хорошими ограничениями высокого уровня, наложенными на типы COM, или может указывать на какой-то хороший ресурс, где я могу получить исчерпывающую информацию об этом. Я много искал, но без помощи.

ответ

1

Проверить Restriction and Rules part of Wikipedia article

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

Основные типы

В языках .NET и С ++ богатый набор типов данных существует, представляющие различные цифры.

в JavaScript, число может представлять только до 53 бит точности.

в WinRT, единственный недостаток Nu meral data type - 8-разрядное целое число со знаком относительно .NET и C++. Разработчики JavaScript должны быть осторожны, когда обрабатывает большие числа при кодировании для WinRT.

Струны

Строки неизменны в .NET и JavaScript, но изменяемые в C++.

Нулевой указатель, переданный в виде строки WinRT по C++ преобразуется в пустую строку

В .Net, нуль передается в виде строки в WinRT преобразуется в пустую строку

В JavaScript, null, передаваемый как строка в WinRT, преобразуется в строку со словом null.Это связано с ключевым словом NULL в JavaScript представлены как нулевой объект

Аналогичные результаты возникают при переходе неопределенными в WinRT из JavaScript

Структуры

В .NET и C++, структуры являются типами значений, и такая структура может содержать любого типа.

JavaScript не поддерживает прямую поддержку структур.

В WinRT использование структур разрешено только для содержащих типов, которые имеют семантику значений, включая цифры, строки и другие структуры. Указатели или ссылки на интерфейс запрещены.

Список литературы

В .NET, объекты передаются по ссылке, а цифры и структуры являются> передаются по значению.

В C++ все типы могут передаваться по ссылке или значению.

В WinRT интерфейсы передаются по ссылке; все остальные типы: передано по значению.

Массивы

В .NET, C++ и массивы JavaScript ссылочные типы.

В WinRT массивы являются типами значений.

События

В .NET и C++, клиенты подписаться на события, используя оператор + =.

В JavaScript функция addEventListener или настройка на свойство используется для подписки на события.

В WinRT все языки могут использовать свой собственный способ подписки на события.

Коллекции

Некоторые коллекции .NET карту непосредственно в коллекции WinRT.

WinRT Векторный тип напоминает массивы, а синтаксис массива используется для .

Тип карты WinRT является коллекцией ключей/значений и проецируется как Словарь на языках .NET.

Метод перегрузки

Все WinRT языки (.NET, C++, JavaScript) поддержка перегрузки по параметров

.NET и C++ также поддерживают перегрузки по типу.

В WinRT для перегрузки используется только номер параметра.

Асинхронность

методы Все WinRT сконструированы таким образом, что любой метод занимает больше времени, чем 50 миллисекунд является метод асинхронной.

Установленный шаблон именования для различения асинхронных методов: Async. Для полной библиотеки времени выполнения все методы, которые имеют возможность , дольше 50 мс, реализуются только как асинхронные методы.