| |

VB.NET - FortgeschritteneDringend: Kommunikation Schnittstellen | |  | Autor: teccer | Datum: 27.10.04 08:36 |
| Hallo zusammen,
habe heute mal "Dringend" benutzt, da die Telekom derzeit an den Glasfaserkabeln was am machen ist und ich nur in den vier Stunden im Büro (bis 10h) ins Netz kann. Aber ich weiss, ihr antwortet auch so schnell;)
Zum Problem. Eigentlich ist es ganz einfach, aber ich werde es wahrscheinlich kompliziert erklären.
Es gibt eine DLL, die u.a. ein Interface beschreibt. Nennen wir die DLL "Interface". Dann gibt es ein Programm, was DLL per Reflection einliest. nennen wir es Programm und dann gibt es eine DLL, die das "Interface" beinhalten und damit arbeiten. Nennen wir Sie UserDLL
Das "Programm" lädt nun per Reflection die DLLs ein, also auch die "UserDLL". Nun kann man eine Instanz erstellen und dann eine Methode in der UserDLL aufrufen. Diese Methode stammt aus dem Interface. Nennen wir die Methode "GetMessage".
Das Programm spricht also die "GetMessage"-Methode an und empfängt vom User eine Rück-Message und arbeitet dann evtl. was ab. Ok dieses Spielchen könnte so lange dauern, bis das Programm sagt, dass es nicht mehr auf die Antwort reagiert. Beispiel:
Programm > GetMessage > "MyItemClick"
UserDLL > an Programm > "ShowMyWindowAsMDI"
Programm > GetMessage > "True"
UserDLL > an Programm > "GetMyXy"
Dafür müsste aber das Programm immer in einer Schleife laufen und so lange die Rückmeldungen abarbeiten, bis es keine Rückmeldung mehr gibt oder ähnlich.
Sprich mir fehlt so ein wenig die direkte Kommunikation von der UserDLL mit dem implementierten Interface an das Programm. Derzeit ist immer das Programm der Auslöser, weil es alle Daten von der UserDLL kennt und somit eine Instanz erzeugen und es ansprechen kann.
Es ist halt irgendwie einseitig, da die UserDLL nicht selber diejenige sein kann die die Kommuikation eröffnet.
Jetzt suche ich eine Möglichkeit wie es mit einer Schnittstelle trotzdem ginge, ohne die Infos ins Clipboard zu hängen oder einen Windows-Dienst zu bauen.
Ich meine die einfachste aller Möglichkeiten wäre wohl das Programm als TCPListener und alle DLL als TCPClients, die über ne Funktion den Kontakt aufnehmen. Was mich aber bis jetzt davon abgehalten hat, ist die Tatsache, dass beide keine Events kennen und somit eine Blockade auf beiden Seiten stattfindet. Denn sobald der Listener die Verbindung akzeptiert, wartet der auf Daten und anders herum, sobald der Client ne Connection hat, versendet er Daten von wartet auf Rückinfo. Irgendwie finde ich, dass es mit dem damaligen Steuerelement Winsock besser gelöst war. Da bekam jede Connection gleich nen Index. Man musste nicht jedesmal die Verbindung auf un zu machen, man konnte so Round-Messages versenden usw. Das sind Gründe, warum es so am besten nicht machen möchte.
Es gibt nie einen, der der beste ist. Darin sollten wir alle Vorbild sein. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|