Erstellen Sie eine kleine und prägnante windows service mit Delphi

Ich erstellt habe, sehr einfaches windows-Dienst-app-updates einige Dateien chronologisch mit Delphi. Die service-app kompiliert und funktioniert gut, aber ich bin nicht glücklich mit der definitiven exe-Datei Größe. Seine über 900K. Der Dienst selbst nicht verwenden, Formulare, Dialoge, aber dennoch sehe ich SvcMgr ist die Referenzierung von Formularen und anderen großer Mist ist, den ich nicht verwende.

Name           Size Group Package
------------ ------ ----- -------
Controls     80,224 CODE
Forms        61,204 CODE
Classes      46,081 CODE
Graphics     37,054 CODE

Gibt es eine Möglichkeit, ich kann die service-app kleiner? oder gibt es einen anderen service-Vorlage, die ich verwenden kann ohne Verwendung von Formen etc?

schreiben Sie in C++ - wenn Sie möchten, eine kleinere exe-Datei.
Es kann getan werden gerade fein in Delphi. Mein Beispiel unten erzeugt 50K große service, hat alles, was ein Delphi Dienst tun können. In den meisten Fällen ist dies völlig unnötig, aber es kann in handliches kommen. Wenn nichts anderes, dann als einen Lernprozess. Trotzdem bittet er um eine kleine ausführbare Datei in Delphi, so Ihr Kommentar ist ein wenig unhöflich.
Warum C++? Man könnte auch implementieren, die es in reinem C oder gar in assembler 😉 Jedenfalls was ist gut an Delphi ist, können Sie gehen, die Reine Windows-API Programmierung auf die gleiche Weise wie in C/C++, wenn Sie es brauchen - und Sie wissen, wie man code, der Weise. Der standard-Ansatz trades einfach zu verwenden für die Größe, denke die meisten Leute hier nicht merken, wenn Windows Programmierungen beschuldigt wurde, "bedürfen einer hundert Zeilen code, um zu zeigen, 'Hallo Welt' ". Er könnte auch versuchen zu kompilieren, die mit Laufzeit-packages erhalten Sie eine kleine exe-Datei (und dann zu verteilen - aber auch VC++ kann verlangen, seine eigenen DLLs)
Für kleine Anwendungen, die ausgeführt werden sollen, in Intervallen die bevorzugte Methode nun ist die Verwendung des Windows Scheduler statt mit einem service, dort zu sitzen, nichts zu tun. Der Vorteil ist, Sie haben nur ein Prozess aktiv ist, während der geplanten Prozesse, die ausgeführt werden, dann kündigen, ohne Verwendung von system-Ressourcen (RAM, CPU-Zeit, etc.). Wenn Sie sind besorgt über Ihr exe-Größe, sollten Sie sich auch Gedanken darüber machen, wie viele system-Ressourcen nutzt es vielleicht uselessy.
das ist, weil ein Standard-service in Delphi bietet eine design-Zeit-Fläche (der Dienst, datamodule) bereit, zu akzeptieren, Komponenten, event-log-reporting-code und so weiter. Das hat natürlich einen Preis. In der Regel ein service-fügt viel mehr code und macht, dass der overhead vernachlässigbar, aber für sehr einfache Anforderungen, könnte es zu viel sein. Aber das ist nur die VCL-Implementierung, niemand verbietet das hinzufügen von kleineren. Ich denke mal, ein standard-MSVC-Dienst erfordert viel mehr Aufwand, um nützliche features hinzufügen. Vergessen Sie dies, bedeutet vergleichen Apfel mit Birnen.

InformationsquelleAutor Darkerstar | 2011-04-06

Schreibe einen Kommentar