2008-12-15 10 views
5

Pour résumer, comme nous le savons tous,Réflexions sur l'utilisation de Silverlight dans les applications de bureau?

a) Silverlight devrait être hébergé par un navigateur, et fonctionne dans un bac à sable isolé de sorte qu'il n'y aura pas de problèmes de sécurité

  1. Silverlight don « t ont un accès direct au système de fichiers, autre que la zone de stockage isolé
  2. Il n'y a pas de façon directe pour ouvrir dialogue communes boîtes comme Enregistrer le fichier dans Silverlight (Bien que la boîte openDialog est pris en charge).

b) Silverlight ne peut pas accéder aux ressources locales comme une imprimante

Quels sont les moyens d'aller au-delà du bac à sable, afin que je puisse héberger une application Silverlight localement, pour lire les fichiers et les enregistrer si nécessaire, de remettre les données à une imprimante, et ainsi de suite ..

mise à jour:

est pleine WPF est pas une option pour moi? Non. Je suis également intéressé par une solution multiplateforme - par exemple, vous pouvez héberger Silverlight dans le contrôle du navigateur Web Mono, de sorte que vous puissiez l'exécuter pratiquement n'importe où.

L'idée est de réutiliser la même application que je construis pour le web dans mon bureau et, en fournissant la séparation des préoccupations dans certains domaines - comme la persistance, l'accès aux ressources, etc. Scénarios:

1- Une sorte de conteneur de gadget, avec accès aux ressources locales. 2 - Une application multimédia basée lumière argentée de bureau

Mise à jour:

Je viens de faire un POC pour me permettre d'accéder à l'imprimante et enregistrer des fichiers localement, bien sûr à travers une coquille où je suis l'hébergement de mon Silverlight application. Si vous wan't vous pouvez jeter un oeil au poste here in my blog

Répondre

8

Deux façons que je peux penser est,

Créer un « Shell »

hôte la page HTML avec Silverlight, dans un Winforms application de bureau, en utilisant un contrôle de navigateur Web, et de communiquer de et en utilisant HTML DOM. Ensuite, je peux demander au shell hébergé de faire des choses comme l'impression. See details here

Mono a également un contrôle de navigateur Web - basé sur FireFox XULRunner au lieu de IE - n'a pas encore réussi à charger Silverlight à l'intérieur. Une autre option pourrait utiliser Webkit.

Desktop Shell

Intégrer un serveur web

Intégrer un serveur web léger avec l'application hôte, et des demandes poignée pour effectuer ces opérations. Vous pouvez probablement définir un protocole au-dessus de HTTP pour des choses comme l'enregistrement dans un dossier local, l'envoi de données à imprimer, etc.

Embedding A Server

+0

Serveur Web intégré? Pour une application client? Cela pourrait être un peu sur-ingénierie. – gn22

+0

Oui, quand vous n'avez pas un meilleur choix – amazedsaint

3

est une application WPF complète et non une option pour votre situation?

Comme vous le savez probablement, Silverlight utilise un sous-ensemble de WPF, ce qui vous permet de changer votre application relativement facilement.

Une application wpf serait plus facile que d'avoir un serveur web, etc inclus dans votre application.

Vous ne pourrez pas dans un avenir prévisible avoir accès à des ressources telles que l'imprimante et les fichiers (à l'exception du stockage isolé) via Silverlight comme vous le savez.

Vous pourriez avoir une partie séparée de votre application pour télécharger des fichiers sur le serveur Web, puis les lire dans votre application Silverlight à partir d'un service.

En fonction de vos besoins d'impression (par exemple, si vous voulez simplement tout envoyer à une imprimante de bureau), vous pouvez envoyer l'information que vous vouliez imprimer à un service qui l'imprimera pour vous. Cependant, je suppose que vous voulez que chaque machine cliente puisse imprimer, auquel cas cela ne fonctionnera pas pour vous.

+0

L'idée est de ne pas utiliser WPF - de sorte que je vais finir avec deux bases de code. Aussi, voir ma mise à jour, comme la façon dont j'accède à l'imprimante maintenant à partir de mon application Silverlight. :) – amazedsaint

1

J'essaye de réutiliser également une base de code pour le bureau et silverlight. Il y a deux options que je connais en plus de celles mentionnées

Si vous référencez directement (au lieu d'une référence de projet) une dll argentée à partir d'un projet normal, cela devrait fonctionner. Cela vous permettrait de référencer une DLL Silverlight pour les deux projets. Avoir deux fichiers de projet (un wpf, un silverlight) qui pointent vers le même ensemble de fichiers. Vous devrez peut-être utiliser quelques indicateurs de compilation ici et là, mais cela devrait vous permettre d'utiliser les mêmes fichiers pour les deux.

+0

Voir ma mise à jour ci-dessus pour savoir pourquoi ce n'est pas une bonne option pour moi. Je suis également intéressé par le fonctionnement de Mono. – amazedsaint

Questions connexes