You are on page 1of 12

Accessing Recordsets over the Internet

Dino Esposito
Download the code for this article:Cutting0300.exe (39KB)
n my humble opinion, recordsets re one o! the best so!t"re in#entions o! the lst millennium. $n generl
terms, recordset is sort o! bstrct dt type, holding dt s "ell s !unctions to del "ith them.
%ther dt ccess technologies use slightly di!!erent nmes !or recordset&li'e ob(ects, such s the )D%
resultset, the %*E DB ro"set, or the dynset used by D+% nd %rcle. ,hte#er you cll it, in e#ery cse
you h#e dt type implemented through collection o! C%- inter!ces. .his ob(ect encpsultes the
records nd pro#ides po"er!ul progrmming inter!ce !or mnipulting them.
/ntil the recent introduction o! +cti#e01 Dt %b(ects (+D%) 2.x, recordset "s bound to the records
output by dtbse 3uery. ,ith the relese o! -icroso!t1 Dt +ccess Components (-D+C) 2.0 o#er
yer go, %*E DB "s implemented s the core technology !or dt ccess in the -icroso!t model. +D%
becme the principl ob(ect model !or m'ing %*E DB ccessible !rom "ithin C%- utomtion nd script
en#ironments such s 4isul Bsic1, 5.-*, +67, nd ,indo"s1 6cript 5ost.
,ith +D% recordsets you cn chie#e the sme results (nd more) tht you used to get "ith )D%
resultsets or D+% dynsets, but not necessrily in the sme "y. )D% nd +D% re similr ob(ect models8
the di!!erences re mostly concentrted in the recordset ob(ect itsel!. +D% is less hierrchicl thn )D%
nd puts more ob(ects t the sme logicl le#el in the hierrchy. 9or exmple, "ith +D% you don:t need to
explicitly crete connection be!ore issuing commnd to dt source (s re3uired by )D%).
.here re deeper di!!erences bet"een +D% nd D+%. 9or more in!ormtion on this topic, h#e loo' t
;7orting D+% Code to +D% "ith the -icroso!t <et 7ro#ider,; by +lyss 5enry, in the .echnicl +rticles
section o! -6D= %nline (http>??msdn.microso!t.com?librry?en&us?dndo?html?dotodo.sp).
$n this column, $:ll explin "hy recordsets cn be considered generl&purpose dt continer !or ny
ppliction nd ho" you cn t'e d#ntge o! recordsets o#er the ,eb. $n prticulr, $:ll !ollo" up on
some issues "ith )emote 6cripting ()6) tht $ discussed in the <nury 2000 issue o! -icroso!t $nternet
De#eloper (http>??""".microso!t.com?mind?0@00?cutting?cutting0@00.sp). $:ll sho" you ho" to con#ert
recordset to <#6cript ob(ect, "hich is much esier to use thn n rry nd cn be sent bc' to the
client through )6. .hen $:ll !ocus on speci!ic !etures pro#ided by -icroso!t $nternet Explorer A.0 nd
greter tht help you mnge recordsets bet"een the bro"ser nd the ,eb ser#er. .hese technologies
include )emote Dt 6er#ices ()D6) nd dt binding. 6ee the sidebr, ;VBScript and Remote
Scripting,; !or detils bout using 4B6cript "ith )6.
Creatable Recordsets
+D% 2.x pro#ided t"o notble ne" dt ccess !etures> !ull support !or ny sort o! dt pro#ider nd
the introduction o! the principle tht recordsets re cretble ob(ects. +D% 2.x is built on top o! %*E
DB nd is cpble o! ccessing ny sort o! dt tht is "rpped nd exposed by n pproprite %*E DB
pro#ider. .he reltionship bet"een +D% nd %*E DB hs n importnt conse3uence> through +D% you cn
ccess ny sort o! structured (nd "ith -D+C 2.B, semistructured) in!ormtion including e&mil, directory
listings, *D+7 directories, nd custom dt. ,hene#er you employ +D%, you:re using recordsets to crry
dt bc' nd !orth. )ecordsets l"ys contin dt, but this dt does not necessrily mtch tble:s
records.
-'ing the recordset structure externlly cretble mens tht you cn crete ne" recordset ob(ect
ny"here in your code, nd you cn use it "ithout connection to dtbse. $:m not (ust tl'ing bout
disconnected recordsets8 $ men connectionless, custom&shped recordsets. + disconnected recordset is
(ust "ht the nme implies> recordset tht you disconnected !rom dt source. + disconnected
recordset supports sttic, client&side cursor tht utomtes do"nloding the records on the client side.
,ith )D% you cn h#e disconnected recordsets, but you cn:t h#e connectionless recordsets.
+ connectionless (or custom) recordset is recordset "hose !ields h#e been de!ined on the !ly by the
ppliction to mtch the structure o! the in!ormtion you "nt it to mnge. 7re#iously this cpbility "s
reser#ed !or the dt ob(ect model, such s +D% @.x, )D%, or D+%.
Figure )ecordset %utput
Figure ! sho"s some 4B6cript code tht cretes brnd ne" recordset tht hs no reltionship to n
%*E DB dt source. .his code genertes recordset tht reds dri#e in!ormtion through the
9ile6ystem%b(ect scripting ob(ect. Figure sho"s the output.
A "eneral#purpose Data $%pe
Cou cn consider n +D% recordset sort o! super rry, rel generl&purpose dt continer. +
recordset is much more mngeble thn n rry since it pro#ides methods to scroll, !ilter, boo'mr',
nd sort dt. $n ddition, recordset cn be persisted to nd !rom dis' in se#erl !ormts including the
nti#e dtgrm !ormt (+D.D) nd, s o! +D% 2.@, 0-*.
,hen trnsmitting recordsets o#er net"or' you cn optimiEe the opertion to s#e time nd minimiEe
trips. *et:s ssume tht both the client nd the ser#er 'no" ho" to hndle the recordset ob(ect. $s there
something tht you cn do to optimiEe the exchnge o! recordset bet"een t"o C%- business ob(ectsF
)ecordsets support custom mrshling, "hich mens tht +D% de!ines custom proxy?stub pir !or the
I
recordset ob(ect. ,hen you h#e to trnsmit recordset !rom the client to the ser#er through the /pdte
method, you cn use the recordset:s -rshl%ptions property to tune ho" the mrshling "ill "or'. By
de!ult, ll the records "ill be sent bc'. 5o"e#er, by setting
rst.MarshalOptions = adMarshalModifiedOnly
rst.Update
be!ore clling /pdte, you limit the number o! records trnsmitted to those tht h#e been modi!ied
loclly.
+nother property to consider cre!ully i! you "nt to get the most out o! your recordsets is Cche6iEe,
"hich de!ines the number o! ro"s tht +D% "ill !etch nd cche. $! the re3uired record is "ithin the rnge
o! cched ro"s, reding it is much !ster. .he bu!!er is updted s soon s you mo#e out !rom the current
cche "hile scrolling the recordset. Choosing the right siEe !or the cche is highly sub(ecti#e. .he de!ult
#lue is @. Cou lmost de!initely "nt to increse this #lue to le#el tht m'es sense !or the dt you:re
trnsmitting, proportionl to the ctul speed you experience bet"een your client nd ser#er.
Recordsets and Remote Calls
$n most ,eb scenrios, you h#e the bro"ser collect some dt !rom the user nd send it to the ,eb
ser#er. +n +67 pge on the ser#er extrcts the dt !rom the )e3uest ob(ect nd per!orms ny necessry
dt ccess. $n this cse, you ren:t sending recordset ob(ect bc' to the client8 you:re using its content
to ser#e brnd ne" pge to the bro"ser. ,ht tr#els o#er the net"or' is (ust the contents o! the
recordset, not the ob(ect itsel!. ,hen you need to trnsmit the recordset itsel!Gin other "ords, "hen you
"nt to mrshl itGboth proxy nd stub modules on ech end o! the connection must 'no" ho" to hndle
recordsets. .his "ill not be problem i! you use ,indo"s D=+ schem nd t'e d#ntge o! -D+C 2.x
to rchitect the dt ccess procedures.
.rnsmitting recordset o#er the net"or' becomes problem i! you employ cross&bro"ser remote cll
schemes bet"een the bro"ser nd the ,eb ser#er. $n my <nury 2000 Cutting Edge column in MIND, $
explined ho" )6 cn be considered (relti#ely) cross&bro"ser solution tht llo"s the client to get dt
!rom the ser#er. )ecordsets, ho"e#er, ren:t the type o! dt you cn send bc' through n )6 cll !or
se#erl resons. 9irst, you need the bro"ser to support C%- nd, more importntly, you need -D+C 2.x
to be instlled loclly. .his isn:t problem "ith $nternet Explorer, but "ht bout clients running =etscpe
=#igtor or 5ot<#F .his is de!initely problem i! you h#e to support multiple bro"sers, "hether on
the $nternet or n intrnet or e#en n extrnet.
.he second, e#en more !undmentl reson is tht )6 doesn:t support ob(ects other thn EC-+6cript
ob(ects, nd recordsets re complex C%- ob(ects. $t doesn:t m'e sense t ll to h#e n )6 stub module
cpble o! mrshling recordsets i! the bro"sers don:t support C%- nd +D%.
.he third reson is security. )6 pro#ides the sme le#el o! security s <#&lnguge pplets or
Hi!rmeI tgs. .ht:s "hy the implementtion doesn:t support compound ob(ects, including C%- ob(ects.
$n ddition, the )6 ser#er must be the sme ser#er tht pre#iously sent the pge clling the remote
ob(ect.
A &avaScript Recordset 'b(ect
Figure ) sho"s n +67 include !ile tht trns!orms recordset into #lid <#6cript ob(ect. $! you
import tht !ile into ser#er&side +67 pge "hose methods re in#o'ed through remote scripting, you cn
esily con#ert ny +D% recordset into <#6cript ob(ect. .he cler d#ntge is tht <#6cript ob(ect
cn be smoothly seriliEed o#er the net"or' by the )6 stub nd rech the bro"ser s!e nd sound.
$n my <nury 2000 Cutting Edge column, $ demonstrted ho" to con#ert recordset into rough rry.
<#6cript ob(ects re much better thn rrys since you cn de!ine methods nd properties nd model
the recordset:s !ields s properties o! the ob(ect. $n Figure ), the recordset is represented by n rry o!
ob(ects clled )ecord. Ech record hs s mny properties s the 9ields collection o! the originl recordset
ob(ect. +ll the records re grouped in the ne" )ecordset ob(ect through property clled $tems. +s
result, syntx li'e the !ollo"ing is per!ectly #lid>
empName.innerText = oRS.Items[0].LastName
5ere, o)6 is n instnce o! this <#6cript ob(ect, nd *st=me is the *st=me !ield o! the !irst record.
*et:s see ho" to re"rite my smple pplictions to t'e this into ccount.
Figure * )ecord Disply
$n Figure * you cn see the ne" #ersion o! one o! the smple pps. .he employee in!ormtion is no"
obtined nd displyed through the code sho"n in Figure +. =otice tht the line
oRS = !o.ret"rn#$al"e
utomticlly instntites the ne" <#6cript ob(ect contining the recordset returned by the
DetEmployee$n!o remote method. .he ser#er&side code tht cretes nd sends the <#6cript:s recordset
is sho"n in Figure ,.
.he syntx to con#ert n +D% recordset to <#6cript recordset is (ust s simple. $t cn be t'en cre
o! "ithin the <#6cript ob(ect:s initiliEtion>
rst.Open%s&l' (N)(*
oRS = ne+ Re!ordset%rst*
rst.,lose%*
ret"rn oRS
.he recordset is de!ined in the <6)EC%)D6E..+67 !ile included t the top o! the pge. 6ince the recordset
is no" regulr <#6cript ob(ect, the )6 stub 'no"s ho" to seriliEe it o#er the net"or'.
%! course, $:#e (ust reproduced the min !etures o! n +D% recordset. =o dditionl !etures, such s
boo'mr's, sorting, or !ilters, h#e been coded.
$t goes lmost "ithout sying tht you cn pc' ny +D% recordset this "y no mtter "hich dt
pro#ider produced it. Cou cn lso employ custom %*E DB pro#iders (such s the one tht the 4isul CJ
J1 K.0 +.* "iErd genertes !or you) to return recordset o! ll the !iles in gi#en !older>
rst = ne+ -!ti$e.O/0e!t%(-1O12.Re!ordset(*
rst.,"rsorLo!ation = adUse,lient
rst.Open%(!3445.5(' (pro$ider=6S.6ileSystem.7(*
oRS = ne+ Re!ordset%rst*
rst.,lose%*
$! you "nt <#6cript to tell you bout the !ields tht !orm recordset, use code li'e this>
$ar /"f = ((
for %fld in oRS.Items[0]* 8
/"f 9= fld 9 (4n(
:
)S!ript.;!ho%/"f*
Cou enumerte ll the properties o! ny o! the records in the $tems rry. ,or'ing "ith this ob(ect, $
noticed tht the )6 stub module hs problems "hen it seriliEes the content o! binry nd memo !ields. $
don:t 'no" "hether this is due to bugs in the )6 stub or my code. 9or exmple, use the =orth"ind
dtbse !rom -icroso!t +ccess to issue ;select L !rom employees; commnd. +mong the returned !ields
you:ll lso h#e 7hoto nd =otes, "hose +D% types re d*ong4rBinry nd d*ong4rChr,
respecti#ely. $n this cse, the )6 engine returns generic !ilure error to the e!!ect tht something "ent
"rong during the trip to the client.
6tepping through the )6 code, $ !igured out tht the problem "s detected in the proxy module
(rs.htm). 5o"e#er, this is not #ery in!ormti#eGit:s not cler "hether the error "s rised becuse
something "s corrupted or unintelligible !or the proxy or becuse "rong ction "s t'en loclly by the
proxy itsel!. .hen $ remembered the golden rule> selecting ll !ields "ith L insted o! using the !ields list
cn slo" the ppliction. 6o $ simply #oided loding 7hoto nd =otesM Cou cn see the ne" code in
Figure ,.
Cou cn l"ys extrct the content o! memo !ield nd return it s text. 5o"e#er, returning n imge
insted is nother story. $ thin' tht the best solution !or this "ould be to crete temporry D$9 or <7ED
!ile on the ser#er nd return the nme o! this !ile through the speci!ic recordset !ield. %n the client, you
only need to set the src property o! the HimgI tg "ith the nme o! the ser#er&side !ile. $n nutshell,
you:ll !ind tht memos nd pictures still re3uire specil tretment.
Remote Scripting- Frames- and .etscape
$n my <nury 2000 Cutting Edge column, $ lso presented !rme&bsed ppliction using )6 "ithout
Dynmic 5.-* to updte the locl pge. 6peci!iclly, ll portions o! the /$ tht could chnge due to the
ction o! )6 "ere isolted into !rmes nd updted seprtely. $! you pln to use )6 nd recordsets to do
this, there:s n dditionl problem> ho" do you trnsmit the recordset !rom !rme to !rmeF
Figure / )ecordsets in !rmes "or' in both =etscpe Communictor nd -icroso!t $nternet Explorer
Figure / sho"s the user inter!ce o! the ppliction. $t hs three di!!erent horiEontl !rmes bo#e nd
belo" the centrl yello" !rme. .he top !rme, "hich includes the input !orm, in#o'es remote method.
.his pge recei#es the recordset synchronously. 5o"e#er, the yello" pge, rsNin!o.sp, is the rel pge
tht:s re!reshed "ith this dt>
f"n!tion refresh<a=e%!o* 8
if %!o.stat"s == 0*
top.info.lo!ation = (rs#info.asp>info=( 9
es!ape%!o.data*
:
5o" do you pss the recordsetF Cou need to seriliEe it once more to put ll the content into string. .his
isn:t prticulrly di!!icult, but the trget pge hs to prse it nd extrct the in!ormtion.
,hile $ "s considering this, $ remembered the co.dt !ield. .he Cll ob(ect tht )6 returns to the client
contins redy&to&use #ersion o! the return #lue (the returnN#lue !ield) s "ell s its originl !orm (the
dt !ield). By originl !orm $ men the string tht the )6 stub prepred nd sent o#er the net"or'. 9or
recordset this mens exctly the string tht represents itGthe sme string the proxy e#luted through
e#l to produce n instnce o! the )ecordset. 7ssing this co.dt !ield to the !rme is the most e!!icient
"y to trns!er this sort o! in!ormtion.
.here:s pit!ll, though. .he co.dt string is pretty simple 0-* string "ith the !ollo"ing schem>
?R;TURN @-LU;A
?M;TBO1A
CCC
?DM;TBO1A
?R;TURN#@-LU;A
.he body o! the H-E.5%DI tg is the string you must e#lute to reproduce the recordset in the yello"
!rme. .he )6 proxy nlyEes such string "ithout employing !ull&!ledged 0-* prser. $t:s 3uite simple
!ter ll. .here:s !unction in Figure ) clled E#l)6 tht does this !or you. .he !ollo"ing code snippet
sho"s ho" the rsNin!o.sp pge processes its input nd gets its o"n copy o! the originl recordset>
?E
strText = Re&"est.F"eryStrin=%(info(*
if %strText == ((* Response.;nd%*
oRS = ;$alRS%strText*
if %oRS.len=th == 0* 8
Response.)rite %(No information a$aila/le.(*
Response.;nd%*
:
EA
%! course, you need to import the <6)EC%)D.+67 !ile once more.
?GHHIIN,LU1; @IRTU-L=(DS!riptLi/raryDJSR;,OR1.-S<.-S<(HHA
,ith this tric' you cn pss the <#6cript )ecordset ob(ect !rom !rme to !rme using )6. Figure /
sho"s n ppliction tht uses )6 to retrie#e recordset !rom the =orth"ind dtbse nd updte its
!rmes. $t "or's !ine under =etscpe Communictor nd $nternet Explorer.
Remote Data Services
$! you cn be sure tht your users re running only $nternet Explorer A.0 or higher, you cn t'e
d#ntge o! )D6, no" prt o! -D+C 2.x. Bsiclly, )D6 is collection o! C%- ob(ects you cn use to
communicte "ith other C%- ob(ects #i the 5..7 protocol. +mong other things, this enbles you to
in#o'e the methods o! C%- ob(ect locted on the ,eb ser#er nd estblish direct binding bet"een
tgs on your pge nd !ields o! recordset generted on the ser#er. $n#o'ing methods o! C%- ob(ect on
the ser#er is techni3ue tht loo's li'e )6, but is completely bsed on C%-. Binding tgs to recordset
!ields is n old techni3ue 'no"n s dt binding. .his technology is no" !ully integrted into the )D6
pc'ge.
Calling a C'0 'b(ect over the 1eb
)6 cn cll <#6cript ob(ect. )D6, on the other hnd, cn cll remote C%- ob(ects through 5..7 nd
DC%-. %! course, the hottest prt o! this ne" technology is the bility to pss clls through 5..7 (see
Figure 2).
Figure 2 )D6 +rchitecture
9rom your client pge you crete n instnce o! the )D6.Dt6pce ob(ect, then cll its Crete%b(ect
method to obtin pseudo&re!erence to remote ob(ect locted on the speci!ied ,eb ser#er.
rds = ne+ -!ti$e.O/0e!t%(R1S.1ataSpa!e(*
o/0 = rds.,reateO/0e!t%(O/0e!t.<ro=I1('
(http3DDexpo+are(*
+ctully, the re!erence you obtin is relti#e to locl ob(ect tht )D6 cretes !or you. .his locl ob(ect
mirrors the !unctionlity o! the remote ob(ect. Ech cll you m'e to this proxy ob(ectGit:s ctully
proxy !or the ser#er&side business ob(ect you "nt to cllGorigintes ne" 5..7 connection, sets up
ne" instnce o! the rel C%- ob(ect, executes the method, nd gets destroyed. +ll the necessry
mrshling is hndled by the Dt6pce ob(ect.
.he nture o! the mechnism !or mrshling dt, s "ell s the nture o! the re!erence tht
Dt6pce:s Crete%b(ect returns, depends on the rgument you pss s the ser#er. Cou cn indicte not
(ust n 5..7 or 5..76 ser#er, but lso *+=&connected mchine or e#en the locl mchine. $! you speci!y
mchine nme, DC%- "ill be the trnsporttion lyer !or the clls you m'e. $! the ob(ect you "nt to
tl' to is locl, then no proxy or stub re creted8 you (ust get pointer to the ob(ect. .his doesn:t !!ect
the code you "rite.
$t:s importnt to note tht )D6 produces stteless model, much li'e 5..7. + business ob(ect tht
needs to be in#o'ed remotely through )D6 must be stteless becuse ech cll cretes ne" instnce o!
the sme component. 9or exmple, i! you set property be!ore you cll method, you:re ctully tl'ing
to t"o di!!erent instnces o! the sme ob(ect. .he !irst instnce is destroyed immeditely !ter setting the
property, so "hen you cll the method you:ll end up "or'ing in brnd ne" en#ironment "ith no notion o!
the pre#ious ssignment nd, more importntly, "here the property doesn:t h#e de!ult #lue. + golden
rule !or stteless progrmming is to #oid properties ltogether, using only methods ("ith prmeters, i!
necessry), nd t'ing d#ntge o! persistent medi (!iles or dtbses) to store in!ormtion tht
bsolutely needs to sur#i#e the current session.
"etting Recordsets with RDS
.here re bsiclly t"o "ys to get recordsets "ith )D6. Cou cn either use the system&pro#ided
)D66er#er.Dt9ctory ob(ect or you cn "rite your o"n !ull&blo"n custom business ob(ects tht return
+D% recordsets. )D66er#er.Dt9ctory is generl&purpose ob(ect tht t'es connection string nd
commnd text nd returns disconnected recordset.
rds = ne+ -!ti$e.O/0e!t%(R1S.1ataSpa!e(*
df = rds.,reateO/0e!t%(R1SSer$er.1ata6a!tory('
(http3DDexpo+are(*
rs = df.F"ery%(1SN=North+ind(' s&l*
+t this point you cn use the recordset to updte the current pge. $! you need to submit chnges, (ust
use the 6ubmitChnges method. .he recordset is sent bc' to the ser#er "here the stub sets up ne"
connection "ith the dt source nd submits the chnges.
.he Dt9ctory issues commnd to the dt source nd returns the resulting recordset. $! you need
to employ more complex logic, "rite your o"n components. Cour custom business ob(ects must be
registered on the ser#er #i the !ollo"ing registry 'ey>
BK;L#LO,-L#M-,BIN;
4System
4,"rrent,ontrolSet
4Ser$i!es
4)MS@,
4<arameters
4-1,La"n!h
4Lo"r<ro=I1
<ust crete ne" 'ey under +DC*unch using the prog$D o! your business ob(ect s its nme.
Data Binding
Dt binding in $nternet Explorer A.0 nd bo#e is the ,eb counterprt o! dt&bound controls in 4isul
Bsic. .hrough dt binding you cn bring recordset to the client nd ssocite speci!ic 5.-* tg "ith
speci!ic !ield o! the recordset. .o m'e it e#en more interesting, you cn s' the bro"ser to tret the
#lue o! the !ield s r" text or 5.-*. 6ee the rticle ;Dt Binding in Dynmic 5.-*,; by )ich )ollmn
(MIND, <uly @99O, or t http>??""".microso!t.com?mind?0O9O?dtbinding.sp), !or more in!ormtion.
,ith $nternet Explorer A.0, enbling dt binding ment inserting n +cti#e0 control into your pge nd
setting it "ith prmeters li'e the 5..7 ser#er, the connection string, nd the commnd text to execute.
.ody, dt binding hs been integrted "ith )D6 nd ends up being (ust nother "y o! getting
recordset do"n to the client. Cou still h#e to use n +cti#e0 control i! you "nt to lin' recordset !ields
"ith 5.-* tgs.
?O2J;,T style=(display3none( id=(rds(
!lassid=(!lsid321NO,PPOHOP-MH7710HNQM-H00,0R6,SN;MM(A
?DO2J;,TA
.he control:s prog$D is no" )D6.DtControl. $ts $D plys centrl role in the lin'ing process. $n !ct,
nothing pre#ents you !rom getting recordset this "y "ithout utomticlly binding tgs "ith !ields. Cou
my use (ust one control to bind multiple tgs.
?TRA
?T1A?2ATitle?D2A?DT1A
?T1A?S<-N 1-T-SR,=Irds 1-T-6L1=TitleA?DS<-NA?DT1A
?DTRA
.he D+.+6)C nd the D+.+9*D ttributes de!ine the source o! the dt !or the speci!ic tg.
D+.+9%)-+.+6 speci!ies ho" to interpret the text. 7ossible #lues re ;text; nd ;html;. $n -D+C 2.x,
dt binding uses the Dt9ctory control !or the underlying dt ccess nd is !ully comptible "ith ny
%*E DB pro#ider. .his mens tht you cn lso updte the dt source through dt binding.
1hich $echni3ue is Best4
.here re similrities bet"een )6 nd the )D6 rchitecture. Both use proxy nd stub, nd both use
n intermedite ob(ect to pc'ge nd mrshl the dt o#er the ,eb. Ech hs ser#er&side ob(ect "ith
"ell&'no"n lyout tht "or's in stteless !shion. +prt !rom this s'eleton, ho"e#er, the internls re
completely di!!erent. )D6 is completely C%-&bsed. C%- is the component technology employed by
remoteble components (s opposed to EC-+6cript ob(ects)8 C%- component is the intermedite
Dt6pce ob(ect (#ersus the )6 <#&lnguge pplet)8 nd C%- is behind the mrshling techni3ues
used to send nd re#ie" dt nd recordsets.
)6 is the more portble techni3ue !or in#o'ing remote !unctions. $t is not portble to ll possible
plt!orms nd bro"sers, but it does h#e !e"er constrints thn )D6. $t (ust needs bro"ser "ith !ull
<# lnguge nd EC-+6cript support nd ,eb ser#er running +67. +lso, it:s distributed in source code
("ith the exception o! the <#&lnguge pplet), nd this is gret opportunity !or you to impro#e or
customiEe it i! necessry.
Dt binding is the most speci!ic techni3ue o! ll. .he number o! things you cn do "ith dt binding is
limited> you cn bind n 5.-* tg "ith !ield. $t supports tbles, but $ don:t thin' true gee' "ould use
dt binding on regulr bsis becuse it doesn:t gi#e you the best control o#er recordset mnipultion. $
suggest tht you consider dt binding to "rite enhnced tble controls (sy, through Dynmic 5.-*
scriptlets or beh#iors) tht occupy "ell&'no"n spce on the pge, !ill up synchronously, nd cn
dynmiclly hide the complexity o! the code tht is used to de!ine their content.
.he )D6 Dt6pce ob(ect is not synchronous li'e )6, nd is completely bsed on C%-. .his mens
tht $nternet Explorer A.0 or bo#e nd -D+C 2.x re bsolutely necessry to m'e things run smoothly.

You might also like