Windows Runtime ( WinRT ) es una arquitectura de componentes y aplicaciones independiente de la plataforma, introducida por primera vez en Windows 8 y Windows Server 2012 en 2012. Está implementada en C++ y admite oficialmente el desarrollo en C++ (a través de C++/WinRT , C++/CX o WRL), Rust/WinRT , Python/WinRT , JavaScript - TypeScript y los lenguajes de código administrado C# y Visual Basic (.NET) (VB.NET).
WinRT no es un entorno de ejecución en el sentido tradicional, sino una interfaz binaria de aplicación independiente del lenguaje basada en COM para permitir que las API orientadas a objetos sean consumidas desde múltiples lenguajes, con servicios que normalmente proporciona un entorno de ejecución completo, como la activación de tipos. [ 1 ] Es decir, WinRT es un "sistema de entrega de API". Las aplicaciones que utilizan Windows Runtime pueden ejecutarse dentro de un entorno aislado para permitir una mayor seguridad y estabilidad, y pueden admitir de forma nativa tanto x86 como ARM . [ 2 ] [ 3 ] Los componentes de WinRT están diseñados teniendo en cuenta la interoperabilidad entre múltiples lenguajes y API, incluidos los lenguajes nativos, administrados y de scripting. Las API integradas proporcionadas por Windows que utilizan la ABI de WinRT se conocen comúnmente como API de WinRT; sin embargo, cualquiera puede utilizar la ABI de WinRT para sus propias API.
Tecnología
WinRT está implementado en el lenguaje de programación C++ [ 4 ] y es orientado a objetos por diseño. [ 4 ] Su tecnología subyacente, la API de Windows (Win32 API), está escrita principalmente en el lenguaje C . [ 5 ] Es una interfaz binaria de aplicación no administrada basada en Component Object Model (COM) que permite la interfaz desde múltiples lenguajes, al igual que COM. Sin embargo, las definiciones de la API se almacenan en archivos, que están codificados en el formato de metadatos ECMA 335 , que .NET Framework también utiliza con algunas modificaciones. Para los componentes WinRT implementados en código nativo, el archivo de metadatos solo contiene la definición de métodos, clases, interfaces y enumeraciones y la implementación se proporciona en una DLL separada. [ 6 ] [ 7 ] [ 8 ] Este formato de metadatos común hace que sea más fácil consumir las API de WinRT desde aplicaciones .NET con una sintaxis más simple que P/Invoke . [ 9 ] Windows proporciona un conjunto de API integradas que se basan en la ABI WinRT que proporcionan todo, desde la biblioteca WinUI basada en XAML hasta el acceso a dispositivos como la cámara, el micrófono, etc..winmd
El lenguaje anterior C++/CX (Extensiones de Componentes), que toma prestada parte de la sintaxis de C++/CLI , se introdujo para escribir y consumir componentes WinRT con menos código de unión visible para el programador, en comparación con la programación COM clásica en C++, e impone menos restricciones en comparación con C++/CLI en cuanto a la mezcla de tipos. Se recomienda el uso de las Extensiones de Componentes de C++/CX solo en el límite de la API, no para otros fines. [ 10 ] También se puede usar C++ estándar (con disciplina específica de COM) para programar con componentes WinRT, [ 11 ] con la ayuda de la Biblioteca de Plantillas de C++ de Windows Runtime (WRL), que tiene un propósito similar al que proporciona la Biblioteca de Plantillas Activas para COM. [ 12 ] En 2019, Microsoft dejó de usar C++/CX en favor de la biblioteca de encabezados de C++/WinRT . [ 13 ]
La mayoría de las aplicaciones WinRT se ejecutan dentro de un entorno aislado y requieren la aprobación explícita del usuario para acceder a funciones críticas del sistema operativo y al hardware subyacente. Por defecto, el acceso a los archivos está restringido a varias ubicaciones predeterminadas, como los directorios Documentos o Imágenes. [ 14 ]
Las aplicaciones WinRT se empaquetan en el formato de archivo .appx y posteriormente en el .msix ; según las Convenciones de Empaquetado Abierto , utiliza un formato ZIP con archivos XML añadidos. [ 15 ] Las aplicaciones WinRT se distribuyen principalmente a través de una tienda de aplicaciones llamada Microsoft Store , donde los usuarios pueden comprar y descargar aplicaciones de Windows (denominadas aplicaciones de Windows Store ). Inicialmente, las aplicaciones WinRT solo podían instalarse desde fuera de Windows Store en sistemas Windows 8 o RT que formaran parte de un dominio de Windows o que contaran con una clave de activación especial obtenida de Microsoft. [ 16 ] [ 17 ] [ 18 ] [ 19 ] Sin embargo, estas restricciones se eliminaron en la Actualización de noviembre de Windows 10, donde los usuarios pueden instalar libremente cualquier aplicación firmada con un certificado de confianza habilitando una configuración. [ 20 ]
En una importante diferencia con respecto a Win32 y de forma similar a .NET Framework 4.5 , la mayoría de las API que se espera que tarden un tiempo considerable en completarse se implementan como asíncronas . Al llamar a una función asíncrona de Windows Runtime, la tarea se inicia en otro hilo o proceso y la función regresa inmediatamente, liberando a la aplicación para realizar otras tareas mientras espera los resultados. [ 21 ] El modelo asíncrono requiere nuevas construcciones de lenguaje de programación. Cada lenguaje proporciona su propia forma de consumir API asíncronas . Las partes de la API integrada que necesitan acceso asíncrono incluyen mensajes y diálogos en pantalla, acceso a archivos, conectividad a Internet, sockets, flujos, dispositivos y servicios, y calendario, contactos y citas.
Servicios
Metadatos
Los metadatos describen las API escritas utilizando la ABI WinRT. Definen un modelo de programación que permite escribir código orientado a objetos que se puede compartir entre diferentes lenguajes de programación y habilita servicios como la programación reflexiva (reflexión).
Herb Sutter , experto en C++ de Microsoft , explicó durante su sesión sobre C++ en la conferencia Build de 2011 que los metadatos de WinRT tienen el mismo formato que los metadatos de CLI . [ 10 ] El código nativo (es decir, el código máquina específico del procesador) no puede contener metadatos, por lo que se almacena en un archivo de metadatos separado que se puede reflejar como los ensamblados CLI ordinarios . [ 22 ] Dado que tiene el mismo formato que los metadatos de CLI, las API de WinRT se pueden usar desde lenguajes CLI administrados como si fuera solo una API de .NET.
Sistema de tipos
WinRT cuenta con un sistema de tipos basado en clases y orientado a objetos, construido sobre metadatos. Admite construcciones con sus correspondientes construcciones en el marco .NET: clases , métodos , propiedades , delegados y eventos .
Una de las principales adiciones de WinRT con respecto a COM es la interfaz binaria entre aplicaciones (ABI), los genéricos al estilo .NET . Solo las interfaces y los delegados pueden ser genéricos; las clases de tiempo de ejecución y los métodos en ellas no pueden serlo. Las interfaces genéricas también se conocen como interfaces parametrizadas. En C++/CX, se declaran usando la palabra clave genericcon una sintaxis muy similar a la de la palabra clave template. Las clases WinRT (clases ref) también se pueden convertir en genéricas usando plantillas de C++, pero solo las instanciaciones de plantillas se pueden exportar a los metadatos .winmd (con cierta modificación de nombres ), a diferencia de los genéricos WinRT que conservan su carácter genérico en los metadatos. WinRT también proporciona un conjunto de interfaces para contenedores genéricos que son paralelas a las de la biblioteca estándar de C++ , y los lenguajes proporcionan algunas funciones de conversión recíprocas (de ida y vuelta). El consumo de colecciones WinRT en lenguajes .NET (por ejemplo, C# y VB) y en JavaScript es más transparente que en C++, con asignaciones automatizadas a sus equivalentes naturales que ocurren en segundo plano. Al crear un componente WinRT en un lenguaje administrado, se deben seguir algunas reglas adicionales al estilo COM; por ejemplo, los tipos de colección del marco .NET no se pueden declarar como tipos de retorno, sino que solo se pueden usar las interfaces WinRT que implementan en el límite del componente.
Componentes WinRT
Las clases compiladas para WinRT se denominan componentes WinRT . Son clases que pueden escribirse en cualquier lenguaje compatible y para cualquier plataforma compatible. La clave reside en los metadatos. Estos metadatos permiten interactuar con el componente desde cualquier otro lenguaje WinRT. El entorno de ejecución requiere que los componentes WinRT creados con .NET Framework utilicen los tipos de interfaz definidos o las interfaces de tipo .NET, que se asignan automáticamente al primer tipo nombrado. La herencia aún no es compatible con los componentes WinRT administrados, excepto para las clases XAML. [ 23 ]
Interfaces de programación
Los programas y las bibliotecas destinados al entorno de ejecución WinRT pueden crearse y utilizarse desde diversas plataformas y lenguajes de programación. En particular, C / C++ (ya sea con extensiones de lenguaje que ofrecen soporte de primera clase para los conceptos de WinRT o con una biblioteca de plantillas de bajo nivel que permite escribir código en C++ estándar), .NET ( C# y Visual Basic ( VB.NET)) y JavaScript . Esto es posible gracias a los metadatos. En la terminología de WinRT, una vinculación de lenguaje se denomina proyección de lenguaje.
C++ (C++/WinRT, extensiones de componentes, WRL)
El C++ estándar es un componente fundamental de la plataforma WinRT. A partir de Windows 10, versión 1803, el SDK de Windows incluye C++/WinRT. C++/WinRT es una proyección de lenguaje C++17 moderno y completamente estándar para las API de Windows Runtime (WinRT), implementada como una biblioteca basada en archivos de encabezado y diseñada para proporcionar acceso directo a la API moderna de Windows. Con C++/WinRT, las API de Windows Runtime se pueden crear y utilizar con cualquier compilador C++17 compatible con los estándares. WinRT es una plataforma nativa y admite cualquier código C++ nativo (y estándar), lo que permite a los desarrolladores de C++ reutilizar las bibliotecas nativas de C/C++ existentes. Con C++/WinRT, no existen extensiones de lenguaje.
Existen otras dos opciones heredadas para usar WinRT desde C++: Windows Runtime C++ Template Library (WRL), una biblioteca de plantillas de estilo ATL (similar a Windows Template Library o WTL), y C++/CX (C++ con Component Extensions) que se asemeja a C++/CLI. [ 24 ] Debido a los requisitos de consumo interno en Microsoft, WRL no admite excepciones, lo que significa que su disciplina de valor de retorno se basa en HRESULT , al igual que la de COM. [ 25 ] Por otro lado, C++/CX encapsula las llamadas a WinRT con código que realiza comprobaciones de errores y lanza excepciones según corresponda. [ 26 ]
C++/CX cuenta con varias extensiones que permiten la integración con la plataforma y su sistema de tipos. La sintaxis se asemeja a la de C++/CLI, aunque produce código nativo (aunque no estándar) y metadatos que se integran con el entorno de ejecución. Por ejemplo, los objetos WinRT se pueden asignar con ref new, que es el equivalente de gcnewde C++/CLI. El operador sombrero ^conserva su significado; sin embargo, en el caso de que tanto el llamador como el llamado estén escritos en C++ y residan en el mismo proceso, una referencia sombrero es simplemente un puntero a un vptr de una tabla de métodos virtuales (vtable, VMT). [ 26 ]
Junto con C++/CX, en comparación con la programación COM tradicional en C++, existen las clases parciales , inspiradas también en .NET. Estas permiten que el código XAML de instancia de WinRT se traduzca a código C++ mediante herramientas y, posteriormente, se combine con código escrito por humanos para generar la clase completa, permitiendo una clara separación entre las partes generadas por máquina y las editadas por humanos en la implementación de una clase, en archivos diferentes.
.NETO
El .NET Framework y el Common Language Runtime (CLR) están integrados en WinRT como una subplataforma. Han influido y establecido los estándares del ecosistema a través del formato de metadatos y las bibliotecas. El CLR proporciona servicios como la compilación JIT y la recolección de basura . Las aplicaciones WinRT que utilizan lenguajes .NET usan la interfaz de usuario WinUI basada en XAML y se escriben principalmente en C#, VB.NET y, por primera vez para XAML, con código nativo usando C++/CX. Aunque aún no se admite oficialmente, los programas también se pueden escribir en otros lenguajes .NET. Con .NET 5, Microsoft eliminó la compatibilidad integrada con WinRT y en su lugar creó CsWinRT, una herramienta que genera código de interoperabilidad para acceder a las API de Windows Runtime de forma similar a como funciona C++/WinRT. [ 27 ] [ 28 ]
Limitaciones
Las clases definidas en componentes WinRT que se crean en lenguajes .NET administrados deben declararse como sealed, por lo que no pueden derivarse de . Sin embargo, las clases WinRT no selladas definidas en otros lugares pueden heredarse de en .NET, sus métodos virtuales pueden sobrescribirse, etc.; pero la clase administrada heredada aún debe ser sellada.
Los miembros que interactúan con otro lenguaje deben tener una firma con tipos WinRT o un tipo administrado que sea convertible a estos. [ 23 ]
JavaScript
Las aplicaciones WinRT también se pueden programar con HTML y JavaScript en el código subyacente , y se ejecutan con el motor de renderizado Trident y el motor JavaScript Chakra , ambos utilizados también por Internet Explorer . Al programar una aplicación WinRT en JavaScript, sus características se adaptan a las convenciones de nomenclatura de JavaScript y los espacios de nombres se asignan a objetos JavaScript.
Otros idiomas
Microsoft está en proceso de proyectar las API de WinRT a lenguajes distintos de C++. Un ejemplo es Rust/WinRT, una interfaz para que los programas escritos en Rust consuman y creen API de WinRT. [ 29 ] Rust/WinRT forma parte del Windows App SDK (anteriormente Project Reunion), un esfuerzo de Microsoft para conciliar el escritorio tradicional de Windows y el modelo de aplicaciones UWP. [ 30 ]
Puentes
Con la introducción de la Plataforma Universal de Windows (UWP), la plataforma ha recibido numerosos puentes de API que permiten portar fácilmente programas desarrollados originalmente para otras plataformas, aprovechando las características de UWP. Microsoft ha proporcionado puentes para Android (descontinuado desde 2016), iOS ( Cocoa Touch ), Progressive Web Apps , Silverlight , así como aplicaciones de escritorio tradicionales de Windows (utilizando el empaquetado MSIX del SDK de aplicaciones de Windows ).
API
WinRT incluye una interfaz de programación de aplicaciones (API) en forma de biblioteca de clases que expone las funcionalidades de Windows 8 para el desarrollador, como su API de interfaz inmersiva. Es accesible y utilizable desde cualquier lenguaje compatible.
Clases de tiempo de ejecución
Las clases de Windows Runtime son un conjunto de SDK que proporcionan acceso a todas las funcionalidades, desde el analizador XAML hasta la función de la cámara. Los SDK están implementados como bibliotecas nativas de C/C++ (no administradas).
Convenciones de nomenclatura
Las convenciones de nomenclatura para los componentes (clases y otros miembros) en la API están fuertemente influenciadas por las convenciones de nomenclatura de .NET, que utilizan la notación camel case (específicamente PascalCase). Microsoft recomienda a los usuarios seguir estas reglas en caso de que no se indiquen otras.
Estas convenciones se proyectan de forma diferente en algunos lenguajes, como JavaScript, que las adapta a sus propias convenciones y viceversa. Esto se hace para ofrecer una experiencia nativa y consistente, independientemente del lenguaje de programación.
Restricciones y normas
Dado que Windows Runtime se proyecta a varios lenguajes, existen algunas restricciones en los tipos de datos fundamentales para poder admitir todos esos lenguajes. Los programadores deben tener cuidado con el comportamiento de esos tipos cuando se utilizan con acceso público (para parámetros de métodos, valores de retorno de métodos, propiedades, etc.). [ 31 ]
- Tipos básicos
- En los lenguajes .NET y C++, existe un amplio conjunto de tipos de datos que representan diversos números.
- En JavaScript, un valor
Numbersolo puede representar hasta 53 bits de precisión. - En WinRT, el único tipo de dato numérico que falta es el entero con signo de 8 bits, en comparación con .NET y C++. Los desarrolladores de JavaScript deben tener cuidado al trabajar con números grandes al programar para WinRT.
- Instrumentos de cuerda
- Las cadenas de caracteres son inmutables en .NET y JavaScript, pero mutables en C++.
- Un puntero nulo pasado como cadena a WinRT por C++ se convierte en una cadena vacía.
- En .Net, cuando se pasa un valor nulo como cadena a WinRT, este se convierte en una cadena vacía.
- En JavaScript, cuando se pasa un valor nulo como cadena a WinRT, este se convierte en una cadena con la palabra clave `null`
null. Esto se debe a que la palabra clave `null` de JavaScriptnullse representa como un objeto nulo. Se obtienen resultados similares al pasar valores nulosundefineda WinRT desde JavaScript. - Estructuras
- En .NET y C++, las estructuras son tipos de valor, y una estructura de este tipo puede contener cualquier tipo.
- JavaScript no admite estructuras directamente.
- En WinRT, el uso de estructuras solo está permitido para contener tipos con semántica de valor, como números, cadenas y otras estructuras. No se permiten punteros ni referencias a interfaces.
- Referencias
- En .NET, los objetos se pasan por referencia, mientras que los números y las estructuras se pasan por valor.
- En C++, todos los tipos se pueden pasar por referencia o por valor.
- En WinRT, las interfaces se pasan por referencia; todos los demás tipos se pueden pasar por valor o por referencia. [ 2 ]
- Matrices
- En .NET, C++ y JavaScript, los arrays son tipos de referencia.
- En WinRT, las matrices son tipos de valor y están bastante restringidas.
- Eventos
- En .NET y C++, los clientes se suscriben a eventos utilizando
+=el operador. - En JavaScript, se utiliza
addEventListeneruna función o una propiedad de configuración para suscribirse a eventos.on<EventName> - En WinRT, todos los lenguajes pueden usar su propio método para suscribirse a eventos.
- Colecciones
- Algunas colecciones de .NET se corresponden directamente con las colecciones de WinRT.
- El tipo Vector de WinRT se asemeja a las matrices y se utiliza la sintaxis de matrices para consumirlas.
- El tipo Mapa de WinRT es una colección de pares clave/valor y se proyecta como un Diccionario en los lenguajes .NET.
- Sobrecarga de métodos
- Todos los lenguajes WinRT (.NET, C++, JavaScript) admiten la sobrecarga de parámetros.
- .NET y C++ también admiten la sobrecarga de tipos.
- En WinRT, solo se utiliza el número de parámetro para la sobrecarga.
- asincronía
- Todos los métodos de WinRT están diseñados de tal manera que cualquier método que tarde más de 50 milisegundos es un método asíncrono.
- El patrón de nomenclatura establecido para distinguir los métodos asíncronos es
<Verb>[<Noun>]Async. Para la biblioteca de tiempo de ejecución completa, todos los métodos que tienen la posibilidad de durar más de 50 ms se implementan únicamente como métodos asíncronos.
Entorno de ejecución de Windows Phone
Windows Phone 8.1 utiliza una versión de Windows Runtime llamada Windows Phone Runtime . Permite desarrollar aplicaciones en C# y VB.NET, y componentes de Windows Runtime en C++/CX. [ 32 ] Aunque WP8 trajo soporte limitado, la plataforma finalmente convergió con Windows 8.1 en Windows Phone 8.1 .
Windows Phone 8
Windows Phone 8 tiene soporte limitado para desarrollar y consumir componentes de Windows Runtime a través de Windows Phone Runtime . Muchas de las API de Windows Runtime en Windows 8 que manejan funciones centrales del sistema operativo se han portado a Windows Phone 8. [ 33 ] Se ha agregado soporte para desarrollar juegos nativos usando C++/CX y DirectX, a petición de la industria del desarrollo de juegos.
Sin embargo, el marco XAML de Windows Phone sigue basándose en el mismo marco Microsoft Silverlight , al igual que en Windows Phone 7, para garantizar la compatibilidad con versiones anteriores. Por lo tanto, a partir de 2016El desarrollo con XAML es imposible en C++/CX. El desarrollo con HTML5 o WinJS no es compatible con Windows Phone 8.
Windows Phone 8.1
La compatibilidad con Windows Runtime en Windows Phone 8.1 converge con la de Windows 8.1. Esta versión incorpora una API completa de Windows Runtime a la plataforma, incluyendo compatibilidad con WinRT XAML y enlaces de lenguaje para C++/CX y HTML5 - JavaScript . También se incluye un tipo de proyecto llamado Aplicaciones universales para permitir que las aplicaciones compartan código entre las versiones 8.1 de Windows Phone y Windows.
El marco de trabajo Silverlight de Windows Phone 8 se ha actualizado. Ahora puede aprovechar algunas de las nuevas funciones de Windows Runtime.
Windows Phone Runtime utiliza el formato de paquete AppX de Windows 8, después de haber utilizado anteriormente Silverlight XAP .
Referencias
- ↑ Zhang, Yi (15 de marzo de 2017). "Windows Runtime no es un Runtime" . Blog de yizhang82 . Consultado el 14 de junio de 2021 .
- 1 2 Avram, Abel (21 de septiembre de 2011). "Detalles de diseño del Windows Runtime" . InfoQ .
- ↑ Klug, Brian; Smith, Ryan (13 de septiembre de 2011). "Microsoft Build: Windows 8, una vista previa pre-beta" . AnandTech . Archivado del original el 25 de octubre de 2011.
- 1 2 Michael, Mayberry (2012). WinRT al descubierto . Nueva York: Apress . pág. 3. ISBN 978-1-4302-4585-8.
- ↑ "Creación de aplicaciones Win32 (C++)" . MSDN . Microsoft . Consultado el 12 de enero de 2014 .
- ↑ "Archivos de metadatos de Windows (WinMD)" . Referencia de la API para aplicaciones UWP. Microsoft Docs . Consultado el 20 de julio de 2019 .
- ↑ De Icaza, Miguel (15 de septiembre de 2011). "WinRT desmitificado" . Blog personal de Miguel de Icaza . Autoeditado . Consultado el 15 de enero de 2014 .
- ↑ "Archivos WINMD bajo el capó" . CodeProject . 15 de octubre de 2012. Consultado el 14 de junio de 2021 .
- ↑ "¿Cuál es la sobrecarga de serialización COM al llamar a la API WinRT desde C#?" . Foro de MSDN . Publicado por el autor . 20 de septiembre de 2011. Archivado del original el 16 de enero de 2014 . Consultado el 15 de enero de 2014 .
- 1 2 "Uso del Windows Runtime desde C++ | Build2011 | Channel 9" . Channel9.msdn.com. 14 de septiembre de 2011. Archivado del original el 12 de octubre de 2011. Recuperado el 24 de abril de 2012 .
- ↑ Sivakumar, Nish (29 de septiembre de 2011). "Visual C++ y WinRT/Metro: algunos fundamentos - CodeProject®" . Codeproject.com. Archivado del original el 8 de diciembre de 2011. Recuperado el 24 de abril de 2012 .
- ↑ "Uso del entorno de ejecución de Windows desde C++ | Build2011 | Channel 9" . Channel9.msdn.com. 14 de septiembre de 2011. Archivado del original el 12 de octubre de 2011. Consultado el 24 de abril de 2012 .
- ↑ "Introducción a C++/WinRT - Aplicaciones UWP de Windows" . docs.microsoft.com . Microsoft. 18 de noviembre de 2022.
- ↑ lastnameholiu. "Permisos de acceso a archivos - Aplicaciones UWP" . docs.microsoft.com . Consultado el 8 de agosto de 2020 .
- ↑ "Diseño de un paquete de aplicación simple y seguro: APPX" . Blog para desarrolladores de aplicaciones de Windows 8. Consultado el 30 de diciembre de 2013 .
- ↑ "Cómo agregar y quitar aplicaciones" . TechNet . Microsoft. 31 de mayo de 2012. Consultado el 4 de octubre de 2012. Para
habilitar la instalación de aplicaciones de forma local en un equipo con Windows 8 Enterprise que no esté unido a un dominio o en cualquier equipo con Windows® 8 Pro, debe usar una clave de activación de producto para instalación de aplicaciones de forma local. Para habilitar la instalación de aplicaciones de forma local en un dispositivo con Windows® RT, debe usar una clave de activación de producto para instalación de aplicaciones de forma local. Para obtener más información sobre las claves de activación de productos para instalación de aplicaciones de forma local, consulte Licencias por volumen de Microsoft.
- ↑ "Windows 8: El desastre de Metro" . PC Magazine. Archivado del original el 18 de noviembre de 2018. Consultado el 8 de septiembre de 2012 .
- ↑ "Microsoft ahora usa 'Modern UI Style' para referirse a las aplicaciones de 'Metro Style' de Windows 8" . Consultado el 10 de agosto de 2012 .
- ↑ "¿Qué es una aplicación de Microsoft Store?" . Centro de desarrollo de Windows . Consultado el 1 de octubre de 2012 .
- ↑ "¿Qué es la instalación lateral y cómo instalar aplicaciones en Windows 10? [ DETALLES ] " . Silicophilic . 27 de julio de 2019. Archivado del original el 14 de junio de 2021. Consultado el 14 de junio de 2021 .
- ↑ "Programación asíncrona (aplicaciones de la Tienda Windows)" . MSDN . Microsoft . Consultado el 12 de enero de 2014 .
- ↑ ".NET recibe una nueva oportunidad" . Archivado del original el 24 de septiembre de 2011. Consultado el 16 de septiembre de 2011 .
- 1 2 "Uso del Windows Runtime desde C# y Visual Basic | Build2011 | Channel 9" . Channel9.msdn.com. 14 de septiembre de 2011. Consultado el 24 de abril de 2012 .
- ↑ "Dentro del diseño de C++/CX - Blog del equipo de Visual C++ - Página principal - Blogs de MSDN" . Blogs.msdn.com. 20 de octubre de 2011. Consultado el 24 de abril de 2012 .
- ↑ Charles (26 de octubre de 2011). "GoingNative 3: El episodio de C++/CX con Marian Luparu | C9::GoingNative | Channel 9" . Channel9.msdn.com. Archivado del original el 7 de mayo de 2012. Recuperado el 24 de abril de 2012 .
- 1 2 Bajo la superficie con C++ para aplicaciones de estilo Metro con Deon Brewis en //Build
- ↑ "CSWinRT: Cómo llamar a las API de Windows WinRT desde aplicaciones .NET5" . TECHCOMMUNITY.MICROSOFT.COM . 22 de septiembre de 2020. Consultado el 14 de junio de 2021 .
- ↑ Mayberry, Michael (2012), "Building a .NET App with WinRT" , WinRT Revealed , Berkeley, CA: Apress, pp. 29–46 , doi : 10.1007/978-1-4302-4585-8_3 , ISBN 978-1-4302-4584-1Consultado el 14 de junio de 2021.
- ↑ "microsoft/winrt-rs" . GitHub . 28 de septiembre de 2021.
- ↑ "microsoft/WindowsAppSDK: El SDK de aplicaciones de Windows potencia todas las aplicaciones de escritorio de Windows con una interfaz de usuario, API y características de plataforma modernas de Windows, incluida la compatibilidad con versiones anteriores, distribuidas a través de NuGet" . GitHub . Consultado el 12 de octubre de 2021 .
- ↑ "Diez consejos para escribir una aplicación híbrida estilo Metro - Build2011 - Channel 9" . Channel 9. Microsoft.
- ↑ "Referencia de la API de Windows Phone" . Referencia de la API de Windows Phone . Microsoft . 21 de julio de 2014.
- ↑ "API de tiempo de ejecución de Windows Phone" . microsoft.com . Microsoft. 21 de julio de 2014.
Enlaces externos
- Sitio web oficial
- Implementaciones de .NET Framework
- Software de 2012
- API de Windows
- Tecnología Windows
- Interfaces de programación de aplicaciones