2012-04-26 21 views
5

Dado que WinRT tiene capacidades únicas, me pregunto si se debe hacer un servicio de Windows que esté dirigido a WinRT. Si no fuera posible, ¿la solución es hacer posible una aplicación WinRT/Metro invisible?¿Es posible hacer un servicio WinRT?

Muchas gracias.

+1

Lo dudo mucho.¿Qué quieres hacer? – SLaks

+0

Quiero usar varias capacidades que el estándar .NET no proporciona, y no quiero llamar a API nativas de C++ que es demasiado compleja. – user1343145

+2

@ user1343145 Si .NET no es suficiente para solucionar su problema, y ​​no desea utilizar el código nativo, ¿qué ** quiere ** usar? –

Respuesta

1

No, esto no es posible (se marchita el servicio, o la aplicación de metro "invisible").

Puede ejecutar tareas en segundo plano que pueden hacer lo que está buscando, pero sin entender su problema no podría decir.

5

No es la respuesta correcta. Una aplicación de metro se ejecuta dentro del shell de Metro y dentro de un contenedor de ejecución que crea un entorno aislado lejos de los recursos del sistema, incluidos los servicios. Por esta razón, una aplicación de metro no puede acceder a un servicio local. Del mismo modo, por esta razón, una aplicación de metro no puede ser un servicio.

Las tareas en segundo plano y las notificaciones push a través de Windows Notification Services son la única forma en que una aplicación de metro puede interactuar con el usuario mientras no esté activa. De lo contrario, cuando la aplicación no está activa (no visible), todos sus hilos están suspendidos (a diferencia de un servicio).

En cuanto a las tareas en segundo plano, su actividad se limita de manera idéntica a una aplicación de metro y se limita a un solo segundo de CPU cada 2 horas (hay una excepción). Las notificaciones push se pueden ejecutar con mayor frecuencia, pero solo son capaces de actualizar un mosaico o generar una notificación de brindis.

La intención de una aplicación de Metro es diferente de una aplicación de escritorio tradicional:

aplicaciones Metro son independientes de la arquitectura (correr en Intel o el brazo). Las aplicaciones de Metro son de alcance táctil, diseñadas para pantallas táctiles. Las aplicaciones de Metro están completamente aceleradas por hardware. Las aplicaciones de Metro aprovechan el hardware de próxima generación que ofrecen los dispositivos certificados, incluida la duración de la batería sin precedentes. Las aplicaciones de Metro son las únicas aplicaciones entregadas por la tienda de Windows.

Mira, elegir una aplicación de metro significa ceder parte de la potencia ilimitada de las aplicaciones de escritorio. Sin embargo, las ganancias también son significativas.

+0

WinRT! = Metro. – laktak

0

Depende de lo que quieras hacer.

WinRT es una API y se puede acceder desde aplicaciones de Metro (Windows Store) y desde aplicaciones de escritorio/C#.

Sin embargo, no está expuesto a la API completa - ver lo que se le permita acceder aquí: http://msdn.microsoft.com/en-us/library/windows/desktop/hh920511%28v=vs.85%29.aspx

Hanselman muestra cómo agregar un árbitro WinRT:

  • Editar la csproj:
<PropertyGroup> 
    <TargetPlatformVersion>8.0</TargetPlatformVersion> 
</PropertyGroup> 
  • A continuación, agregue una referencia a Core/Windows.

http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx

Cuestiones relacionadas