.net + Silverlight + lokaler WebServer

Liebe/-r Experte/-in,

ich möchte eine Silverlight-Anwendung schreiben,
die bestimmte serverseitige Funktionalitäten (öffnen/speichern auf der lokalen Platte, andere .exe-Anwendungen starten)
auf dem Rechner ausführen können soll.

Die Silverlight-App würde im Browser mit Doppelklick auf die xap-Datei vom Benutzer lokal gestartet.

Ich würde die serverseitige Funktionen gerne in einem kleinen in .NET geschriebenen Webserver implementieren,
der von der Silverlight-Anwendung über http-Requests ausgeführt werden kann.

Gibt es eine Möglichkeit, einen kleinen Webserver in .NET zu schreiben, um Requests von Silverlight-Clients entgegennehmen und Response schreiben zu können?
(Die Analogie wäre in der JAVA-Welt der Jetty Webserver, der OHNE INSTALLATION verwendet werden kann,
um serverseitige Funktionen (z.B. Dateizugriff) zu implementieren.)

Für einen Hinweis wäre ich dankbar:
Ilona
[email protected]

Hi,

sorry mit Silverlight habe ich bis dato keine Erfahrung gemacht, versuche aber auf jeden Fall dir etwas konstruktives zu schreiben:

einen eigenen Webserver zu schreiben ginge natürlich auch, ich weiß aber nicht ob das der einfachste Weg ist, und außerdem gibt es bereits den IIS. Was du vielleicht meinst ist einen eigenen Webservice zu schreiben, der Webmethoden veröffentlichen würde, welche dein Silverlight-Client aufrufen könnte. Dafür gibt es in Visual Studio Vorlage (Projektmappentyp Webservice / Webdienst), welche dir ein Hello-World-Webservice erzeugt, den du dan weiter ausbauen kannst. Für deine Clientanwendung kan Visual Studio eine Proxy (Webverweis) generieren, über welche sie dann mit dem Webservice kommunizieren kann.

Gruß
Erich

Tut mir leid, mit Silverlight u.ä. habe ich noch nicht zu tun gehabt.

Das hier klingt ganz interessant, vielleicht hilft es Dir weiter:
http://forums.netduino.com/index.php?/topic/413-simp…

Viel Erfolg,
Michael

Hmm, hab’s nochmal genauer angeguckt, hilft Dir wahrscheinlich doch nicht weiter…

Vielleicht hift das weiter:

http://www.codeguru.com/csharp/.net/net_general/arti…

http://www.paulgriffiths.net/program/c/webserv.php

Hallo!

Sorry, zu Deiner Frage kann ich leider keinen fundierten Input geben.

Gruß,
Martin

Vielen Dank für den Hinweis!

Leider kann ich auf dem Zielrechner keinen IIS voraussetzen. Deshalb reicht mir ein Webservice nicht.

Oder gibt es eine Version von IIS, die ohne Installation mitgebracht und gestartet werden kann?

Gruss
Ilona

Vielen Dank für den Hinweis!

Er instanziert ein (selbst implementiertes) „WebServer“ Objekt!
Es wäre doch ein Versuch Wert…
Man müsste den „WebServer“ evtl. erweitern, um Binaries auch übertragen zu können, aber als Grundlage wäre die auf Sockets basierende Klasse nutzbar.

Gruss
Ilona

Vielen Dank für den Hinweis!

hinter den von Dir erwähnten Links werden mit viel Code Webserver geschrieben.
Ich habe gehofft, dass .NET/WPF (oder WCF) mehr Unterstützung für solche Aufgaben bietet, aber jetzt vermute ich, dass der Grossteil der Arbeit von mir programmiert werden muss…

Gruss
Ilona

ich würde in dem fall nicht versuchen das rad neu zu erfinden, sondern auf bestehende lösungen zugreifen.

z.b.
XSP - teil des mono projekts - http://www.mono-project.com/ASP.NET
oder DWebPro - http://www.freshfreestuff.net/free/dwebpro-free-stan…

gruss,
daniel

Hi,

IIS ist so weit ich weiß Bestandteil von meisten Windows-Varianten außer Home-Editionen. Ich weiß leider nicht viel über dein Projekt und kann daher nicht gut beurteilen, was für Lösungsansatz am günstigsten wäre, finde aber auf jeden Fall, dass Schreiben eines eigenen Webservers vergleichsweise aufwändig wäre, selbst wenn er nur minimale Funktionalität bereitstellen würde. Was genau musst du eigentlich umsetzen?

ich möchte eine Web-Anwendung entwickeln, die auf dem lokalen Rechner läuft (ohne externem Server).

Die Web-Anwendung sollte aber ihre Bilder aus einer ZIP-Datei bekommen, und Dateien auf die lokale Platte speichern können. Ausserdem möchte ich andere .EXE-Dateien starten können.

Im Web wäre es einfach: die Bilder würde ich als Response auf ein Request aus der ZIP-Datei lesen.

Wahrscheinlich würde ich auch lokal einen Webserver benötigen, um auf die ZIP-Datei zugreifen zu können.

Oder ich könnte WCF verwenden.
Leider kann ich aber WCF nicht beurteilen, da noch nie genutzt.

Hast Du bereits Erfahrungen mit WCF?

Gruss
Ilona

Ich habe leider keine Erfahrung mit WCF. Als einfachste Lösung kommt mir vor, auf dem Zielrechner den IIS zu installieren (wie erwähnt, ist es Bestandteil z. B. von Win XP Pro usw.) Auf dem IIS dann ein Webservice aufsetzen, welche die Dateien ausliest und abspeichert.

Oder: wenn alles auf einer Kiste läuft, brauchst du eigentlich den ganzen Netzwerkkram gar nicht - warum schreibst du eigentlich nicht eine normale Windows-Anwendung?

Hi Ilona!

Sorry für die späte Antwort, ich war im Urlaub und schaue gerade meine neuen Mails durch.

Leider kann ich dir bei deinem Problem nicht wirklich weiter helfen, da ich in diesem Bereich selber kaum Erfahrung habe. Ich hoffe, dass dir jemand anderes hier schon weiter helfen konnte.

Viele Grüße,
René

Hallo,

Vielen Dank für die Tips!

  1. IIS is leider kein gangbarer Weg, da die
    meisten User mit deren Installation / Konfiguration nicht auskennen (und meist nicht die Rechte haben). Der Installationsaufwand wäre zu groß
    (ich möchte ganz ohne Installation auskommen).

  2. ich möchte die Anwendung auch im Netzt bereitstellen, dann aber ohne Funktionen, die lokalen Zugriff benötigen würden.
    Aber trotzdem ist die Idee gut:
    ich könnte eine WPF-App bereitstellen, deren Silverlight-Variante (der selbe Code mit ein paar #ifdef’s) im Netz stehen würde.

Ist es möglich, ein VS2010 WPF Projekt ohne größeren Aufwand in Silverlight umzuwandeln?

Gruss
Ilona

Leider habe ich keine Erfahrung mit Silverlight. Auf jeden Fall, selbst wenn man den Frontend unter Silverlight neu schreiben müsste, müsste möglich sein, gemeinsam genutzte Funktionalitäten in eine Assembly auszulagern, welche dann beide Frontendtypen nutzen würden.

Gruß
Erich

Hallo Ilona,

leider kann ich dir bei der Frage nicht helfen.

LG
Manfred