Ich mag Doppelposts zwar nicht. Aber ich mag es auch nicht, für jedes Thema einen neuen Thread aufzumachen, da sich der folgende Text auf die zu Grunde liegenden Fragen meinerseits bezieht.
1. Javascript
cX bietet zwar die Option, Javascript Code auszuführen. Allerdings scheint es nur zusammen mit dem Assembly Interop(dot)MSScriptControl(dot)dll zu funktionieren, wie es in der Doku beschrieben steht.
Getriggert mit folgender Zeile. Aber auch mit weiteren Codes aus externen JS-Files getestet:
cX4Web Code
Was ist das?
1 Externe Funktion: JavaScript, 14 Zeichen Code
cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen
(1 Zeilen, cX 5.0.10.3, Lizenz: Pro)
Dieses Assembly ist allerdings nur schwer auszumachen. Wenn man direkt danach sucht, bekommt man nur Hinweise auf alte Versionen bis 2013. In den aktuellen .NET SDK's ist diese Datei auch nicht enthalten. Es gibt Seitens Microsoft kaum Infos zu der Datei und einzeln laden kann ich sie nur von irgendwelchen Seiten, die ich in keinster Weise vertrauen möchte. Ich vermute mal, das MS die Interop-Funktionalität mittlerweile anders gelöst hat und deswegen diese Datei einfach nicht mehr existiert. Und in der Doku steht eh, das es nur unter Windows funktioniert. Ich bräuchte es aber auf einem Linux-Server. Also fällt die Möglichkeit raus.
2. Bcrypt oder PBKDF2 per OLE-Befehl
In der Testumgebung habe ich es geschafft, ein externes Assembly so einzubinden, das ich keine Fehlermeldung bekommen. Dazu habe ich die BCrypt.NET-Next Assembly aus NuGet geladen. Aber anscheinend bekomme ich die Methode nicht aufgerufen, mit der ich einen String zu einem datenbankfähigem BCrypt-Hash umwandeln kann. Ich vermute mal, das es daran liegt, das die Methode statisch ist. Da würde mich einmal interessieren, ob es in zukünftigen Versionen möglich ist, eine Fehlermeldung auszugeben, wenn etwas nicht funktioniert. Ich bin mir sicher, das eine spezifische Fehlermeldung zum Problem nur schwer bei kompilierten Assemblies zu erzeugen ist. Ich kann mir aber nicht vorstellen, das eine Funktionen in einem Assembly einfach nichts tut und cX das nicht merkt. Ein einfaches "geht so nicht, Dude" reicht mir völlig. Aber das Ding sagt und macht halt einfach nichts.
PBKDF2 hingegen ist in System(dot)Security(dot)cryptography direkt im Framework enthalten. Allerdings scheint dieses über cX garnicht funktionieren zu wollen. Ich erhalte dabei folgenden Fehler:
Ich hatte die Methode erst einmal ohne Parameter aufgerufen um zu schauen, ob ich da etwas gemeldet bekomme, mit dem man etwas anfangen kann. Aber hier scheint es schon bei Instanzierung ein Problem zu geben. Folgend getriggert:
cX4Web Code
Was ist das?
1 OLEObjekt ID='PBKDF2', Name='System.Security.Cryptography.Rfc2898DeriveBytes', Eigenschaft='Pbkdf2'
cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen
(1 Zeilen, cX 5.0.10.3, Lizenz: Pro)
Worauf muss man denn bei den Assemblies achten? Wie müssen die Klassen aussehen? Die Dokumentation wirft da nicht viel aus. :/
Fazit
Da ich diese Erweiterungen nur für den Fall gebraucht hätte, cX auf einem Webserver zu nutzen, fällt dieser Einsatz mit cX für mich erstmal raus. Bin ich aber auch mittlerweile nicht wirklich traurig drum. Wenn man mal darüber nachdenkt, hat PHP einfach einen unschlagbaren Vorteil. Es läuft nahezu auf jeden Webspace und Webspace kostet nen Witz. Für cX hätte ich einen vServer bzw. dedicated Server gebraucht.

Und mit dem FatFreeFramework ist mit PHP z.B. ein Webdienst schnell gemacht. Das hat BCrypt und Markdown direkt mit integriert. Komm Schwamm drüber. Ich denke zum bauen von Desktop-Programmen und Konsolen-Tools eignet sich cX deutlich besser. Dafür wird es vermutlich von den allermeisten genutzt. Und da habe ich bei meinen Tests festgestellt, das da durchaus deutlich mehr potenzial existiert. Für das Web serverseitig ist für mich KeyDerivation (PBKDF2/BCrypt/Argon2) für Passwörter unerlässlich, JWT für Webservices mittlerweile Standard und Markdown für usergenerierten Content unerlässlich. Wenn ich eine Webseite zur Verfügung stelle, dann mache ich das Design und lass es mir nicht mit HTML oder BBCode versauen

Aber wenn es mehr Infos zu dem Thema Assemblies über OLE einbinden und Javascript über Externe Funkion geben würde, wäre ich trotzdem extrem dankbar. Denn uninteressant ist das nicht. Vielleicht kann man da auch etwas Wrappen, wenn es nicht direkt lauffähig ist.