[C++ Builder]

C++ Builder 6 nyheter - sid 5 av 7
«Föregående sida | Startsidan Nyheter | Nästa sida »

Databaser

Med C++ Builder 6:s förbättrade BDE-stöd (bl a för InterBase 6.0 och 6.5), ADO 2.5-stöd (även i Pro), InterBaseExpress (IBX), nya enkla, snabba och portabla dbExpress samt ClientDataSet med minnestabeller och XML-baserade MyBase har Borland skapat ett mycket kraftfullt databaskoncept, vars enda motstycke är Delphi 6:s dito. Här en bakgrund:

T om version 4 var all databashantering i C++ Builder baserad på Borland Database Engine (BDE). I C++ Builder 5 kom så stöd för Microsofts ADO, samt  direktstöd för Borlands InterBase (IBX).

ADO i Pro-versionen 
Nya BDE har stöd för InterBase 6.5 och ADO-stödet, som numera kallas dbGo for ADO (istället för "ADO Express"), finns nu också i Professional-versionen.

För såväl BDE som ADO gäller att databaskommunikationen hanteras av en, från C++ Builder-applikationen, extern databasmotor (BDE eller ADO), som via sina egna drivrutiner pratar med klientdrivrutiner som hör till databasen. Det finns alltså många länkar i kedjan mellan applikation och databas.
En fördel med BDE är att den erbjuder ett generellt programmeringsgränssnitt mot olika SQL-databaser och även mot enklare filbaserade databaser som Paradox, dBASE och Access. Dessutom har den möjliggjort kopplingar mellan helt olika typer av databaser (t ex master-detalj mellan InterBase och SQL Server). Det samma kan sägas om ADO.

En stor nackdel är dock att man vid distribution av databasapplikationer, också måste installera och konfigurera en separat databasmotor, dvs BDE eller ADO. Detta har gjort installation av databasapplikationer mer komplex och felbenägen (versionkonflikter, m m). Det har också försvårat distribution av lättviktiga databasapplikationer.

En annan nackdel med BDE/ADO är sämre möjligheter att styra kommunikationen med databasen på applikationssidan, eftersom all trafik måste passera BDE/ADO. Data buffras ofta på såväl BDE/ADO-nivå som applikationsnivå med dubbelarbete, sämre prestanda och ökat minnesbehov som resultat.

ClientDataSet med MyBase XML

I senare C++ Builder (Enterprise)-versioner introducerades en ny teknik för att skriva tunna databasklienter och flerskiktsapplikationer, kallad MIDAS. En central komponent i MIDAS är TClientDataSet. 

I C++ Builder 6 har den förbättrade TClientDataSet och dess providermodell fått en central roll. TClientDataSet-komponenten är navet i såväl flerskiktslösningar, klient-serverapplikationer (tvåskikt) som vid arbete mot lokala tabeller (enskikt).

I C++ Builder 6 finns ClientDataSet-komponenten redan i Pro-versionen. Med ClientDataSet kan man skriva applikationer som arbetar direkt mot lokala tabellerXML- eller CDS-format (CDS är ett binärt format) utan att gå via BDE eller ADO. Man har döpt den lokala XML-baserade databasmotorn till MyBase XML.


Samma kopplingsteknik fungerar i Delphi 6, Kylix 1 och 2 samt C++ Builder 6

MyBase XML innehåller en slimmad, lokal XML-databasmotor för snabb databasbearbetning direkt i minnet. MyBase kräver ingen speciell installation eller konfigurering vid distribution av applikationer. MyBase XML har stöd för: 

MyBase-baserade applikationer är portabla mellan Windows och Linux. MyBase datafiler är dessutom portabla med Delphi 6 (Windows) och Kylix (Linux) och kommande C++ Builder för Linux.

Man kan direkt komma åt minnesdata i en ClientDataSet på XML-format via den nya XMLData-egenskapen.

ClientDataSet via Provider

En ClientDataSet kan också hämta och skicka data via en TDataSetProvider-komponent, som i sin tur hämtar data från exv

Istället för att arbeta direkt mot originaldatabasen arbetar man med en cachad kopia i minnet. Först när man väljer ApplyUpdates uppdateras originaldata. Man kopplar alla sina visuella databaskontroller till denna ClientDataSet, istället för direkt koppling till de databasspecifika komponenterna. Detta ger många fördelar – bl a en enhetlig modell oavsett databastyp och vald databaskoppling (BDE, ADO, IBX, dbExpress), mycket bra prestanda och dessutom liten belastning av databasservern och nätverket.

Även DataSetProvider ingår numera i C++ Builder 6 Pro. 

Nya dbExpress

Som alternativ till BDE, ADO och IBX finns i C++ Builder 6 en nyutvecklad teknik för databaskopplingar, dbExpress.

I likhet med BDE och ADO är dbExpress databasneutral, dvs ger ett enhetligt programmeringsgränssnitt oavsett databas.
Till skillnad mot BDE och ADO, använder dbExpress inte någon extern databasmotor utan kommunicerar direkt via egna dbExpress-drivrutiner (DLL:er) med resp klientprogramvara och databas.

dbExpress har många trevliga egenskaper som att vara:

Konfigurering sker med enkla INI-filer (textfiler). I Pro-versionen av C++ Builder 6 ingår drivrutiner för:

En utvecklingslicens av InterBase 6.5 för egen testutveckling medföljer Pro och Enterprise.

I C++ Builder 6 Enterprise ingår dessutom drivrutiner för:

Från tredjepartsleverantörer finns fler drivrutiner, bl a generella dbExpress-ODBC-drivrutiner och dbExpress-ADO-drivrutiner som gör det möjligt att jobba mot databaser som har ODBC- eller ADO-stöd.
dbExpress-baserade databasapplikationer är portabla mellan Windows och Linux och rekommenderas därför i CLX-applikationer.

dbExpress-komponenter

I dbExpress ingår följande komponenter:


Som svar på SQL-frågor returnerar SQLDataSet ett resultatset utan ytterligare tolkning. Till skillnad mot BDE och ADO, så buffras inte data lokalt av dbExpress, varför navigering genom data är enkelriktad (endast First- och Next-metoderna kan användas). Man kan inte heller automatiskt uppdatera data som erhållits som svar på en SELECT-sats. Man måste istället vid behov skriva egna INSERT- och UPDATE-kommandon för detta.

Egentligen är inte detta konstigt - dbExpress fungerar nämligen precis som SQL självt. Den stora vinsten är att dataåtkomsten är mycket snabb utan onödigt tingel-tangel - när man inte behöver det.

För att underlätta konvertering från BDE-baserade C++ Builder-applikationer finns också komponenterna:

 – men egentligen kan allt utföras med den mer generella TSQLDataSet ovan. 

Logga SQL-trafiken

Med TSQLMonitor kan man enkelt logga datatrafiken och spara alla SQL-kommandon som har utförts till en stränglista eller loggfil.

Fri navigering och uppdatering?

I många situationer har man dock behov av fri, dubbelriktad navigering och enkel uppdatering av data. Hur löser man detta med dbExpress?

Jo, man kopplar sin SQLDataSet (alt SQLQuery eller SQLTable) via en TDataSetProvider-komponent, som i sin tur kopplas till en TClientDataSet. Via en TDataSource kopplas sedan alla användarkontroller.

Nu sköter ClientDataSet-komponenten om buffring, möjliggör fri navigering, uppdatering, filtrering, lokal indexering, och frikoppling från den externa databasen. Med ApplyUpdates skickas lokala uppdateringar tillbaka via dbExpress till den externa databasen.

Man kan t ex ansluta en bärbar dator till nätet, koppla upp sig mot en InterBase-databas via dbExpress, cacha och lagra data lokalt i en MyBase XML-fil, koppla loss från nätet bearbeta och uppdatera data i hemmet eller på resan. Tillbaka på kontoret ansluter man sig på nytt till nätet och synkroniserar automatiskt (ApplyUpdates) sina lokala uppdateringar med InterBase-databasen.

dbExpress + ClientDataSet är en suverän kombination som fungerar lika bra i lokala applikationer (enskiktsapplikationer), klient/ server-applikationer (tvåskikts) som flerskiktslösningar!

Snabbkoppling

Man kan förenkla kopplingen genom att ersätta SQLDataSet + DataSetProvider + ClientDataSet med en enda komponent, 

som i sig kombinerar dessa tre komponenter.

ClientDataSet kan också via providerkomponenter kopplas till de alternativa databasteknikerna BDE, IBX och ADO. För BDE och IBX finns färdiga snabbkomponenter som gör detta: 

Nya fälttyper

TFMTBCDField är en ny fälttyp för äkta BCD-fält (Binary Coded Decimals) som kan användas vid exakta matematiska beräkningar. Ny TSQLTimeStampField för datum/tid i dbExpress.

DataSnap

DataSnap (Enterprise-versionen) är en utveckling ur MIDAS-tekniken i C++ Builder 3-5 för att skriva distribuerade databasapplikationer (flerskiktslösningar).

Med DataSnap kan du bygga serverapplikationer tillsammans med tunna Windowsklienter, alternativt webb-baserade klienter eller varför inte med koppling till webbtjänster.

 DataSnap Treskiktsapplikation med C++ Builder mellanskikt (applikationsserver) och C++ Builder Windowsklient. Klicka på bilden för full storlek! 

DataSnap erbjuder ett stort urval av kommunikationsmöjligheter - DCOM, TCP/IP, HTTP, SOAP och CORBA.

DataSnap-applikationer baseras på ClientDataSet och providers, men istället för att direkt koppla en ClientDataSet till en provider, placerar man providers tillsammans med databasspecifika komponenterna (BDE; ADO, dbExpress, IBX) i en separat serverapplikation (mellanskiktet).
Som "container" används en specell fjärrdatamodul (man väljer mellan Remote Data Module,  Transactional Data Module för COM+/MTS-baserade servrar, CORBA Data Module eller SOAP Data Module). En nyhet i C++ Builder 6 är att en applikationsserver kan ha flera fjärrdatamoduler, mot tidigare enbart 1.

I klientapplikationen (om den är Windowsbaserad) använder man ClientDataSet, tillsammans med visuella kontroller. Varje ClientDataSet kommunicerar med en provider i servern via någon fjärrkopplingskomponent. Du kan välja mellan DCOM, TCP/IP Sockets, HTTP, CORBA eller SOAP som kommunikationsprotokoll.


På serversidan kan du koppla dig mot valfri databas och teknik (dbExpress, BDE, ADO, IBX). Du kan också utnyttja C++ Builder 6:s stöd för XML och XML-transformationer (se nedan).

De nya DataSnap-komponenterna TSharedConnection, TConnectionBroker och TLocalConnection förenklar val och byte av kommunikationsteknik.

Eftersom DataSnap-klienter baseras på ClientDataSet kan de, vid behov, arbeta frikopplat från servern. Data kan uppdateras lokalt och senare synkroniseras med serverdata vid förnyad uppkoppling (via ApplyUpdates). Detta ger också minimal server- och nätverksbelastning.

DataSnap förenklar installation av klientapplikationer. På klientsidan behöver man inte installera databasspecifika drivrutiner, databasmotorer som BDE eller ADO, utan endast den tunna C++ Builder-klienten och ev en extra DataSnap DLL (som inte behöver konfigureras). Om man så föredrar, kan man länka in denna DLL i applikationens EXE-fil och behöver då enbart distribuera programfilen.

Fr om december 2002 så ingår en fri distributionslicens för DataSnap-applikationer (kostade tidigare drygt 3000 kr per server).

Plattformsoberoende DataSnap

SOAP-baserad DataSnap i C++ Builder 6 är helt kompatibel med DataSnap i Delphi 6 och Kylix 2. Du kan skriva DataSnap-servrar med C++ Builder tillsamman med Windows-klienter kompilerade med Delphi 6 och Linux-klienter kompilerade med Kylix eller kommande C++ Builder för Linux. Du kan skapa Linux-baserade DataSnap-servrar kompilerade med Kylix 2 eller kommande C++ Builder för Linux, som anropas från Windows-klienter kompilerade med C++ Builder 6 eller Delphi 6!

«Föregående sida | Startsidan Nyheter | Nästa sida »
Webbskolan
Produktmatris PDF


[Startmenyn][Nyheter][Programmenyn][Företag][Kurser]

www.databiten.se
© 1997-2013 DATABITEN AB
E-post