AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# GUI und Logik in verschiedene DLLs?
Thema durchsuchen
Ansicht
Themen-Optionen

GUI und Logik in verschiedene DLLs?

Ein Thema von Angel4585 · begonnen am 5. Nov 2012 · letzter Beitrag vom 5. Nov 2012
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 08:55
Hallöchen

In einer Gruppe von 10 Leuten bearbeiten wir in unserm Studium ein Projekt.
Ein Programm welches mit verschiedenen Algorithmen eine Lösung zu einem Problem finden soll.

Jetzt haben wir uns zum einen gedacht, die Algorithmen per DLL einzubinden, was auch alle sehr anspricht.
Die Frage ist folgende:
Jeder Algorithmus hat unterschiedliche Startparameter und benötigt unter Umständen individuelle Abbruchbedingungen.
Einem Genetischen Algorithmus kann man ja beispielsweise mitgeben, wieviele Generationen es insgesamt geben soll.
Ein Parameter den es bei anderen Algorithmen unter Umständen nicht gibt.

Deshalb möchten wir auch eine GUI per DLL einbinden (einfach ein Dialog oder ein Panel).

Was sagen die Profis:
Sollte man GUI und Logik in die selbe DLL stecken (algo.dll) oder in unterschiedliche (algo.logik.dll und algo.gui.dll)?
Und mit welcher Begründung?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 09:07
Das ist gelinde gesagt absoluter Unfug.

Ein und dasselbe Problem hat per Definition eine Beschreibung, denn ansonsten beschreibe ich ein anderes Problem. Ergo kann (nein muss) der Aufruf gleich sein.

Das die Algorithmen evtl. mal mit Arrays oder Listen oder verketteten Listen oder whatever arbeiten ist natürlich richtig, aber das gehört schon zur Lösung und damit zum Algorithmus.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Nov 2012 um 09:09 Uhr)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 09:40
Das Problem ist ja auch immer das selbe.
Nur der Weg der zur Lösung des Problems führt ist ein anderer und hat daher verschiedene Aufrufparameter.

Einmal wird ein Genetischer Algorithmus verwendet, einmal eben kein Genetischer und dann nochmal ein ganz anderer.
Und gewissen Dinge sind bei den Algorithmen dann eben unterschiedlich.
Aber das Problem ist trotzdem das selbe.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 09:44
Dann lässt es sich auch mit dem gleichen Aufruf beschreiben.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 09:48
Muss ja identisch sein, sonst könnte man nur schwer ein Pluginsystem realisieren. Der Aufruf ist sowas wie
function StartSearch(opts : Pointer):TResult; Der Pointer geht halt auf ein Objekt oder Struct, welches je nach Algorithmus unterschiedliche Attribute hat.
Die Attribute benötigen eine GUI. Und da man nicht weis welche Algorithmen noch kommen und was die brauchen, kommt die GUI in eine DLL.
Edit: Die Frage ist aber doch: GUI und Logik trennen?
Martin Weber
Ich bin ein Rüsselmops

Geändert von Angel4585 ( 5. Nov 2012 um 09:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 09:57
Betrifft die Frage jetzt C#?
Dann sprechen wir von Assemblies (was gegenüber normalen DLLs ein grosser Unterschied ist).

Wie man seinen Code über versch. Assemblies verteilt hängt zunächst von den Abhängigkeiten zwischen den Klassen und Namespaces ab.
Eine Abhängigkeit sollte möglichst nur in eine Richtung gehen.

@Sir Rufo:
ich vermute bei dem Projekt sollen viele unterschiedliche Algorithmen demonstriert werden ohne dass eine konkrete Anwendung vorliegt.
Wenn man z.B. Quicksort vorführen möchte, dann bräuchte man vor dem Start die Anzahl der Elemente.
D.h. jeder Algorithmus braucht eine kleine Form/Frame (GUI) mit dem man die Parameter setzen kann.
Eigentlich müsste man auch noch die Ergebnisse visualisieren, sonst würde die Demo wenig Sinn machen.

>>Sollte man GUI und Logik in die selbe DLL stecken?
Falls die Logik nicht in anderen Projekten genutzt werden soll,
wäre eine gemeinsame Assembly günstiger.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 10:03
Also es geht um C#, ja.
Ich muss gestehen, dass ich mich mit C# und Assemblies (noch) nicht auskenne.
Aber ein Studium ist ja da um zu lernen

Es sollte halt möglich sein, einem beliebigen entwickler, der sich dafür interessiert, eine Schnittstelle zu bieten selbst einen Algorithmus für das Problem zu entwickeln und diesen per DLL einzubinden.
Es sollte dann ein Tab/Reiter/Dialog für den neuen Algorithmus angezeigt werden.
Martin Weber
Ich bin ein Rüsselmops

Geändert von Angel4585 ( 5. Nov 2012 um 10:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 10:31
Ok, dann müssen wir das mal etwas anders aufdröseln

Es gibt ein Hauptprogramm, dass die Plugins lädt und jedem Plugin einen Tab (mit einem Container) zur Verfügung stellt.
In diesem Container kann das Plugin dann je nach Gusto einen Einstellungsseite zur Verfügung stellen.

Die zu verarbeitenden Daten (also das Problem für sich) sind allerdings für alle Plugins gleich. Somit ergeben sich 3 Funktionalitäten die die Plugin-Dlls anbieten müssen:
  1. GetPluginName
  2. YourParentHandle( aHandle )
  3. SolveProblem( ProblemDefinition )

Das Hauptprogramm fragt die DLL nach dem Plugin-Namen und erstellt ein Tab mit dem entsprechenden Container.
Der Handle dieses Containers wird an das Plugin zurückgegeben. Mit diesem Handle kann das Plugin nun die eigene Einstellungsseite oder was auch immer anzuzeigen.
Um das Problem zu lösen ruft das Hauptprogramm nun einfach SolveProblem des Plugins auf.

Damit sollte die Frage eigentlich beantwortet sein ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 10:43
Genau so dachte ich mir das auch

Frage war wie gesagt nur ob man Logik und GUI in verschiedene DLLs auftrennen sollte.
Aber dann kommt man vermutlich nur durcheinander und GUI liegt in Version x und Logik in Version y vor.

Vielen Dank an euch

Edit: Anstatt GetPluginName würde ich GetPluginInfo nehmen
Martin Weber
Ich bin ein Rüsselmops

Geändert von Angel4585 ( 5. Nov 2012 um 10:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: GUI und Logik in verschiedene DLLs?

  Alt 5. Nov 2012, 10:51
Frage war wie gesagt nur ob man Logik und GUI in verschiedene DLLs auftrennen sollte.
Das Hauptprogramm sollte nur die Plugins ansprechen.

Ob das Plugin die benötigte GUI nochmals auslagert ... who cares, soll jeder Entwickler machen wie er will.

Absolutes NoGo: Das Hautprogramm muss sich zum Plugin noch das passende GUI-Plugin suchen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:22 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