AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm modularisieren

Ein Thema von hanspeter · begonnen am 15. Feb 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: Programm modularisieren

  Alt 15. Feb 2008, 14:39
Hi,
hatte da noch eine Idee, wie sieht es denn damit aus:
Du führst Shellexecutes aus und übergibst der Exe parameter mit...damit würdest du keine WM_Copydata senden müssen und hättest aber das einfache Handling von exe-files

greez
gabneo
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Programm modularisieren

  Alt 15. Feb 2008, 20:05
Zitat von gabneo:
Hi,
hatte da noch eine Idee, wie sieht es denn damit aus:
Du führst Shellexecutes aus und übergibst der Exe parameter mit...damit würdest du keine WM_Copydata senden müssen und hättest aber das einfache Handling von exe-files

greez
gabneo
Dann wird aber jedesmal eine neue Instanz des Programmes angelegt und ich möchte, wenn einml gestartet, das Programm bis zum Ende des Mainprogrammes laufen lassen.

Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Programm modularisieren

  Alt 5. Mär 2008, 07:12
Um das Thema mal abzuschließen.
Ich habe in der vergangenen Woche alle Verfahren ausprobiert und für mich ergibt sich nachfolgendes Ergebnis.

Wenn es keine technologische Notwendigkeit (Plugin-System o.ä.) gibt, lohnt sich eine Modularisierung mit Delphi nicht.
Ein sauberes OOP-Design vorausgesetzt ist eine monolithische Lösung besser.
Begründung:
Der Speicherbedarf ist bei Modularisierung immer signifikant höher.
Es entsteht zusätzlicher Aufwand zur Verwaltung der Module.
Die BPL Lösung ist nur verwendbar, wenn ein Versionskontrollsystem und/oder eine automatische Installationskontrolle
vorhanden ist. (z.B. über Internet prüfen welche Module jünger sind und diese herunter laden.)
Das hängt damit zusammen, das Delphi beinahe willkürlich ältere Module mit compiliert und diese dann updatet werden müssen.

Dll Lösung.
Benötigt trotzdem Laufzeit - bpl und der Debugger ist beim Test von dll schlichtweg eine Zumutung.

Framwork Hydra als Plugin- System.
Funktioniert gut. Hier auch Probleme beim modulübergreifenden Testen.
Potentiell aber gefährlich. Das Modul läuft wohl im gleichen Prozessraum.
Enthält irgendein Modul eine Delphi Komponente, welche sich mit Registerclass registriert, dann muss diese Komponente
als Laufzeit-BPL bereitgestellt werden.
Erst zur Laufzeit kommt ein Fehler, wenn in irgendeiner Konstellation zwei Module
mit der gleichen Klasse aktiviert werden.
Zur Entwicklungszeit merkt man diesen Fehler nicht. Im Gegenteil- Das Programm kann wochenlang laufen.
Erst wenn eine bestimmte Konstellation aktiviert wird, kommt es zum Fehler.

ActiveX und Com-Server scheiden aus, wenn W98 nicht als System ausgeschlossen werden kann. Der Overhead und die Notwendigkeit zur Registrierung verursachen zusätzlichen Aufwand.
Der Test gestaltet sich sehr schwierig.

Das vorgestellte Beispiel mit einer Exe-Datei und Interprocesskommunikation über TCP/IP oder Named Pipes ist interessant,
wenn sich der Datenaustausch auf ein Minimum reduziert und der Vorgang problemlos serialisierbar ist.
Ich habe im konkreten Fall die gesamte Reporterzeugung in ein eigenes Modul ausgelagert.
Das Modul initialisiert sich beim Start aus der Ini-File des Hauptprogramms.
Im laufenden Betrieb ist dann nur noch die Nummer des gewünschten Reports und die Anzahl zu übertragen.
Die Information wird auf einen Stack abgelegt und dann sequentiell abgearbeitet.
Die Vorgehensweise hat den Vorteil, dass ich den Reportgenerator mit eigener Oberfläche starten kann.

Fazit
Modularisierung nur zur Programmstrukturierung lohnt sich erst in Net und bringt erst hier echte Vorteile.
In Win32 macht es Sinn den zusätzlichen Aufwand für Modulverwaltung und Versionskontrolle lieber in das OOP Design
zu stecken und das Programm selber monolithisch zu lassen.
Die Zeit welche man dadurch spart, das man statt 10 mbyte nur ein 2 mbyte Modul übertragen muss, wird ohnehin durch die
notwendige Versionskontrolle und das Nachladen weiterer Module egalisiert.

Gruß
Peter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz