Articles menu

 

The best components for the best developers

maj 01. 2007
Running Win32 kbmMW application servers on Linux using WINE
User article

apr 03. 2007
Performance comparison of kbmMemTable Std/Pro and AnyDAC CDS

nov 15. 2006
The king has died...
Borland/CodeGear

jun 16. 2006
The story of 3rdparty announcements and reactions on them
General

maj 29. 2006
Solving the 'cannot find drf file' problem when compiling packages.
Delphi

feb 21. 2006
kbmMWCnnfig.inc explained
kbmMW

feb 14. 2006
ReportBuilder 10 enduser report design with kbmMW
kbmMW/RB10

feb 09. 2006
Tips to setup IIS/ISA to operate as proxy between kbmMW client and server.
kbmMW/IIS

feb 08. 2006
Some thoughts about Borlands decision to split out its IDE/Tools division
Borland

jan 08. 2006
Things to be aware about when moving from Datasnap to kbmMW
kbmMW related

jan 08. 2006
Long running client controlled (stateful) transactions and the query service.
kbmMW related

jan 08. 2006
Secure messaging tips.
kbmMW WIB related

jan 08. 2006
Updating time in MSAccess Database with ADO
kbmMW related

jan 08. 2006
Upgrade from kbmMW v1 to kbmMW v2
kbmMW related

jan 08. 2006
Cross database and macro support
kbmMW related

kbmMWCnnfig.inc explained

kbmMW

As kbmMW is a highly flexible framework, with tons of optional plugins for 3rdparty database API's, transports, compression and security methods etc, a configuration system is needed.

During installation of kbmMW, a list of questions are asked where one can put checkmarks in the features that kbmMW should support. What is essentially happening is that the installation process creates a special file - kbmMWConfig.inc

After the creation of the file, its the responsibility of the developer to maintain this file. If kbmMW is used in multiple environments, some things, like database API's etc, may be available in one environment (eg. Win32) while others may not (eg. Net) etc.

For that reason kbmMWConfig.inc supports using preprocessor statements like {$IFDEF DOTNET} etc. A list of the kbmMW defined definitions will follow.

This article will list the currently (at the point when the article is written) available definitions and what they mean.

 

Predefined definitions.

Good for {$IFDEF...} etc. directives in your kbmMWConfig.inc file.

Definition Explanation
LEVEL3 Delphi 3/C++Builder 3 or higher
LEVEL4 Delphi 4/C++Builder 4 or higher
LEVEL5 Delphi 5/C++Builder 5 or higher
LEVEL6 Delphi 6/C++Builder 6 or higher
LEVEL7 Delphi 7 or higher
LEVEL9 Delphi 2005 or higher
LEVEL10 BDS 2006 or higher
DELPHI The IDE is using the Delphi language.
BCB The IDE is using C++ language.
WIN32 The IDE is running under Win32.
LINUX The IDE is running under Linux.
DOTNET The IDE is running within .Net

kbmMW Edition definitions.

One of the following definitions must be in the kbmMWConfig.inc file:

Definition Explanation
KBMMW_FREEWARE_EDITION The installation is a kbmMW Freeware Edition.
KBMMW_STANDARD_EDITION The installation is a kbmMW Standard Edition.
KBMMW_PRO_EDITION The installation is a kbmMW Professional Edition.
KBMMW_PROPLUS_EDITION The installation is a kbmMW Pro Plus Edition.
KBMMW_ENTERPRISE_EDITION The installation is a kbmMW Enterprise Edition.

kbmMW general definitions.

The following definitions controls kbmMW general setup.

Definition Explanation
KBMMW_NODEBUG If defined, no debug functions will be compiled in. Performance wise its not going to make huge difference as debugging is default disabled at runtime.
KBMMW_OPTIMIZED_MEMORYSTREAM If defined, a better optimized memory stream class will be used instead of the default one. Since kbmMW internally manipulates streams bigtime, it will often result in some performance improvement.
KBMMW_CONSOLE_SUPPORT If defined, the units Dialogs/QDialogs are not required. This is specially interesting on Linux as this allows for application servers that can run as normal console apps, without any X.11 requirements.
KBMMW_ZIPPED_USE_FASTZLIB If defined, kbmMW will use FastZLib instead of Borlands Zlib for compression.
KBMMW_SUPPORT_KBMMEMTABLE_PRO If kbmMW should supportkbmMemTable Pro Additions. Enabling this will improve dataset performance (specially on large datasets... ie. 50.000 or more records), but do require a complete installation of kbmMemTable Pro Additions.

kbmMW transport definitions.

The following definitions controls which transport mechanisms kbmMW should support. Only enable the ones that you need. Remember for some of the transport options, 3rdparty libraries must be correctly installed beforehand.

Definition Explanation
KBMMW_LOCALTRANSPORT_SUPPORT If defined, a local transport is made available. The local transport allows putting a client and an application server into the same executable without having to alter the functionality or code of either.
KBMMW_INDYTCPIPTRANSPORT_SUPPORT If defined, TCP/IP based request/response type transports based on the Indy sockets library is supported. The actual version of Indy to support must be specified seperately. See further down.
KBMMW_DXSOCKTCPIPTRANSPORT_SUPPORT If defined, TCP/IP based request/response type transports based on the DXSocks sockets library is supported. DXSocks v3 and Oblivion.
KBMMW_SYNAPSETCPIPTRANSPORT_SUPPORT If defined, TCP/IP based request/response type transports based on the Synapse sockets library is supported.
KBMMW_ISAPITRANSPORT_SUPPORT If defined, ISAPI compatible request/response type transports based on either Indy or DXSocks libraries (see further down) is supported.
KBMMW_NEXUSDBTRANSPORT_SUPPORT If defined, request/response type transports based on the NexusDB communication libraries is supported. In addition define KBMMW_USING_NEXUSDB2 if NexusDB v2 is used. For v1, simply dont define it.
KBMMW_INDYUDPSAFTRANSPORT_SUPPORT If defined, UDP broadcast/peer2peer messaging type transports based on the Indy sockets library is supported.
KBMMW_INDYTCPIPSAFTRANSPORT_SUPPORT If defined, TCP/IP hub/spoke messaging type transports based on the Indy sockets library is supported.
KBMMW_SYNAPSEUDPSAFTRANSPORT_SUPPORT If defined, UDP broadcast/peer2peer messaging type transports based on the Synapse sockets library is supported.
KBMMW_STREAMSEC_SSHSAFTRANSPORT_SUPPORT If defined, SSH hub/spoke messaging type transports based on StreamSec's v3 SSH implementation is supported.

kbmMW transport plugin definitions.

The following definitions controls which transport plugins kbmMW should support.

Definition Explanation
KBMMW_TRANSPORTPLUGIN_SS2_TLS If defined, StreamSec II TLS/SSL transport plugin is supported providing TLS/SSL support on TCP/IP request/response type transports.

kbmMW transport details.

The following definitions controls details related to which transport mechanisms kbmMW should support. Only enable the ones that you need. Remember for some of the transport options, 3rdparty libraries must be correctly installed beforehand.

KBMMW_USING_INDY_8_00_23If defined, kbmMW supports Indy 8.0.23.
KBMMW_USING_INDY_9If defined, kbmMW supports Indy 9.
KBMMW_USING_INDY_10If defined, kbmMW supports Indy 10.1.x unless KBMMW_SUPPORT_INDY_10_0_52 is also defined, in which case Indy 10.0.52 is supported.
KBMMW_ISAPITRANSPORT_USING_DXSOCKIf defined, kbmMW's ISAPI support will use DXSocks instead of Indy.

kbmMW transport stream formats.

The following definitions controls which transport stream formats kbmMW should support. A transport stream format is usually not tied to a specific transport mechanism/API. By default the transport stream format STANDARD is always available.

KBMMW_HTTP_TRANSPORTSTREAM_SUPPORTHTTP tunneling streamformat. The format supports HTTP proxy servers etc. to allow access thru even quite strict firewall setups.
KBMMW_ZIPPED_TRANSPORTSTREAM_SUPPORTCompressed version of STANDARD. Its using Zip compression. It require the Zlib or FastZLib libraries to be available.
KBMMW_ZIPPED_HTTP_TRANSPORTSTREAM_SUPPORTTo be understood as COMPRESSED within HTTP. It require the Zlib or FastZLib libraries to be available.
KBMMW_SOAP_TRANSPORTSTREAM_SUPPORTSOAP streamformat. The actual SOAP definition used is defined in kbmMW.wsdl which is part of the kbmMW installation.
KBMMW_XML_TRANSPORTSTREAM_SUPPORTXML streamformat. Provides data as XML. The actual XML format is explained in a whitepaper. Please check kbmMW/University page.

kbmMW transport stream details.

The following definitions controls details related to transport stream formats.

KBMMW_V200_COMPAT_STRINGCONVERSIONIf defined, ensures that the streamformat is kbmMW v2 compatible. It is usually recommended to use the latest streamformat version and thus not recommended to enable this definition.

kbmMW cryptography support.

The following definitions controls which cryptography libraries kbmMW should support.

KBMMW_CRYPT_SS2StreamSec II syncrone cryptography.
KBMMW_CRYPT_DCPCRYPT2DCPCrypt v2 cryptography.

kbmMW special services support.

The following definitions controls which special services kbmMW should support.

KBMMW_JAVA_SERVICE_SUPPORTIf defined kbmMW supports a Java supporting service, which means that business code can be written in Java.

ReportBuilder DADE support.

The following definitions controls if kbmMW should support ReportBuilder DADE and which version.

KBMMW_RBDADE_SUPPORTIf defined kbmMW supports ReportBuilder DADE.
KBMMW_USING_5_1_OLDER_RBIf defined and KBMMW_RBDADE_SUPPORT is also defined, kbmMW supports ReportBuilder v5.1 and older.
KBMMW_USING_7_NEWER_RBIf defined and KBMMW_RBDADE_SUPPORT is also defined, kbmMW supports ReportBuilder v7 and newer.

Database API support.

The following definitions controls what databases kbmMW natively should support.

KBMMW_BDE_SUPPORTBorland Database Engine.
KBMMW_MT_SUPPORTkbmMemTable backend support. I.e. use a kbmMemTable as a source for clients to obtain data from.
KBMMW_DBX_SUPPORTBorland DBExpress support.
KBMMW_FF2_SUPPORTTurboPower FlashFiler 2 support.
KBMMW_DBISAM3_SUPPORTElevateSoft DBIsam v3 support.
KBMMW_DBISAM4_SUPPORTElevateSoft DBIsam v4 support.
KBMMW_ADS6_SUPPORTAdvantage Database Systems v6 or newer support.
KBMMW_IBX5_SUPPORTBorland IBExpress support.
KBMMW_IBO_SUPPORTIBObjects support.
KBMMW_ADOX_SUPPORTBorland ADOExpress support.
KBMMW_DADO_SUPPORTDeersoft ADO support.
KBMMW_ZEOS6_SUPPORTZeos v6 support.
KBMMW_ZEOSMSSQL_SUPPORTZeos v5 for MSSQL support.
KBMMW_ZEOSMYSQL_SUPPORTZeos v5 for MySQL support.
KBMMW_ZEOSPROGRESS_SUPPORTZeos v5 for PostgreSQL support.
KBMMW_ZEOSDB2_SUPPORTZeos v5 for DB2 support.
KBMMW_ZEOSORACLE_SUPPORTZeos v5 for Oracle support.
KBMMW_ZEOSIB_SUPPORTZeos v5 for Interbase support.
KBMMW_MYSQLDAC_SUPPORTMySQLDAC support.
KBMMW_DOA_SUPPORTDirect Oracle Access support.
KBMMW_ODAC4_SUPPORTODAC v4 or v5 Oracle support.
KBMMW_DAO_SUPPORTDiamond Access support.
KBMMW_X_SUPPORTkbmMW Cross Adapter support (Recommended!).
KBMMW_NEXUSDB_SUPPORTNexusDB v1 or v2 support.
KBMMW_SD_SUPPORTSQLDirect support.
KBMMW_UIB_SUPPORTUnified Interbase support.
KBMMW_FIB_SUPPORTFIB (Interbase/Firebird) support.
KBMMW_ABS_SUPPORTAbsolute DB support.
KBMMW_APOLLO_SUPPORTApollo DB support.
KBMMW_SDAC3_SUPPORTSDAC 3 (MSSQL) support.
KBMMW_POSTGRESQLDAC_SUPPORTPostgreSQL DAC support.
KBMMW_NATIVEDB_SUPPORTNativeDB support.

Kim Madsen


(Top)

 
 

User comments

Hi Kim, I've been putting together an app which uses both database query services and custom services.  So far ...
(more)

Before I ask my questions and give my comments, I want to say that I've had two job interviews this week and you ...
(more)

I think kbmMW is the most powerful, flexible, innovative, well supported framework available for Delphi today.
I ...
(more)

The first time I took a glance at it I thought ... HUH ?
 .. but now I've had the time to take a better look ...
(more)

 
 
 
CodeGear Technology Partner Components4Developers is the only major 3rdparty CodeGear Technology Partner approved n-tier vendor!

Copyright© 2001-2008 Components4Developers - All rights reserved