WinRT .NET 4.5 и RCW - PullRequest
       2

WinRT .NET 4.5 и RCW

4 голосов
/ 05 октября 2011

Просто любопытно, было ли у кого-то достаточно времени с WinRT, чтобы понять, существуют ли области в WinRT и .NET 4.5, которые стирают .NET-программисту некоторые из старых элементов, встречавшихся в программировании VSTO и COM Interop Office, относящихся к RCW и различия в подсчете ссылок COM и .NET GC заключаются в том, что не используется финализатор (убедитесь, что вы получаете ссылку на все .NET RCW и т. д.).

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

Заранее спасибо

Возможно, лучший способ задать вопрос состоит в том, является ли это по существу той же архитектурой объектов .NET в модели управляемой памяти / модели с сборкой мусора, ссылающейся на объекты COM (WinRT) в архитектуре памяти с неуправляемым (но изолированным программным обеспечением) подсчетом ссылок?

Если в привязках метаданных или в среде с песочницей нет какой-то "магии", тогда нам нужно будет просто применить тот же подход, который был у нас с RCW.

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Я создал два полных приложения на предварительном просмотре для разработчиков на C # / XAML.Объекты WinRT выглядят так же, как обычные объекты C #.Нет необходимости в финализаторах или других традиционных вещах .NET / COM.Прогнозы для .NET делают WinRT API довольно плавным.

В некоторых областях COM пропускается.

  • Исключения, генерируемые объектами WinRT, не имеют трассировки стека
  • Большинство исключений, генерируемых объектами WinRT, имеют общий тип исключения и включают код ошибки HRESULT.

Я ожидаю, что эти проблемы будут решены в будущих сборках Windows 8.

В настоящее время существуют также некоторые избыточности, когда подобные типы определены и в WinRT, и в .NET ( IObservableVector и INotifyCollectionChanged )

0 голосов
/ 27 ноября 2012

[Дополнение к ответу Роберта Суини ]

Согласно официальному сообщению .NET Framework :

.NETAPI-интерфейсы не предоставляются через WinRT, но продолжают работать, как всегда, в CLR.

Далее говорится:

.NET разработчики не привыкли ктехнологии взаимодействия.Вы можете использовать как COM Interop, так и P / invoke для вызова собственных API из кода .NET.

0 голосов
/ 05 октября 2011

COM-взаимодействие на самом деле не применимо в WinRT, потому что WinRT полностью обходит архитектуру Win32 (т.е. они существуют бок о бок).Поскольку COM находится поверх Win32, это совершенно отдельная сделка в контексте WinRT.

Редактировать: Извините - я здесь не прав.Совершенно неправильно понял WinRT!Пожалуйста, смотрите комментарий svick ниже.

...