![]() |
Portabilität zwischen Linux und Windows?
Hi Leute,
ich hab vor @school ne BELL (Besondere Lernleistung) zu machen. Dafür will ich ein Programm schreiben, dass als Server im Netzwerk fungiert und welches über eine Weboberfläche Statusinformationen über den Rechner gibt. Dieses "Grundsystem" soll dabei auch über Plugins erweiterbar sein. An sich in der Theorie soweit kein Problem... jedenfalls nicht unter Windows. Allerdings müsste ich nun im Idealfall die Anwendung für Linux schreiben (hab meine Gründe, lässt sich auch nich ändern). Da ich das Zeug dann aber auch in meinem LAN einsetzen will (das is der eigentliche Grund, wofür ichs code) sollte es trotzdem möglich sein, das Ganze mit relativ geringem Aufwand nach Windows zu portieren. Jetzt also meine Frage: ist das Ganze Unterfangen überhaupt möglich und wenn: was sollte man dabei beachten? Welche Delphi-/Kylix-Versionen sind dafür am Besten geeignet (wegen Kompatibilität zw. den beiden)? Nun noch ein paar Informationen bzw. einen Grundriss von dem geplanten Programm: Es soll wie gesagt als Dienst auf dem jeweiligen Rechner laufen und einen HTTP-Server bereitstellen. Dabei soll das Programm erstmal nur den Server und die PlugIn-Schnittstelle bereitstellen. Die PlugIns könnten dann im Idealfall mit jeder beliebigen Programmiersprache geschrieben werden und müssen demzufolge nicht plattformunabhängig sein, so wie der Server. Das bedeutet im Endeffekt das lediglich das Grundgerüst des Dienstes/Deamon mit dem (Indy?)HTTP-Server und dem PlugIn-System plattformunabhängig gecodet werden müssen. Dabei wäre ich auch bereit den Weg über einen Wrapper zu gehen: Ich code eine (plattformabhängige) Anwendung, welche sich als Dienst/Deamon einträgt und dann das eigentliche System aus einer anderen (plattformunabängige) Anwendung nachlädt. Ich hoffe, ihr versteht, was ich meine. Falls es noch Unklarheiten wegen des Ziels oder dem Aufbau geben sollte, fragt einfach. so far... mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Niemand hier, der Ahnung davon hat oder wenigstens irgendwelche Vermutungen oder Tipps dazu geben kann? Bräuchte das Ganze nämlich bald. Hoffe, es findet sich noch jemand :D
mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Naja, wenn das ganze auf Windows und Linux laufen soll wäre wohl ein Delphi.net nicht so verkehrt. Dann sollte einfach noch die SDK vorhanden sein und das Programm läuft Plattformunabhängig (wenigstens Theoretisch, keine Ahnung wie weit die Entwicklung ist...)
Weiter kan ich dir leider nicht helfen |
Re: Portabilität zwischen Linux und Windows?
Hmm... stimmt... man könnte das per .NET machen. Afaik gibts das aber nicht nativ für Linux, oder täusch ich mich? Aber ich kann ja auf das
![]() /me muss jetzt aber erst mal zu Mathe ;) mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
16240 Benutzer und keiner hat ne Idee? :gruebel: Kommt schon. Ich vertrau auf euch!!!
|
Re: Portabilität zwischen Linux und Windows?
Genau, .NET ist dafür nicht verkehrt
Eine andere Möglichkeit wäre, das Windows-Programm auf Linux mit WINE zu emulieren - ist zwar keine besonders schöne Lösung, funktioniert aber. Oder du schreibst es für Windows und emulierst es dort. Eine andere Idee wäre Java - Aber das ist dann ja nicht mehr Delphi/Kylix. Außerdem, wenn du .NET hast. Oder du realisierst das ganze "online" mit PHP und AJAX - Browser gibt's auf jedem OS. |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Die Gegenversion zu Kylix3 ist mehr oder weniger Delphi 6.5, mit Delphi 6 oder Delphi 7 solltest du also Glück haben (ist ja gut, ich geh' gleich in die Ecke und schäme mich dafür, "Kylix" und "Glück" im gleichen Satz verwendet zu haben). Zur Plattformunabhängigkeit deiner Plugins: Wenn du die Plugins nicht komplett selbst interpretieren willst, müssen diese ebenfalls portabel sein. Klassisch implementiert man Plugins unter Windows mit DLLs, unter Linux wäre das Äquivalent dazu ein SO, komplett anderes Dateiformat. Außerdem dürfen die Plugins nicht auf Funktionen des Betriebssystems zurückgreifen, bzw auf eine RTL, die nur auf einem System zur Verfügung steht. Im Falle von C(++) wären sie strikt auf die stdlib (STL) beschränkt. Die Indies gibt es soweit ich weiß auch für Kylix, du könntest also für den Daemon mit der gleichen Codebase für Linux und Windows arbeiten, wenn du dich geschickt anstellst (Tipp: Daemons haben i.d.R. keine GUI ;-)). Mit irgendwelchen Servern und Plugins schreit das ganze für mich allerdings für ein transparentes System, ergo .NET oder Java, wenn's denn sein muss. Wirklich gescheite native Lösungen fallen mir für sowas fast gar nicht ein. |
Re: Portabilität zwischen Linux und Windows?
Hi,
hast du schonmal daran gedacht das ganze mit PHP zu realisieren? |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Das Problem, was ich mit .NET hab ist halt, dass ich a) damit noch nich gearbeitet habe, b) nich weiß, inwieweit man W32-Kompos in .NET verwenden kann oder obs die Indys auch für dN gibt und c) keine Ahnung habe, inwieweit dann Mono das compilat fehlerfrei und vor allem auch als Deamon ausführen kann. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Und wegen der Lösung durch PHP: Der Server ja als Dienst/Deamon auf jedem Rechner im LAN eingesetzt werden und dann durch Weboberfläche und entsprechende Plugins die Funktionen/Informationen bereitstellen. Soll heißen: PHP und/oder Ajax fallen als Lösung raus. Danke schon mal für die Antworten :D mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Wie, Scriptsprachen fallen heraus? :shock:
Na dann natürlich C++. :mrgreen: |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
Wie soll ich sagen, PHP wäre in diesem Fall fehl am Platze, wenn der Daemon tatsächlich *ständig* laufen muss. |
Re: Portabilität zwischen Linux und Windows?
:gruebel: Und wozu gibt es Server?
Ich verstehe euer problem nicht, aber gut ihr werdet eure Gründe haben. :P |
Re: Portabilität zwischen Linux und Windows?
hab schonmal so ein ähnliches projekt gemacht
kylix 3 und delphi 6 fertig war das netzwerk gedöns für linux als server-daemon und die windows gui sachen mit D6 alles kompatibel. |
Re: Portabilität zwischen Linux und Windows?
Wenn du nur einen Satz binaries haben willst, wäre .Net/Mono ideal.
Dank remoting und serialisierung sind sie generell für solche Sachen IMHO besser geeeignet. Mono ist für .Net 1.1 als komplett anzusehen. Alles was du mit 1.1 auf Windows laufen lässt, sollte mit dem aktuellen Mono 1.X auch auf Linux, BSD und Mac laufen. Problem ist hier die komische Art und Weise iin der der Delphi.Net compiler deine binaries mit Delphis RTL vermischt. Die D.Net RTL verhindert, dass es unter Mono läuft. jbg hat ein paar mal erwähnt, dass man sie selbst anpassen kann um kompatibel zu sein. Vllt erklärt er ja welche Änderungen nötig wären. ;) Jeder andere mainstream .Net compiler erzeugt IL Code, der problemlos unter Mono läuft. |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Also gut. Der laufende Daemon ist also der Apacheserver (oder ähnlich) und er ruft das Script eben dann auf, wenn es angefordert wird. Das passt nicht nur, nachdem, was ich lese, wäre php gerade zu perfekt dafür. Das ganze Zeug mit dem dll und so kannst du dir auch sparen und stattdessen nurnoch einmal include benutzen. Portierbarkeit ist wirklich perfekt und schnell&einfach zu coden ist es auch. Besser geht's doch garnicht... |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Zitat:
Ich dachte, der Dienst sollte ständig laufen (nähere Informationen dazu, *was* du überhaupt machen willst, wären sinnvoll, mh166 ;-)). In dem Fall ist PHP ungeeignet, da zum einen eine PHP-Session eine begrenzte Laufzeit hat, und zum anderen jeder Aufruf eine neue Instanz des PHP-Skripts öffnet. Man könnte also nicht durch mehrere, sequenzielle Aufrufe zu beliebiger Zeit auf die gleiche Instanz eines Skripts zugreifen. Wäre es so, daß der Dienst so arbeiten kann, daß einmalige Operationen bereits die gewünschte Aufgabe erfüllen (also wäre es so, daß das Skript nur in Aktion treten muss, wenn es aufgerufen wird), wäre ein PHP-Skript eine einfache Möglichkeit, das zu realisieren. Außerdem hat PHP auch noch andere Restriktionen, und so wie es aussieht könnte mh166 tiefer in das System eingreifen wollen. Das Erweitern der Rechte für das PHP-Skript wäre mir ein zu hohes Sicherheitsrisiko, wenn ich nicht die gesamte Kommunikation verschlüsseln und jeden Kontakt genauesten authentifizieren kann. Zitat:
|
Re: Portabilität zwischen Linux und Windows?
moin moin,
Zitat:
Also wirklich, klarer geht's nimmer mehr. :roll: Aber, wie gesagt ich halt mich jetzt mal raus. :wink: |
Re: Portabilität zwischen Linux und Windows?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wegen der Frage PHP - ja oder nein: da hat tommie-lie ja schon ein ausführliches Statement abgeliefert, dem ich mich nur anschließen kann. Zitat:
Und zwar geht es letztlich darum, dass der Server (darüber hab ich mich ja schon am Anfang ausgelassen) auf meinen Rechnern im Netzwerk installiert werden soll, sodass ich dort dann PlugIns installieren kann, mit denen ich den jeweiligen Rechner dann zum einen (mehr oder weniger) fernsteurn kann (sprich Programme starten, killen...) aber zum anderen auch Informationen darüber abrufen kann (z.B. Prozi-, RAM- oder auch Swapauslastung in den letzten 5min; HDD-Status; etc. pp. usw. usf.). Im Endeffekt gehts mir darum eine beliebig erweiterbare Plattform zur Verfüfung zu stellen, mit der nahezu alles möglich ist, was sich über ein Webinterface realisieren lässt (also richtiges Remote Control im Sinne von VNC wohl nicht ;-)). Ich hab mal die Mindmap angefügt, wo ich mir schon vor langem erste Gedanken über das Projekt gemacht habe. Allerdings ist die Plattformunabhängigkeit dabei noch unberücksichtigt geblieben, weil das erst jetzt aus aktuellem Anlass als MUST dazu gekommen ist. Wenns doch noch Fragen bezüglich des Geplanten gibt, dann raus damit ;) Meine Fragen, die also jetzt bleiben: • ist Mono schon zu der Zeit verfügbar, zu der der Server gestartet wird? • was ist beim Programmieren selber als Unterschied zw. "normalem" Delphi und .NET anders? Ist die Umgewöhnung viel Aufwand oder is das kein Ding? • wie bekomm ich die .NET-Kompilate auch unter Mono zum laufen (wg. dem Ding mit der RTL)? • wird D2k6 "echten" IL-Code erzeugen, oder wieder so ein Mischmasch, wie von Elvis angesprochen? • wäre das Ganze einfacher mit der "normalen" RTL (die ja plattformunabhängig sein soll, wie ich das verstanden hab) einfacher zu schaffen? mfg, mh166 //Edit: Jetzt hängt die MM aber dran ;) |
Re: Portabilität zwischen Linux und Windows?
Moin zusammen,
ja über Mono wird viel geschrieben, aber keiner hat wirklich mal ein Projekt parat, was dann unter Net läuft. Die Sache sollte man bestimmt noch ein zwei Jahre liegen lassen. Ohne VCL zu programmieren ist letzlich keine Freude. Meine bescheidene Meinung, ohne Net-Erfahrung, ist: Schaue Dir mal ![]() Grüße // Martin PS: Der Link zu ![]() |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Die Auslastung der letzten 5 Minuten (in einer Historie) ist für PHP-Skripte ebenfalls unmöglich. Zitat:
Zitat:
Zitat:
Oder indem du die Patches von ![]() Zitat:
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
Man kann dein Statement sogar ins Gegenteil drehen, wenn man sich erst an .Net gewohnt hat. |
Re: Portabilität zwischen Linux und Windows?
Zitat:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Und das ist nur eine Auswahl dessen, was man mit 5 Minuten Suchen findet. Zum... Rest... hat Elvis ja schon was gesagt. |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Hallo Thomas,
hättest Du nicht mal ein Beispiel. Na sagen wir ein Miniprojekt was auf beiden Systemen läuft? Einfach was aus Deiner eigenen praktischen Erfahrung zu realisieren ist. Grüße // Martin |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Der Patch funzt bei mir irgendwie nich... Zitat:
mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Code:
SCNR :mrgreen:
public class Hello1
{ public static void Main() { System.Console.WriteLine("Hello, World!"); } } Die Samples aus Microsofts SDK dürften eigentlich alle funktionieren, ebenso die Tutorials aus der C#-Referenz, vom "Unsafe Code Tutorial" mal abgesehen. Zitat:
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Zitat:
Und mit der RTL alleine funktionieren die Delphi.NET Anwendungen hervorragend unter Mono. Kommt aber die VclRtl hinzu, die die meisten ja gewohnt sind und sie deswegen brauchen, steht man vorerst im Regen. Borland hat dort nämlich bereits im initialization Abschnitt (SysUtils) ein P/Invoke drinnen, das einem die Suppe versalzt. Zitat:
Ich verstehe es einfach nicht, warum immer auf Delphi.NET herumgehackt wird. Es liegt einfach nur an den verwendeten Assemblies und nicht am Compiler. Unter C# oder Ruby# oder was weiß ich noch kann man auch P/Invokes benutzen. Man muss mit Delphi.NET auch keine VCL Anwendung schreiben, die von ihrer Herkunft nun mal stark mit der WinAPI verknüpft ist. Man kann auch mit Delphi.NET ein wxNet , Qt# oder GTK# schreiben. Aber weil Borland es einem da mit dem Menüpunkt "VCL-Formularanwendung" so einfach macht, meinen immer alle, man könne nur VCL.NET Anwendungen schreiben und die laufen nicht auf Mono. Schaut sich eigentlich überhaupt irgendwer außer mir den Quellcode zur RTL.NET, VCLRTL.NET und VCL.NET an? Scheint wohl nicht der fall zu sein. Schwach! (gilt nicht für PersonalEdition Benutzer). Denn sonst würde man sehen, dass in Borland.Delphi.System nicht ein einziges P/Invoke drinnen ist. Auf das VCL.NET vs. WinForms-Phänomen will ich jetzt erst gar nicht zu sprechen kommen, das würde den Thread sprengen und gehört hier auch nicht hin. Ach ja und bevor ich es vergesse: ![]() |
Re: Portabilität zwischen Linux und Windows?
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Wegen dem Patch: hatte ja die Hoffnung, dass es die compilierten Packages patcht aber bereits die Befürchtung, dass es nur den Source patcht.
Und ansonsten danke ich dir, jbg, für deinen ausführlichen Post bezüglich der inkompatibilitäten. Um noch mal zu ressumieren: • D.NET ist "kompatibel" zu Mono, so lange keine Borland-speziellen Assamblies (wie bspw. VCL.NET) verwendet werden • Auch .NET Anwendungen können unter Linux als Deamon laufen • Es macht keinen allzu großen Unterschied ob man nun in w32 oder .NET schreibt. • Die Indys gibts auch für .NET sodass da auch keine Probleme zu erwarten sind. Soweit richtig? Jetzt fällt mir nur noch ein was ein: PlugIns! Gesprochen hab ich zwar die ganze Zeit davon, aber nich dran gedacht. .NET kann auch "DLLs" erstellen. Also halt Module, die man zur Laufzeit nachladen kann. Die wären demzufolge auch plattformunabhängig. Ich nehm mal an, dass das der Fall ist, aber ich frag vorsichtshalber nochmal. ;) Nun, da ich in etwa weiß, worauf man achten soll, habt ihr mich fast soweit, dass ich dotNET und MONO verwende xD mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Moin zusammen,
Zitat:
FAZIT
Also mir hat Eure Diskussion doch hiermit einiges an Erkenntnis gebracht und "Danke für das Simplebeispiel". Grüße // Martin |
Re: Portabilität zwischen Linux und Windows?
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Und mal als Zwischenfrage: Hab jetzt einfach mal ne .NET-Consolenanwendung geschrieben. Nur bissel Writeln und DateTimeToStr(now()). Fazit: - Unter dotNET: kein Problem - Mono unter Windows: Zeit wird nicht angezeigt - Mono unter Linux: Zitat:
mfg, mh166 //Edit: Hatte jetzt aus Spaß mal das uses rausgenommen... Geht ja immer noch :O :lol: Das ist z.B. so ne Sache, die anders is, als unter w32. Aber mir sagt ja niemand was. ;) Now() Hab ich jetzt als TDateTime.Now() hinbekommen. Bloß: wo gibbet DateTimeToStr und co (außer in den SysUtils)? Wie wandelt man denn den ganzen Schmarn jetzt um? oO |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Ich finde immernoch, das PHP dafür perfekt wäre. Auch ein "normaler" Daemon müsste seine Informationen die ganze Zeit speichern. Da macht ihr das wahrscheinlich einfach in einem array, während ihr in php besser auf mysql zurückgreift, aber grundsätzlich ist das doch das gleiche. Ihr bräuchtet also 2 Scripte: Ein Skript, was entweder ständig läuft, oder menütlich oder so per cronjob aufgerufen wird, welches Statusinfos abfragt und in die DB schreibt. Dann braucht ihr ein zweites Script, welches die Daten anzeigt. Kein Problem. Sicherheit: Irgendwer hat geschrieben, dass man das kaum sicher machen kann. Um da meinen Standpunkt zu beschreiben, muss ich mal kurz sagen, wie ich vorgehen würde, um das System zu hacken: Ich würde mich in das Netzwerk einklinken und dann ein Programm wie etherreal starten. Jetzt muss ich nur noch warten, bis ihr euer Programm benutzt. Also egal ob php oder was anderes. Gehen wir mal davon aus, die Verbidnung ist unverschlüsselt und bei beiden tools übertragt ihr zum beginn ein Passwort um euch zu authetifizieren. Dann kann ich also aus dem Traffic das Passwort entnehmen. Selbst, wenn ihr das passwort verschlüsselt (so zum Beispiel als MD5) übertragt, reicht das, denn, ich sende auch einfach dieses Passwort. Dann logge ich mich ein, bin drin und kann machen was ich will. Ist dort jetzt irgendein Unterschied zwischen eurem selbstgeschriebenen Daemon und php? NEIN! Es wäre sogar viel einfacher php zu nehmen, denn dem müsst ihr nur das ssl-Plugin reinschieben und dann immer schön euer Interface mit https:// aufrufen und schon habt ihr eine verschlüsselte Verbindung, die nicht so einfach zu knacken ist. Geht mit mono zwar bestimmt auch, aber nicht so einfach. Und wo ist jetzt der Unterschied, ob der php-code den Befehl letztlich ausführt oder euer daemon? Das interessiert mich als Hacker dochmal garnicht. Gut. Wenn ich in der Lage bin selbst php-code in den htdocs-Ordner eures Apaches zu bringen, dann habt ihr ein Problem. Aber dann habt ihr grundsätzlich ein Problem, denn dann habe ich sowieso zuviele Rechte (oder bin ein guter Hacker) und kann dann auch so viel Schaden anrichten. Und einen zur Hälfte selbstprogrammierten http-server zu hacken ist sicherlich schwerer als einen aktuellen apache. Also demnach ist es sogar SICHERER php zu nehmen! |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Dem geneigten Leser sei hier die Dokumentation zum Linux Password Authentication Manager (PAM) zu empfehlen, aber auch jedes andere Material darüber, wie Linux seine User-Passwörter speicher, taugt dazu. Zitat:
Zitat:
|
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Auf jedenfall Danke ich euch shcon mal bis hier her. Werd also für die Realisierung dieses Projekts auf jedenfall dotNET verwenden. Allerdings hab ich ein großes Problem, wie ich heute Erfahren habe: mein Vorschlag (eben dieser Server) wurde abgelehnt. Also hab ich mich mit dem entsprechenden Lehrer auseinandergesetzt und der meinte, dass ich da lieber einen Eventmanager für die Schule programmieren sollte. Also für Lehrer, Schüler und die Öffentlichkeit halt Termine getrennt verwalten. Nun hätte ich ja hier das Problem nun doch noch die visuellen Komponenten verwenden zu müssen. Jetzt kam ja bereits so ne Bemerkung über WinForms... scheint also keine Möglichkeit zu sein. VCL.NET wurde ja aus bekannten Gründen auch schon ausgeschlossen. Was bleibt mir da an Möglichkeiten zur visuellen Gestaltung? Ich würde nämlich das ganze lieber mit Delphi als mit PHP lösen. Geschmackssache, ich weiß. Aber wenn die Möglichkeit bestände... Danke schon mal für eure Geduld mit mir :) mfg, mh166 |
Re: Portabilität zwischen Linux und Windows?
Zitat:
Zitat:
Zitat:
wxNet wäre auch noch 'ne Möglichkeit, wxWidgets sind plattformunabhängig. Alles andere ist tot (Qt#) oder nicht plattformunabhängig (Cocoa#: mac-only). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz