2009-04-27 14 views
3

Ist es möglich (und machbar), .NET Remoting-Schnittstelle mit Delphi Win32-Anwendung zu verwenden?.NET Remoting und Delphi win32

Ich brauche Kommunikation zwischen .NET-Anwendung und Delphi Win32-Anwendung, so dass .NET Remoting native für das andere Ende der Pipe sein würde.

Alle anderen Lösungen, so nah wie möglich, für beide Enden ohne 3rd-Party-Bibliotheken? Anwendungen werden jeweils auf einem separaten Windows-Computer ausgeführt.

Antwort

8

Da sie auf verschiedenen Computern ausgeführt werden, sollten Sie eine Netzwerkkommunikation verwenden. SOAP ist ein allgemeines Kommunikationsformat, das sowohl für .Net als auch für Delphi win32 leicht gemacht werden kann. Aber SOAP = XML = langsam.

Für mein Unternehmen nutzen wir die RemObjects SDK Remote Rahmen: http://www.remobjectssdk.com/

Sehr einfach eine Schnittstelle zu machen, erzeugen Code für .NET/Delphi/Php/C++/was auch immer, unterstützt auch SOAP, aber wir verwenden, um die binäre Format für Geschwindigkeit (!).

+0

Eigentlich haben wir RemObjects am Delphi Ende verwendet, Das ist natürlich eine Option. Aber RO ist eine Fremdanbieter-Option in beiden Welten und fügt dem System eine (nicht benötigte?) Komplexität hinzu. – Harriv

+0

Wort über Geschwindigkeit, das ist in diesem Fall kein Problem. – Harriv

2

Sowohl Delphi win23 als auch .Net haben gute Unterstützung für COM-Objekte. Es ist eine Option, die einen Besuch wert ist.

+0

Ich habe Eindruck, dass mit COM und DCOM tun könnte ein bisschen chaotisch sein, ist es wirklich wert? – Harriv

+0

Autsch, bitte nicht COM mit DCOM verwechseln! (und ActiveX) Ja, DCOM könnte etwas unordentlich aussehen, COM + wurde vorgeschlagen, um einige der Schmerzen zu lösen. Aber COM allein, das auf die grundlegende Verwendung von Typbibliotheken und IUnknown-Vererbern beschränkt ist, ist ziemlich sauber und schnell. Vor allem, wenn Sie es als eine relativ sichere Möglichkeit ansehen, DLL-Exporte vorzudefinieren, zu teilen und zu konsumieren. –

+0

OK, aber dann "rein" COM ist nicht hilfreich, wenn wir über die Kommunikation zwischen Computern sprechen? – Harriv

2

Das Remoting von einer Nicht-.NET-Delphi-Exe wäre sehr schmerzhaft. Wenn nicht bekannt ist, dass die .NET-Anwendung ausgeführt wird, wäre COM-Interop die einfachste Antwort, da es Prozesse für die COM-Aktivierung usw. gibt. Die Tatsache, dass es verschiedene Maschinen gibt, kompliziert die Dinge, aber DCOM existiert und funktioniert. t testete es aber mit .NET und Delphi Endpunkten.

Wenn .NET app ist bekannt (vielleicht als Dienst) ausgeführt werden, können Sie eine Reihe von Alternativen in Erwägung ziehen könnte:

  • Steckdosen
  • http (vielleicht POX über http, mit HttpListener am .NET-Server)
  • SOAP (vielleicht über WCF ServiceHost am Ende NET)
  • Datei basiert (Netzwerkfreigabe verwendet wird, vermutlich)
+0

Beide Apps sollten immer laufen, das ist also nicht das Problem. Ist dateibasierte Interprozesskommunikation wirklich eine gute Option? – Harriv

+0

Nun, es ist * eine * Option - aber es kann mehr Probleme als Dinge wie http, vor allem umgebende Berechtigungen (und versuchen Sie es nicht einmal durch eine Firewall ...) –

0

Der beste Weg für die Kommunikation mit jeder Plattform für mich ist über Sockets. Nun, wenn es intern ist, bevorzuge ich PIPES oder MAPPED Memory.

1

ich kürzlich erschienene Artikel über dieses Thema mit einer Lösung gefunden: http://www.codeproject.com/Articles/852750/NET-and-Delphi-Inter-Process-Communication-via-Nam

+2

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort [hier] (http://meta.stackoverflow.com/a/8259) aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – bummi