
Das dhRichClient3-Toolset ist als Binary Public Domain 
und ist hauptschlich als vbRuntime-Erweiterung gedacht,
mit dem Ziel, die Abhngigkeiten zum COM-basierten MS-
Toolstack zu verringern. Es enthlt somit unter anderem
Alternativklassen fr z.B. DAO/ADO/JET, MS-XML, DCOM, 
das Scripting-Dictionary, etc.). 

Darber hinaus ist es mglich, das Toolset fr regfree COM
einzusetzen (Lade- bzw. Instanziierungsmglichkeiten fr
ActiveX-Dlls - ohne SxS) und es kann ebenfalls dazu benutzt 
werden, "ActiveX.Exen" zu ersetzen da es Untersttzung fr einen
neuen, relativ leicht verstndlichen Threading-Ansatz bietet,
der unter der Haube mit Named-Pipes arbeitet und deshalb nicht
nur InProcess-, sondern auch Cross-Process funktioniert.
Die auf den entsprechenden Threads erzeugten Thread-Objekte
werden hierbei ebenfalls regfree instanziiert - direkt aus dafr
vorgesehenen, "normalen" AX-Dlls heraus. Die so erzeugten
Thread-Objekte sind multiclient-fhig und erlauben somit
auch die Abbildung von Singleton-Szenarien, welche bisher
in VB-Classic blicherweise mit AX-Exen (und ThreadPool-Setting=1)
umgesetzt wurden.

Das Toolset darf kommerziell genutzt werden und besteht derzeit aus:
dhRichClient3.dll (COM-Dll - bentigt Registrierung auf der Entwicklermaschine)
DirectCOM.dll (Windows-Standard-Dll - Keine Registrierung)
sqlite36_engine.dll (3.6.14, Windows-Standard-Dll - Keine Registrierung)
(eine cairo-wrapper-AX-Dll und ein neues VB-WidgetSet erscheinen demnchst)

Viele der Toolset-Funktionalitten (Klassen) erfordern 
inzwischen W2K oder hher - ich bitte um Verstndnis dafr -
aber dieser "Schnitt" macht es mir mglich, bei der Entwicklung
neuer Toolset-Funktionen und auch des neuen Widget-Sets schneller 
voranzukommen.



Installation auf einer Entwickler-Maschine:
Bitte das Toolset auf die lokale Platte kopieren
(z.B. in einen Folder C:\dhRichClient3\..)
dann die AX-Dll (dhRichClient3.dll) dort registrieren.
(Inzwischen ist ein einfaches Batch-File 'register.bat'
 enthalten, fr den Fall, man will nicht seine eigenen
 Registrier-Helferlein benutzen (bzw. regsvr32 auf
 einer Konsole eintippen) -
 das Batch-File ist ebenfalls hilfreich fr Vista-User,
 die das File dann mittels Rechts-Click und "Als Admin
 ausfhren" dann direkt "abfahren" knnen.

 

Anders als in frheren Versionen, bentigt version-3 
jetzt nicht mehr die Platzierung von DirectCOM.dll und
sqlite36_engine.dll in einem der Standard-Systempfade
wie z.B. \System32\.


Verteilung (und ein paar Kommentare zur regfree-Benutzung):
Die meisten der Demos in:
www.datenhaus.de/Downloads/dhRichClient3-Demo.zip
benutzen die Toolset-Klassen auf "normale Art und Weise",
solange sie innerhalb der VB-IDE abgefahren werden. 
(Soll heissen, mit dem blichen Registry-Lookup fr eine 
"normal registrierte" COMponente, unter Benutzung des
 New-Operators fr die Objekt-Instanziierung).

Zeigt der "RunningInIDE()-check" jedoch, dass eine Demo
aus einem Binary (blicherweise eine "Exe"), heraus ausgefhrt
wird, dann wird versucht, die Toolset-Klassen regfree
zu instanziieren - die Framework-Dlls werden in diesem
Falle blicherweise im App.Path der Demos gesucht.
Dennoch ist das Platzieren der Toolset-Dlls in den
Demo-Ordnern fr das Ausfhren kompilierter "Demo-Exen"
nicht zwingend ntig - die Demos stellen in dem Falle
dann eine entsprechende Frage, und lassen sich dann
auch (wie in der IDE) registrybasiert laden bzw. starten.

Man kann diesen Ansatz (welcher ber ein kleines *.bas-
Modul namens 'modFactory.bas' sichergestellt wird) so 
auch in seinen eigenen "real-world" Projekten verwenden.
Und wie weiter oben schon erwhnt, das regfree-Loading
ist nicht nur gegen die Toolset-Klassen mglich, sondern
funktioniert ebenso auch gegen eigene ActiveX-Dlls.
Zustzliche Infos bzgl. der Factory-Helferobjekte
aus modFactory.bas finden sich in _ReadMe_Factory.txt
die diesem Paket beiliegt und in den entsprechenden
Modulen selbst. 

Die dhRichClient3.dll hngt ab von sqlite36_engine.dll und
DirectCOM.dll und kann nicht "standalone" benutzt werden - 
was fr die beiden Std-Dlls jedoch nicht gilt.
(Wer also nur den regfree-support aus DirectCOM.dll bentigt,
muss auch nur diese kleine Dll mit seinen Anwendungen ausliefern.

Ok, schlussendlich noch eine Anmerkung zu UPX - zwei der framework-
dlls (dhRichClient3.dll und sqlite36_engine.dll) sind UPX-compressed,
um ihre Download-Gre klein zu halten - und um die Dll-Ladevorgnge
etwas zu beschleunigen.
Wer kein "Fan von UPX" ist (z.B. verhalten sich einige der 
einfacheren Viren-Scanner teilweise etwas "bervorsichtig" 
im Falle UPX-komprimierter Binaries), dann bitte einfach
De-UPXen wer mchte.
Das Paket enthlt zu diesem Zweck UPX.exe und ein entsprechendes
BatchFile.
dhRichClient3.dll entpackt sich in diesem Falle zu ca. 1.4MB -
und sqlite36_engine.dll zu ca. 540kB.


Verfgbare dhRichClient3-Funktionalitt (-Klassen):

SQLite-Klassen - ein ADO-hnlicher Ersatz basierend auf der groartigen sqlite-engine (www.sqlite.org)
SimpleXML-Klassen -ein unicode-fhiger XML-Parser mit DOM und SAX-Support
cSortedDictionary - superschnelle Alternative zum Scripting.Dictionary
cCollection - hnlicher Ansatz wie oben, jedoch kompatibel zur VB-Collection
Report-Klassen - eine enhanced-metafile-basierte WYSIWYG-Reporting-engine 
Socket-Klassen - TCP-Server und -Client-Klassen (winsock.ocx-Alternative)
cCrypt - Strong-Encryption-, Hashing-, Encoding- und Kompression
cEventCollection - Eventsupport fr COM-LateBound-Objekte in einer zentralen "Senke"
OpenOfficeEmbed-Klassen - zum Einbetten von OpenOffice-Dokumenten in VB-Forms
cFormula - ein Formel-Evaluator, der Variablen, Arrays and Objekte im Eval-Term untersttzt
cTimer - ein klassenbasierter Ersatz fr den VB-Timer
RPC-Klassen - Client- *und* Serverseite (inklusive eines ThreadPools) als schnelle DCOM-Alternative 
DC, DIB und DDB-Klassen - GDI-Kapselung mit Support fr z.B. ByteArray-Basiertes (Alpha-)Icon-Load, AlphaBlending etc.
cRegFree - Support fr das neue pipe-basierte Threading und regfree Class-Instanziierung
cConstructor - ein Instanziierungs-Helfer, der auch Optionale Init-Parameter fr die meisten Klassen anbietet
cFactory - der "main-entry-point" in das Framework, welcher die beiden letztgenannten Klassen enthlt


Viel Spass damit!

Olaf Schmidt (os@datenhaus.de)
(im Mrz 2009)

