![]() |
Kommunikation zwischen Delphi und Metro App (WCF?)
Mein Wunsch ist es, zwischen meiner bestehenden Delphi-Anwendung und einer Metro-App, die ich gerade erstelle, zu kommunizieren.
Wenn meine Recherchen korrekt waren, ist die beste Möglichkeit dafür per WCF ( ![]() ![]() Delphi XE3 hat für einen ähnlichen Einsatzzweck anscheinend den ![]() Die einzigen beiden Resourcen, die ich zu WCF und Delphi gefunden habe, sind diese hier: ![]() ![]() Leider bekomme ich das nicht so recht mit meinem Delphi XE nachvollzogen. Ich weiß nichtmal, wie ich an "Add Reference" kommen soll. Da wird sich seit Veröffentlichung der Artikel vor 5 Jahren wohl ein bisschen was verändert haben... Kann mir da bitte jemand weiterhelfen? |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
Das heisst in XE ist das Zeug gar nicht mehr drin - da müsstest Du schon Prism / Oxygene nehmen. WCF (Windows Communication Foundation) ist eine reine .NET-Technologie, die Du von Delphi aus gar nicht ansprechen kannst. Als alternative würde ich hergehen, und eine Kommunikation via TCP/IP (z.B. mit den Indy-Komponenten) aufbauen. Problematisch wird höchstens, dass die Metro-Apps in dem Moment suspended werden, in dem sie verlassen wird. Das heisst in genau dem Moment wo die App gewechselt wird, steht der Prozess (und zwar 'hart' - wenn ein Halbes Netzwerk-Paket abgearbeitet wurde, dann wird die andere hälfte erst weiter bearbeitet, wenn die App wieder in den Vordergrund kommt). Zudem darf sich eine Metro-App an und für sich nicht darauf verlassen, dass auf der gleichen Maschine ein bestimmter Dienst läuft (und ein Dienst nicht, dass eine Metro-App läuft). In diesem Video hier wird das Konzept gut beschrieben: ![]() |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
* die Delphi Anwendung muss einen SOAP Web Service Server anbieten (das geht ab Delphi Professional) * die Metro Anwendung muss diesen Web Service konsumieren, also Requests an ihn senden können. Für die Modern UI Anwendung kann dazu im Prinzip WCF verwendet werden (WCF Clients können problemlso auf nicht-.NET Webservices zugreifen, die entsprechend konfiguriert sind - zum Beispiel in Java mittels JAX-WS). Ich würde aber dennoch erwägen, als "Vermittler" zwischen der Delphi und der Modern UI Anwendung einen .NET Dienst zu verwenden. Zum Beispiel mittels HTTP als Kommunikationskanal Modern UI App -> (über WCF) -> .NET Service (WCF Server) -> (über HTTP) -> Delphi Anwendung Alternativ können natürlich auch andere Methoden der Interprozesskommunikationen benutzt werden, also Named Pipes, Memory Mapped Files, oder Message Queues (MSMQ und Co.) Für die "beste" Lösung ist natürlich wichtig zu wissen, wie die Kommunikation aussehen soll - ob der Modern UI App Client Anfragen an die Delphi Anwendung senden soll, oder auch von Delphi aktiv Nachrichten an die Modern UI App übermittelt werden sollen. |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Vielen Dank für Deine Antwort! Ich freue mich, dass ich nicht der einzige bin, den die Thematik interessiert. :)
Zitat:
![]() Letztlich ist es ja nur eine HTTP-Kommunikation. Der besagte MetropolisSvc-Service aus XE3 kommuniziert ja scheinbar auch nur per REST. Dazu gleich mal zwei Fragen:
Zitat:
Warum sollte die Metro-App nicht mehr im Vordergrund sein, wenn sie über TCP/IP kommuniziert? Zitat:
Zitat:
|
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
Zitat:
Dann als Vorlage einfach "SOAP Server Application" nehmen? Zitat:
Zitat:
Jede zusätzliche zwischengeschaltete Komponente führt letzlich zu mehr Fehlerquellen... Zitat:
Zitat:
|
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
![]() Zitat:
Diese API scheint Atom und RSS zu unterstützen. Das sind zum Glück offene Standards. Aber da ich kein Windows 8 und das passende Visual Studio habe, kann ich nicht sagen ob WCF nicht mehr geht bzw. auf lokale Server zugreifen kann. Zitat:
Zitat:
Zitat:
Duplex WCF funktioniert laut Stackoverflow ![]() ![]() Wichtig ist noch die Frage der Topologie: soll die Delphi Anwendung der "Server" für viele Metro-Clients sein (1:N), oder sollen peer-to-peer Verbindungen (von einer Metro App zu einem Delphi Prozess, also 1:1) hergestellt werden? p.s. in diesem FAQ wird erwähnt, dass es aus Metro Anwendungen keine localhost Verbindungen geben kann (ausser zur gleichen App): ![]() Das bedeutet, die Delphi App muss auf einem anderen Rechner installiert sein. p.p.s: zu WCF Funktionen in Metro: ![]() |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
Zitat:
Zitat:
Ich versuche nachher nochmal, eine verlässliche Quelle zu finden. Wenn da jemand mehr Erfolg bei der Suche hat, sehr gerne! |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
Zitat:
Zitat:
![]() |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
![]() Zitat:
Zur Transparenz: Ich habe heute nach ein paar Denkanstößen hier noch eine grundsätzliche Frage (ohne konkreten Delphi-Bezug) dazu auf ![]() |
AW: Kommunikation zwischen Delphi und Metro App (WCF?)
Zitat:
* WinRT und Desktop Anwendungen können nicht kommunizieren, ausser in Debug-Umgebungen * der MetropolisSvc in Delphi XE3 kommuniziert nicht mit WinRT, sondern nur mit einem Live Tile Zitat (letzter Kommentar von gestern): Zitat:
* wenn Metro Apps mit einem Web Server kommunizieren können (Wettervorhersage, Social Media etc.), und das über TCP/IP (HTTP) machen, warum geht das nicht wenn der Server lokal läuft? Oder irre ich mich und es geht (man kann statt localhost ja die IP Adresse des Netzwerkadapters angeben). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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