2008-10-22 17 views

Répondre

5

Cela ne peut pas être fait avec Silverlight. Pourquoi ne pas simplement utiliser une application de bureau .NET standard? Si vous avez besoin de déployer facilement sur le Web, utilisez Click-Once pour le déploiement.

+0

parce que je voulais un scénario d'installation zéro. –

+0

Vous devriez vraiment regarder dans Click-Once. Il fait à peu près "zéro installer". Vous pouvez lancer l'application à partir du site Web en un seul clic. –

+7

Eh bien, pas vraiment un clic. Ils devraient l'appeler Click-Once-Or-Maybe-Two-Or-Three-Times. –

1

Par ordinateur local, voulez-vous dire l'ordinateur sur lequel s'exécute l'application client Silverlight? Silverlight s'exécute dans un sandbox de sécurité et il est douteux que vous puissiez vous connecter aux ressources matérielles comme cela.

4

Il n'y a pas d'accès aux ressources de l'ordinateur, mais vous pouvez communiquer avec les sockets. Il est donc possible que vos utilisateurs installent une application qui écoute sur un port et communique avec un port COM. Pourquoi essayez-vous de communiquer avec un port COM? Si vous êtes à la recherche d'un soutien de webcam, jetez un oeil à hack de Jonas qui utilise Flash pour recueillir les commentaires de webcam: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx

1

Jon,

Je suis en train de lire vraiment mon GPS de Silverlight. J'ai un concept intéressant que je voulais essayer, mais j'essayais d'obtenir une empreinte zéro installation.

2

Je pense que les gars l'ont bien résumé - Silverlight est dans un bac à sable étroit et vous n'aurez pas accès au port COM ou à d'autres ressources locales.

Alors commençons à réfléchir à des alternatives:

  • Utilisez ClickOnce et une application .NET complète - Vous donne le déploiement et udpates facile, et vous aurez la pleine puissance du framework .NET.
  • Utilisez un XBAP (Browser Deployed WPF) qui demande des autorisations supplémentaires. Vivre dans le navigateur, mais seulement sur les machines Windows avec .NET 3.0/3.5 installé
  • Ecrivez un contrôle ActiveX qui parle au périphérique GPS et expose une API. Utilisez ensuite JavaScript pour consommer cette API et interagir avec le code JavaScript de Silverlight. Cela vous donnerait une application GPS dans le navigateur, mais vos utilisateurs devraient installer un composant GPS ActiveX supplémentaire.

Cheers, Jonas

3

Vous pouvez le faire en ouvrant une prise connexion de votre contrôle Silverlight à une prise locale stagiaire ont l'accès au port COM

+1

Et vous pourriez construire le serveur de socket comme une application winforms ou console normale qui vous permettrait de l'exécuter à la fois sur windows et mac – TimothyP

3

Silverlight 4 vous permet de communciate avec COM (ActiveX). J'ai écrit un article de blog sur la façon de communiquer avec une bibliothèque COM qui prend en charge la communication avec le port série.

http://tech-michael.blogspot.com/2009/12/silverlight-talking-to-arduino.html

Notez que les ActiveXperts-objet mentionné est commercial. Et si vous voulez que votre application s'exécute sous Windows et Mac?

0

Silverlight est une bonne solution car elle fonctionne sur les deux. Si vous devez écrire une application WPF ou un contrôle ActiveX, etc., cela ne vous liera plus qu'à Windows.

0

Vous pouvez connecter Silverlight 5 à la Comm Port local ainsi que toute autre ressource locale, mais seulement avec l'application Silverlight s'exécute sous Windows (pas Mac) et lors de l'exécution soit OOB (hors du navigateur) ou dans le navigateur dans Internet Explorer.

La façon dont cela est effectué consiste à créer un composant d'automatisation COM classique et à exécuter l'application avec une confiance totale. Il existe une clé de registre que vous pouvez définir pour permettre aux applications Silverlight 5 de fonctionner avec une confiance totale dans le navigateur, mais l'application doit être signée et la clé publique importée sur les éditeurs de confiance sur la machine locale. Une fois terminé, Silverlight prend en charge AutomactionFactory, vous permettant d'accéder aux objets d'automatisation com enregistrés localement. Nous utilisons cette fonctionnalité de manière extensive; c'est très puissant. Dans ce cas, nous avons créé un composant COM qui donne accès à l'objet SerialPort et lui avons donné une méthode pour retourner une liste de tous les ports disponibles.

If AutomationFactory.IsAvailable Then 
     SilPort = AutomationFactory.CreateObject("SilverPort.Ports") 
     Dim AllPorts() As String 
     AllPorts = SilPort.GetPortNames() 
     ... 
End If