PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Browser-Anwendung auf Basis einer C++ DLL


Gast
2012-05-03, 13:15:31
Hallo!

Ich pflege ein Tool, dessen Oberfläche mit dem C++ Builder (VCL) von Borland erstellt wurde. Die Funktionalität liefert dabei eine DLL, die ebenfalls in C++ geschrieben wurde.

Nun würde ich gerne auf den C++ Builder bzw. VCL verzichten und die GUI als Browser-Anwendung weiterentwickeln. Es soll also quasi nur die Oberfläche ausgetauscht werden, die Funktionalität liefert weiterhin die DLL. Die Anwendung soll installiert und lokal im Browser ausgeführt werden, "echte" Web-Features sind (noch) nicht geplant.

Welche Technologien bieten sich hierzu an? Was würdet ihr verwenden?

Coda
2012-05-03, 14:26:23
Ich finde die Idee zwar ziemlich kurios, du hast da aber verschiedene Möglichkeiten. Auf die schnelle fallen mir ein:

1. Versuch die DLL als C++/CLI managed assembly zu kompilieren und verwende ASP.NET. Der Vorteile wäre, dass man dann für den Rest der Webseite normales C# verwenden könnte.
2. Webserver-Plugin (Apache mod, IIS, etc.) oder FastCGI
3. NodeJS & C++-Addon (http://nodejs.org/docs/latest/api/addons.html)
4. Eigenes PHP-Modul

1., 3. & 4. sind Varianten vom gleichen Prinzip.

Shink
2012-05-03, 16:04:03
Ich finde die Idee zwar ziemlich kurios
Ich auch. Interessanterweise macht man das heute ziemlich oft.

Gast
2012-05-03, 19:16:51
Ich finde die Idee zwar ziemlich kurios, du hast da aber verschiedene Möglichkeiten. Auf die schnelle fallen mir ein:

1. Versuch die DLL als C++/CLI managed assembly zu kompilieren und verwende ASP.NET. Der Vorteile wäre, dass man dann für den Rest der Webseite normales C# verwenden könnte.
2. Webserver-Plugin (Apache mod, IIS, etc.) oder FastCGI
3. NodeJS & C++-Addon (http://nodejs.org/docs/latest/api/addons.html)
4. Eigenes PHP-Modul

1., 2. & 3. sind Varianten vom gleichen Prinzip.

Vielen Dank für deine Vorschläge! Ich sollte dabei noch erwähnen, dass es sich bei der DLL um eine COM (MS Comp. Object Model) DLL handelt, die lediglich in Windows registriert und nicht im Code (bis auf den Header) eingebunden werden muss. Ändert das etwas an deinen Vorschlägen?

robobimbo
2012-05-03, 19:48:35
Hm, ich hab da auch nicht den Durchblick - aber vielleicht bietet sich für sowas auch der Native-Client vom Google Chrome an?

http://code.google.com/p/nativeclient/wiki/NativeClientInGoogleChrome

xxxgamerxxx
2012-05-03, 22:27:25
Wenn es eine COM DLL ist, dann müsstest du das ganze local im Internet Explorer (lokal auf dem Client) über VBScript ansprechen können. Allerdings musst du dann den Internet Explorer so konfigurieren, dass er zumindest für die vertrauenswürdige Zone die entsprechenden Rechte hat.

Wenn die DLL auch auf einem Server laufen kann, dann kannst du die COM DLL auch recht einfach über Visual Studio z.B. in ein ASP.NET Projekt einbinden (oder eine andere Technologie).

Du könntest auch eine WPF Anwendung als XBAP erstellen (läuft auch im Internet Explorer, hat aber nix mit HTML zu tun) und dort die COM DLL einbinden. Aber auch hier, musst du das erst mal die erforderlichen Rechten prüfen.

Coda
2012-05-03, 23:11:48
Vielen Dank für deine Vorschläge! Ich sollte dabei noch erwähnen, dass es sich bei der DLL um eine COM (MS Comp. Object Model) DLL handelt, die lediglich in Windows registriert und nicht im Code (bis auf den Header) eingebunden werden muss. Ändert das etwas an deinen Vorschlägen?
Das hättest du erwähnen sollen. Mit COM kenne ich mich leider nicht gut genug aus, aber ich denke dann bist du wohl am besten mit ASP.NET bedient.

robobimbo
2012-05-04, 19:56:43
Ein COM+ Objekt solltest Du nach entsprechender Registrierung auch per Javascript ansprechen können, nach dem Motto: var o = new ActiveXObject("progid.class");

Zumindest mit Lotus Notes hab ich das in der Arbeit auch schon mal gemacht.