Es kann nicht direkt durchgeführt werden, aber Sie können ein Client-Server-Service-Framework verwenden, das interface-basiert sein kann.
Zum Beispiel finden Sie in der letzten Merkmal unserer Open Source mORMot Rahmen: Interface based services sample code und this link.
Sie können einen interface
auf einem Remote-Prozess ausführen. Das Merkmal behandelt alle Kommunikationsmittel des Rahmenwerks, d. H. In-Prozess-Anruf, GDI-Nachrichten, Named Pipes und TCP/HTTP. Intern wird es WM_COPYDATA
für GDI-Nachrichten verwenden, dann die Parameter und Ergebnisse als JSON übertragen. Verwenden Sie this link, um den Quellcode herunterzuladen (verwenden Sie die http://synopse.info/fossil 1.16+ Version) und die Dokumentation (es gibt mehrere Seiten über die Implementierung dieser Dienste).
Es ist ein Open-Source-Projekt, das mit Delphi 6 bis XE2 arbeitet.
Sie können Ihre Schnittstelle auch mit einem SOAP- oder DataSnap-Client-Server (wenn Sie über die entsprechende Version von Delphi verfügen) oder n-tier-kommerziellen Paketen (wie http://www.remobjects.com/da) verfügbar machen. Dies ähnelt der in mORMot implementierten Methode.
COM ist auch ein guter Kandidat, nativ zu Windows, aber es ist schwieriger zu initialisieren: Sie müssen die COM auf jedem PC (mit Administratorrechten) registrieren, und Sie werden es nicht schaffen können arbeiten über ein Netzwerk (DCOM ist veraltet, erinnern). COM ist gut, wenn Sie möchten, dass Ihr Dienst mit anderen Sprachen wie .Net geteilt wird, aber nur lokal.
Keine direkte Erfahrung mit WM_COPYDATA. Aber ave Sie überprüft dies - http://www.codeproject.com/Articles/5307/Use-WM_COPYDATA-tosend-data-to-from-C-and-C-Windo. Auch Joseph Newcomer scheint zu suggerieren, dass es möglich ist - http://www.flounder.com/wm_copydata.htm (und er hat im Allgemeinen Recht mit allen Dingen Win32) – Gangadhar
@Gangadhar Dies ist ein sehr netter Link. Problem ergibt sich aus der Tatsache, dass alle Daten in den WM_COPYDATA-Puffer serialisiert werden müssen - Sie können es von Hand tun (wie der Autor vorschlägt), oder sich auf automatisiertes Marshalling verlassen, wie COM oder mORMot. –
Vielleicht bin ich völlig aus, aber was ist mit [ObjectFromLresult] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd373605%28v=vs.85%29.aspx) und [LresultFromObject ] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318557%28v=vs.85%29.aspx)? – kobik