2009-05-19 6 views
4

Ich suche ein Framework, das mir erlaubt, meine Anwendung über eine webbasierte GUI (mit einem eingebetteten Webserver) anstelle von Winforms zu verwalten.Embedded Webserver und GUI-Framework für .NET-Anwendungen

Etwas wie folgt aus: http://www.webtoolkit.eu/wt aber dann für .NET

In meinem Code sollte ich in der Lage sein, Klassen zu instanziiert (wie Knöpfe, Formulare usw.), und wenn ein Benutzer auf einen bestimmten Port surft, sollte die App machen es als Javascript/Ajax etc etc. vorzugsweise, wenn Tasten gedrückt werden, sollte eine Benachrichtigung in meinem Code aufgerufen werden.

Dies ist eine weniger spezifische Frage als eine andere, die ich über extjs gepostet habe. Ich hoffe, dass dies mehr Zuschauer anziehen wird, da es generischer ist

Danke.


Update:

cassini wie Lösungen passen nicht die Rechnung. Da der Webbrowser in meine Anwendung eingebettet ist, sind keine ASP.NET-serverseitigen Skripts erforderlich. Ich hätte lieber das Framework, Funktionen in meiner Anwendung aufrufen, wenn Dinge auf der Seite passieren. onButtonClicked() zum Beispiel.

Antwort

2

Wie wäre es, Cassinni einzubetten und ASP.NET zu verwenden?

+0

Hallo Marc, Cassini ist ein Mini-Standalone-Webserver. Ich denke, es wird nicht einfach sein, dies mit meiner Bewerbung kommunizieren zu lassen. (Abgesehen von der Änderung von Daten über eine gemeinsame Datenbank). Außerdem mag ich nicht die Idee, irgendwo einen Ordner voll von ASP-Dateien zu haben, den der Benutzer vermasseln könnte (oder in ihn hineinhackt). – Toad

+1

Hauptsächlich zeigt es * wie * ASP.NET zu hosten, was Sie selbst tun können. –

+0

Hallo, ich glaube ich habe das Produkt (und deine Antwort) falsch verstanden. Das sieht wirklich sehr interessant aus. – Toad

-4

Ich würde vorschlagen, die Linux-Route statt und verlassen sich auf etwas wie eine eingebettete httpd, boa oder ähnlich, um die Größe zu halten. Das Ausführen von Windows wird auf eingebetteten Systemen, zu viel Bloat und zu vielen Sicherheitslöchern nicht empfohlen. Besser mit Linux oder einem RTOS gehen.

+1

Ich denke nicht, er ist ein Fenster auf einem Embedded-Gerät verwendet ... will nur ein websever in seine App integriert. – Pondidum

3

Sie könnten den System.Net.HttpListener class als eingebetteten Webserver verwenden. Der HttpListener wird das Low-Level-Zeug für Sie tun, aber Sie müssen den Code schreiben, der die Html/javascript/images selbst zurückgibt.

Ich habe es nur aus Spaß ausprobiert, embedding Firefox mit gegen einen Webserver in der Anwendung selbst eingebettet. Es schien gut zu funktionieren, aber mein Test war sehr einfach und begrenzt.

+0

Hallo Rune, ich habe mit dieser Option gespielt. Ich mag es, dass httplistener gibt eine sehr einfache Möglichkeit, eingehende HTTP-Anfragen zu behandeln. Irgendwie ist die Konvertierung einer Anwendungs-GUI zur Ausgabe in ihrem javascript/html-Pendant und die Bearbeitung der Ajax-Anfragen eine ziemliche Herausforderung. Ich hatte gehofft, dass jemand schon etwas Ähnliches gemacht hat. ; ^) Schönes Projekt, um zu arbeiten, obwohl. Ich stimme zu. – Toad

+0

Oh ja!Es zum Laufen zu bringen ist eine Sache, aber eine komplette Anwendung daraus zu machen, wird eine große Aufgabe sein. Wenn Sie es jemals richtig funktionieren lassen, sollten Sie darüber bloggen oder den Code irgendwo posten. Es wäre interessant zu sehen, wie es funktioniert. :-) –

+0

Dude, +100 für den gelegentlichen Wurf der GeckoFx-Verbindung. Das Ding sieht aus wie The Bomb! Vielen Dank! –

0

Wenn Sie automatisch laufenden WinForms-Code in HTML konvertieren möchten, sind Sie bereits im tiefen Wasser. Ich habe etwas Ähnliches mit Visual WebGui getan, aber es erfordert die Änderung Ihres Codes und wird im Grunde eine ASP.NET-Anwendung für Sie generieren - benötigen einen tatsächlichen Webserver, um es auszuführen.

Ich sehe Sie nicht die Cassini-Option - wenn Sie auch erwarten, dass dies funktioniert ohne ein Webserver, dann denke ich, die schnelle Antwort ist "auf keinen Fall".

Wenn Sie eine relativ einfache Schnittstelle haben, ist es wahrscheinlich am besten, den HTML-Code dynamisch zu generieren, entweder von Ihren bestehenden Formularen oder von Grund auf, und mit System.Net.HttpListener.

+0

Dies ist, was Webtoolkit tut (Rendering der HTML/Javascript dynamisch), obwohl nicht für. NET. Ich hatte gehofft, dass etwas Vorgebackenes irgendwo für .Net verfügbar ist. Daher meine Frage – Toad

0

Ich habe vor langer Zeit ein .NET 2.0-Projekt, das im Grunde eine Webbrowser Kontrolle hatte.
Ich würde das WebBrowser-Steuerelement mit HTML über seine Dokumenteigenschaften füttern und würde das Navigationsereignis abhören, um den HTML-Code aus meiner Ressource zu holen (oder sofort zu erstellen) und ihn erneut dem WebBrowser-Steuerelement zuzuführen.

Jetzt beginnt der Spaß mit der ObjectForScripting Eigenschaft. Dadurch kann Ihre HTML-Seite mit einem kommunizieren.NET-Objekt durch Javascript wie: .
Vergessen Sie nicht, das Attribut ComVisible zu der Klasse hinzuzufügen, die in ObjectForScripting verwendet wird.

Ich hoffe, das ist, was Sie suchen. In dieser Lösung haben Sie eine Webseite, die navigieren kann, und auch über Javascript können Sie mit Ihrer App sprechen. (So ​​können Sie einer .NET-Version von AIR nahe kommen ...)

+0

Hallo Gidon, Dies würde bedeuten, dass das Webcontrol in die Anwendung eingebettet ist. Der Grund, warum ich eine HTML-Schnittstelle möchte ist, dass meine App von einem Remote-Standort aus gesteuert werden kann. – Toad

1

Wenn Sie ASP.NET (mit Entwicklungsserver oder Cassini) verwenden könnten, wäre Ihre Aufgabe einfacher. Ich empfehle diesen Ansatz dringend. In diesem Fall können Sie LiveUui, ComponentArt oder Teleric verwenden. Liveui stellt Extjs-basiertes Framework zur Verfügung, um 3-stufige Web-Anwendungen zu implementieren. componentart und teleric bieten nette ASP.net-Steuerelemente.

Während Webui wahrscheinlich als httpHandler ohne ASP.net-Infrastruktur arbeiten kann. Aber ich würde nicht empfehlen, Webui zu verwenden, weil 1 mögliche Leistungsprobleme 2 komplexes und nicht flexibles Programmiermodell sind.

2

Sie können die ASP.NET-Laufzeit in Ihrer eigenen Anwendung hosten und ein beliebiges Web-UI-Framework wie LiveUI oder etwas Ähnliches verwenden. Sehen Sie, wie Sie dies tun here.

+0

Hallo Alex, asp.net in meiner Anwendung scheint wie Overkill, da meine Anwendung bereits in C# gemacht wird. Statt ASPX-Seiten zu bedienen, würde ich lieber die eingebetteten Browser-Methoden direkt in meiner App verwenden. Darüber hinaus muss ich vorzugsweise nichts über html/css/JavaScript wissen. Instantiiere einfach einige Buttons, Labels, etc. in meiner Anwendung und generiert auf magische Weise das entsprechende html/javascript und liefert in Application Callbacks via Ajax. das Ergebnis: eine Remote-GUI für Ihre Anwendung. Wäre sogar süßer, wenn es irgendwie Ihre vorhandenen Winform GUI interpretieren könnte. – Toad

+0

Es gibt viele Frameworks, die Ihnen erlauben, nichts über HTML, JS und CSS zu wissen, und Rich-Web-UI zu erstellen (sieht so aus http://wiki.liveui.net/index.php?title=Editor_and_Form_concept). Das Problem besteht darin, dass alle für die Zusammenarbeit mit ASP.NET entwickelt wurden. Da ASP nur ein Teil von .NET Framework ist, besteht die Möglichkeit, dass Sie es in Ihrer Anwendung verwenden können. –

1

Sind Sie beschränkt auf welchen Rahmen Ihre Anwendung unterstützen kann? Wenn Sie .NET 3.0+ verwenden können, kann The Windows Presentation Foundation verwendet werden, um sowohl Web- (über Xbapp oder Silverlight) als auch traditionelle Windows-Formularanwendungen anzusprechen.

Soweit Kommunikation zwischen Apps geht, ist dies der Punkt, wo die Windows Communication Foundation (WCF) wirklich glänzt.

Nur um zu klären, könnten Sie Ihre Web-App und verwenden Sie die WCF verwenden Casini Host zwischen ihm und der Anwendung, oder verwenden Sie XAML-Markup Ihrer Anwendung und setzen Sie es sowohl als Web-Anwendung und eine normale Windows-Anwendung mit der Kommunikation gleiche Benutzeroberfläche.