2008-12-15 15 views
5

En resumen, como todos sabemos,¿Piensa en utilizar Silverlight In Desktop Apps?

a) Se espera Silverlight para ser acogidos por un navegador, y se ejecuta en una caja de arena aislado, así que no habrá ningún tipo de seguridad emite

  1. Silverlight Don 't tiene acceso directo al sistema de archivos, aparte de la zona de almacenamiento aislado
  2. no hay manera directa para abrir comunes de diálogo cajas como Guardar archivo en Silverlight (cuadro OpenDialog Aunque es compatible).

b) Silverlight no puede acceder a los recursos locales como una impresora

¿Cuáles son las maneras de ir más allá de la caja de arena, de modo que pueda albergar una aplicación de Silverlight a nivel local, para leer archivos y guardarlos de nuevo si es necesario, para entregar datos a una impresora, y así sucesivamente ..

actualización:

está llena de WPF no es una opción para mí? No. También estoy interesado en una solución multiplataforma; por ejemplo, puede alojar Silverlight en el control del navegador Mono Web, para que pueda ejecutarlo prácticamente en cualquier lugar.

La idea es volver a utilizar la misma aplicación que estoy construyendo para la web en mi escritorio, así, al proporcionar separación de las preocupaciones en algunas áreas - como la persistencia, el acceso de recursos, etc. Escenarios:

1- Algún tipo de contenedor de gadget, con acceso a recursos locales. 2 - Una aplicación multimedia basada en la luz de plata escritorio

Actualización:

que acabo de hacer un POC que me permita acceder a la impresora y guardar archivos localmente, por supuesto, a través de una concha en que celebro mi Silverlight solicitud. Si wa no se puede echar un vistazo en el puesto here in my blog

Respuesta

8

dos maneras en que puedo pensar es,

Crear un "Shell"

alojar la página HTML con Silverlight, en una Aplicación de escritorio Winforms, utilizando un control de navegador web, y se comunica de aquí para allá usando HTML DOM. Entonces puedo solicitar que el shell alojado haga cosas como imprimir. See details here

Mono también tiene un control de navegador web - basado en FireFox XULRunner en lugar de IE - todavía no se ha podido cargar Silverlight dentro de eso. Otra opción podría ser usar Webkit.

Desktop Shell

Insertar servidor

Insertar un servidor de una red ligera de peso web con la aplicación host y manejar las solicitudes para llevar a cabo este tipo de operaciones. Probablemente pueda definir un protocolo sobre HTTP para cosas como guardar en una carpeta local, enviar datos para imprimir, etc.

Embedding A Server

+0

¿Servidor web incorporado? Para una aplicación de cliente? Esto podría ser un poco sobredimensionado. – gn22

+0

Sí, cuando no tienes una mejor opción – amazedsaint

3

no es una aplicación de WPF completa una opción para su situación?

Como probablemente sepa, Silverlight usa un subconjunto de WPF por lo que es posible que pueda cambiar su aplicación de manera relativamente fácil.

Una aplicación wpf sería más fácil que tener un servidor web incluido en su aplicación.

En el futuro no podrá tener acceso a recursos como la impresora y los archivos (aparte del almacenamiento aislado) a través de Silverlight como usted sabe.

Puede tener una parte separada de su aplicación para cargar archivos en el servidor web y luego leerlos en su aplicación silverlight desde un servicio.

Dependiendo de sus requisitos de impresión (por ejemplo, si solo desea enviar todo a una impresora de oficina) puede enviar la información que desea imprimir a un servicio que luego la imprimirá. Sin embargo, supongo que quiere que cada máquina cliente pueda imprimir, en cuyo caso esto no funcionará para usted.

+0

La idea es NO usar WPF, de modo que terminaré con dos bases de código. Además, vea mi actualización, por ejemplo, cómo estoy accediendo a la impresora ahora desde mi aplicación Silverlight. :) – amazedsaint

1

Estoy intentando también reutilizar una base de código para desktop y silverlight. Hay dos opciones que conozco además de las mencionadas

Si hace referencia directamente (en lugar de una referencia de proyecto) a un dll silverlight de un proyecto normal, debería funcionar. Esto le permitiría hacer referencia a un dll silverlight para ambos proyectos.

Tienen dos archivos de proyecto (uno wpf, uno plateado) que apuntan al mismo conjunto de archivos. Puede que tenga que usar algunos indicadores de compilación aquí y allá, pero esto debería permitirle usar los mismos archivos para ambos.

+0

Consulte mi actualización anterior para saber por qué esta no es una buena opción para mí. También estoy interesado en ejecutar esto en Mono. – amazedsaint