dedlfix: Mono - geeignet für command line application zu Browser?

Beitrag lesen

Tach!

Zunächst hätte ich gerne versucht, ein Programm zu schreiben (unter Linux, "Mono" benutzend), welches unter Windows eine Datei auf einem Netzlaufwerk einliest,

Ein Netzwerklaufwerk ist nichts besonderes aus .NET-Programmsicht. Es verhält sich diesbezüglich wie andere Laufwerke auch. Unter Linux sind die Gegebenheiten (sprich: Pfadnamen) anders, und da müsste es irgendwie mit Samba gemountet werden.

danach eine Website abfragt (mit einem speziellen User-Agent), dabei einen verschlüsselten String als POST-Wert mitsendet (z.B. data=U2FsdGVkX18zkYAKTQs... - Inhalte aus der eingelesenen Netzlaufwerk-Datei), das Ganze natürlich durch einen HTTP-Proxy hindurch (bitte nicht gleich wieder den Kopf schütteln!),

Das ist alles problemlos mit .NET möglich. Dafür gibt es entsprechende Klassen.

Ich nehme mal nicht an, dass diese beiden Punkte nicht auch mit Mono realisierbar sind. Das ist jedenfalls schon lang genug in .NET enthalten, so dass Mono genügend Zeit zum Nachbauen hatte. Mit Mono hab ich allerdings keine Erfahrung.

um letzten Endes die Antwort direkt in den Browser "einzupflanzen", damit dieser das erhaltene Dokument anzeigen (man kann mit JavaScript vor dem Ausdrucken noch diverse Checkboxen verändern) und dann ausdrucken kann.

Es sollte auch mit Mono kein Problem sein, eine Desktop- oder CLI-Anwendung zu schreiben, die einen simplen Webserver mitbringt, zu dem sich dann dein Browser verbindet.

Das Programm hat sich natürlich längst nach Erhalt der Webserverantwort verabschiedet, oder wartet höchstens noch, bis das Browser-Fenster geschlossen wird.

Allerdings hat auch ein selbst geschriebener Webserver keine Ahnung, was im Browser passiert. Die sieht nur Requests und kann Responses senden. Wenn sich deine Anwendung beenden soll, kann sie das nur nach Abarbeitung des Requests, oder sie reagiert auf einen speziellen Request. Starten musst du sie aber immer per Hand oder einen anderen Mechanismus, wenn sie nicht ständig laufen soll.

Ständig laufen ist vermutlich nicht systemübergreifend möglich (oder jemand hat eine vereinheitlichende API geschrieben). Unter Windows wäre ein Dienst und unter Linux ein Dämon nötig, und die sind doch recht unterschiedlich ins jeweilige System eingebunden.

Wer hat genügend Erfahrung, um sicher sagen zu können, ob das mit Mono überhaupt machbar ist (die Zielplattform ist noch immer Windows XP, das Ganze soll aber auch unter einem neueren Windoof ebenso lauffähig sein), ob ich das unter Linux auch so entwickeln kann, dass es unter Windows tut (am liebsten nativ, ohne Mono unter Windows installieren zu müssen),

Hmm, ich kann dir noch nicht mal sagen, inwieweit die neueren .NET-Framework-Versionen rückwärtskompatibel zu hornalten Windows-Versionen sind. Andererseits brauchst du für dein Vorhaben keine Fähigkeiten, die über 2.x hinausgehen, und das sollte in XP laufen.

und - besonders wichtig - in was ich mich alles einlesen muss?

Zumindest weiß ich, dass es ein Openbook von Galileo zuu C# gibt. Und die MSDN-Library ist DIE Anlaufstelle für (u.a.) .NET-Programmierung. Mono hat sicherlich auch eine Dokumentation, wo zumindest Implementierungsstand und Abweichungen beschrieben sein sollten.

Sollte im Firefox der AJAX-Call auf die Netzlaufwerksdatei ebenso erfolgreich möglich sein,

Ajax-Calls sind Web-Requests, keine Dateizugriffe.

dedlfix.