← Dolennu dwfn

English Cymraeg

Astudiaeth achos ·

Llywio wedi’i yrru gan ddolen ddofn: un datrysydd i dapiau ac URLau

Async Digital Ltd Caerdydd, DU

Crynodeb

Mae apiau sy’n derbyn dolenni dwfn fel arfer yn gweithredu pob cyrchfan ddwywaith: unwaith yn y triniwr ar gyfer URL sy’n cyrraedd, ac unwaith yn y rheolydd sy’n cyflawni’r un llywiad ar dap. Pan fydd y man y mae cyrchfan yn glanio ynddo yn dibynnu ar gyflwr yr ap, mae’r ddau gopi’n rhydd i wahanu, ac yn ystod oes cod sylfaen maent yn tueddu i wneud hynny. Mae’r astudiaeth hon yn disgrifio ap negeseuon demo, wedi’i adeiladu ar Deep Link Kit, sy’n osgoi’r hollt trwy wneud URL y ddolen ddofn yn ffurf ganonaidd llywiad sy’n dibynnu ar gyflwr. Nid yw tap yn llywio ar ei ben ei hun; mae’n llunio’r un URL y byddai dolen allanol yn ei gario ac yn ei lwybro trwy un datrysydd, open. Yn yr ystyr hwn mae’r llywio wedi’i yrru gan ddolen ddofn: gramadeg yr URL yw’r un lle y datrysir cyrchfan gyd-destunol, i dapiau a dolenni allanol fel ei gilydd. Mae’r dyluniad yn rhannol yn fwriadol. Mae llywiadau nad ydynt yn cario unrhyw benderfyniad sy’n dibynnu ar gyflwr yn osgoi’r datrysydd ac yn llywio’n uniongyrchol. Mae’r astudiaeth hon yn nodi’r egwyddor, y pum rheolydd tap sy’n ei dilyn, y datrysydd sy’n ei gwneud yn bosibl, y ffin lle mae’n peidio, a’r hyn y mae’n ei gostio.

Mae cyrchfan y gallwch ei chyrraedd trwy dap a thrwy URL fel ei gilydd, yn y gweithrediad arferol, yn ddau ddarn cod ar wahân. Mae’r astudiaeth hon yn disgrifio dyluniad sy’n eu gwneud yn un trwy drin URL y ddolen ddofn fel y ffordd ganonaidd o lywio: mae tap yn llunio’r URL y byddai dolen allanol yn ei gario, ac mae’r ddau’n datrys trwy’r un cod. Y canlyniad yw llywio sydd wedi’i yrru gan ddolen ddofn ar gyfer pob cyrchfan y mae ei chanlyniad yn dibynnu ar gyflwr.


§1·Cefndir

Y broblem wahanu

Gellir cyrraedd y rhan fwyaf o gyrchfannau mewn ap dolen-ddofn mewn dwy ffordd. Mae triniwr URL yn dehongli dolen sy’n cyrraedd; mae botwm neu res yn cyrraedd yr un lle pan fydd y defnyddiwr yn tapio. Mae pob un yn bwynt mynediad: man yn y cod lle mae llywio at gyrchfan yn dechrau. Mae gan y rhan fwyaf o gyrchfannau o leiaf ddau.

Nid ydynt bob amser yn cytuno, oherwydd gall y man y mae cyrchfan yn glanio ynddo ddibynnu ar gyflwr. Gosodiadau yw’r achos amlwg. O wraidd y pentwr llywio maent yn agor fel dalen; o du mewn i edefyn sgwrs mae’r un ddolen yn gwthio ar y pentwr yn lle hynny. Mae’r canlyniad cywir yn dibynnu ar y cyflwr llywio presennol, ac mae’n rhaid gwneud y penderfyniad hwnnw ym mhob pwynt mynediad sy’n gallu cyrraedd Gosodiadau.

Pan fydd pob pwynt mynediad yn gwneud y penderfyniad hwnnw ar ei ben ei hun, nid oes dim yn dal y ddau mewn cam. Maent yn cyfateb y diwrnod y’u hysgrifennir. Yn ddiweddarach caiff un ei ddiwygio a’r llall ddim, ac mae’r ap yn ymddwyn yn wahanol yn dibynnu a gyrhaeddoch trwy dap neu drwy ddolen. Nid dewis fu’r gwahanu erioed; mae’n cronni allan o ddyblygu. Mae’r ateb yma yn strwythurol, nid yn fater o ddisgyblaeth: os yw’r ddau bwynt mynediad yn rhedeg yr un penderfyniad yn yr un lle, nid oes ail gopi ar ôl i ddrifftio. Mae’r ap hwn yn gwneud URL y ddolen ddofn yn yr un man hwnnw. Mae pob llywiad sy’n dibynnu ar gyflwr, tap neu ddolen, yn cael ei fynegi fel URL ac yn cael ei ddatrys unwaith.

Ffig 1 Y siâp confensiynol: un gyrchfan wedi’i gweithredu ddwywaith, unwaith ym mhob pwynt mynediad. Mae pob copi o’r penderfyniad sy’n dibynnu ar gyflwr yn rhydd i ddrifftio, a thros amser maent yn gwneud. Mae Deep Link Kit yn tynnu’r ail gopi (gweler Ffig 2).
§2·Tystiolaeth

Mae pob tap sy’n dibynnu ar gyflwr yn URL

Yn yr ap a astudiwyd, mae llywio yn perthyn i un gwrthrych, y cydlynydd. Mae’n dal y cyflwr llywio presennol ac yn gwneud yr holl lwybro, ac mae’n datgelu un pwynt mynediad yn union ar gyfer URLau, dull y mae’r astudiaeth hon yn ei alw’n open. O gael URL, mae open yn ei ddosrannu yn erbyn y cyflwr presennol ac, os yw’n datrys i gyrchfan hysbys, yn llwybro’r bwriad sy’n deillio. Mae pob URL y mae’r ap yn gweithredu arno yn mynd trwy’r un dull hwn.

Mae dolenni allanol yn cyrraedd open yn y ffordd amlwg: mae’r system yn estyn yr URL i’r ap, sy’n ei drosglwyddo’n ddigyfnewid. Mae’r dyluniad yn ymestyn y llwybr hwnnw i dapiau. Pan fydd canlyniad cyrchfan yn dibynnu ar gyflwr, nid yw’r rheolydd sy’n ei sbarduno yn penderfynu drosto’i hun; mae’n llunio’r URL ganonaidd ar gyfer y gyrchfan honno, yr un y byddai dolen allanol yn ei gario, ac yn galw open. Mae’r tap a’r ddolen yn dod yn yr un cais.

Mae pum rheolydd tap yn dilyn y rheol hon, ac maent oll yr un symudiad. Mae rheolydd sy’n agor gosodiadau a rheolydd sy’n rhedeg chwiliad yn llunio URL eu cyrchfan ac yn galw open. Felly hefyd dri arall: tap ar ffeil sydd ynghlwm wrth neges, tap ar neges a gyrhaeddwyd o broffil rhywun, a thap ar ganlyniad chwilio. Ym mhob achos caiff y tap ei ailfynegi fel URL cyn iddo gael mynediad, ac nid oes yr un ohonynt yn datrys cyrchfan ar ei ben ei hun.

Ffig 2 Chwe phwynt mynediad, un datrysydd. Mae dolen allanol a phum rheolydd tap yn cyrraedd yr un dull open; gwerthusir y penderfyniad sy’n dibynnu ar gyflwr yno ac yn unman arall.

Y siâp yw un datrysydd gyda chwe galwr: llwybr y ddolen allanol a phump rheolydd sydd bob un yn troi tap yn URL. Mae’r penderfyniad sy’n dibynnu ar gyflwr yn byw yn y datrysydd ac yn unman arall, felly mae rheolydd gosodiadau wedi’i dapio a’r ddolen allanol gyfatebol yn glanio yn yr un lle, wedi’u penderfynu gan yr un cod. Nid oes ail gopi i anghytuno. Dyma beth y mae llywio wedi’i yrru gan ddolen ddofn yn ei olygu yn ymarferol: nid yn unig sut y mae’r byd allanol yn cyrraedd yr ap yw’r URL, ond sut y mae’r ap yn llywio ei hun. Mae hefyd yn gosod trefn y gwaith. Mae cyrchfan newydd sy’n dibynnu ar gyflwr yn dechrau gyda’i URL, ac ysgrifennir y rheolydd sy’n ei sbarduno i lunio’r URL hwnnw.

§3·Mecanwaith

Y datrysydd

Mae’r pwynt mynediad a rennir yn fach. Mae open yn cymryd yr URL a’r ciplun llywio presennol, yn eu dosrannu, ac yn cael yn ôl naill ai bwriad canonaidd neu ddim. Os yw’r dosrannu’n llwyddo, caiff y bwriad ei lwybro. Nid oes gan y dull gangen yn gwahanu galwad sy’n tarddu o dap oddi wrth un sy’n tarddu o URL. Erbyn i alwad gyrraedd, mae’r gwahaniaeth hwnnw eisoes wedi mynd: mae pob galwr yn cyflwyno URL.

Mae dosrannu hefyd yn gwirio bodolaeth. Caiff URL na fydd ei ddynodwr yn datrys yn erbyn data’r ap ei wrthod yn y fan a’r lle, fel nad yw’r llwybro byth yn derbyn cyrchfan nad yw yno. Mae tap sy’n llunio URL yn cael y warchodaeth hon am ddim: mae’r gwiriad sy’n dal dolen allanol annilys hefyd yn dal dynodwr hen wedi’i ddal mewn golwg.

Mae’r enillion ar gyfer y broblem wahanu yn uniongyrchol. Nid yw’r rheolydd gosodiadau yn ailbenderfynu dalen-yn-erbyn-gwthiad. Mae’n llunio URL y gosodiadau ac yn estyn y datrys i’r un gwiriad y byddai dolen sy’n cyrraedd yn ei daro, wedi’i redeg yn erbyn y ciplun byw. Ysgrifennir yr ymddygiad sy’n dibynnu ar gyflwr unwaith; mae’r tap yn pwyntio ato yn lle ei gopïo.

Ffig 3 Un URL, dau ganlyniad. Mae botmessages://settings yn datrys i ddalen o’r gwraidd ac i wthiad o du mewn i edefyn. Gwneir y penderfyniad sy’n dibynnu ar gyflwr unwaith, yn y datrysydd.
§4·Cwmpas

Ble mae tapiau’n llywio’n uniongyrchol

Nid yw pob tap yn mynd trwy’r datrysydd. Mae sawl rheolydd tap yn llywio’n uniongyrchol heb gael mynediad iddo byth. Mae tap sy’n agor sgwrs yn ei gwthio ar y pentwr. Mae tap sy’n agor proffil yn gwthio proffil. Mae tap sy’n dechrau cyfansoddi yn cyflwyno’r ddalen gyfansoddi. Nid oes yr un ohonynt yn llunio URL. Mae y darn arwyneb rheoli yn edrych ar yr hyn y mae llywiad wedi’i ddatrys yn ei wneud unwaith iddo lanio, y set gaeedig o effeithiau y gall ei chario.

Mae hynny’n fwriadol, ac mae’r rheol y tu ôl iddo’n syml: mae’r cyrchfannau hyn bob amser yn ymddwyn yn yr un ffordd. Mae sgwrs yn agor fel gwthiad o unrhyw gyflwr. Nid oes cwestiwn dalen-neu-wthiad i’w gael yn anghywir, felly nid oes dim y gallai dau gopi o’r penderfyniad anghytuno yn ei gylch. Mae’r datrysydd yn ennill ei le trwy gadw tap a dolen mewn cam ar benderfyniadau sy’n gallu drifftio; lle na all cyrchfan ddrifftio, byddai ei llwybro trwy URL yn ychwanegu cam ac yn gwarchod dim.

Felly dyma’r rheol: mae tap yn mynd trwy’r datrysydd pan fydd ei gyrchfan yn ymddwyn yn wahanol yn dibynnu ar y cyflwr presennol, ac yn llywio’n uniongyrchol pan fydd bob amser yn ymddwyn yr un fath. Y math cyntaf yw lle byddai gweithrediad tap ar wahân, gydag amser, yn drifftio i ffwrdd oddi wrth yr un URL. Nid oes gan yr ail fath ddim i’w gadw mewn cydamseriad.

Ffig 4 Ble mae tapiau’n llywio’n uniongyrchol. Mae rhai cyrchfannau’n ymddwyn yr un ffordd o unrhyw gyflwr, felly mae’r rheolyddion sy’n eu cyrraedd yn neidio dros y datrysydd. Nid yw tap yn mynd trwy’r datrysydd ond pan fydd ei gyrchfan yn ymddwyn yn wahanol yn dibynnu ar y cyflwr presennol.
§5·Cost

Costau’r un llwybr

Nid yw llwybro tap trwy URL am ddim, ac mae’r costau’n werth eu nodi’n blaen.

Ffig 5 Y daith yn ôl ac ymlaen. Mae tap sy’n cydgyfeirio yn llunio URL y mae dosrannu’n ei ddadelfennu’n syth, gwerth strwythuredig wedi’i gyfresoli a’i ail-ddarllen o fewn un alwad. Mae’r gorbenion yn fach ac yn cael ei dalu’n fwriadol, fel nad yw tap yn cael unrhyw driniaeth arbennig unwaith y mae y tu mewn i’r datrysydd.
Rhybudd

Mae’r tapiau sy’n cydgyfeirio yn cymryd taith yn ôl ac ymlaen trwy ffurf wedi’i chyfresoli. Mae’r rheolydd gosodiadau yn llunio URL y mae dosrannu’n ei ddadelfennu’n syth eto. Y gorbenion yw gwerth strwythuredig wedi’i gyfresoli a’i ail-ddarllen y tu mewn i un alwad. Mae’n fach, ond yn cael ei dalu’n fwriadol, fel nad yw tap yn cael unrhyw driniaeth arbennig unwaith y mae y tu mewn i’r datrysydd.

Cynhelir y llinell rhwng llywio sydd wedi’i yrru gan ddolen ddofn a llywio uniongyrchol gan gonfensiwn, nid gan y system deipiau. Mae’n rhaid i bwy bynnag sy’n ychwanegu rheolydd tap newydd benderfynu pa ochr y mae arno: caiff cyrchfannau sy’n dibynnu ar gyflwr eu mynegi fel URLau ac ailymuno â’r datrysydd, mae rhai sefydlog yn llywio’n uniongyrchol. Mae’r rheolyddion presennol yn dangos y gwahaniaeth ond nid ydynt yn ei orfodi, a gellir cymhwyso confensiwn yn anghywir.

Mae’r porth bodoli’n torri’r ddwy ffordd. Am fod dosrannu yn gwrthod URLau na fydd eu dynodwyr yn datrys, caiff tap sy’n llunio URL ar gyfer cofnod a ddilëwyd ers tynnu’r olwg ei ollwng wrth y porth yn hytrach na’i drin ar ei delerau ei hun. Fel arfer dyna’r canlyniad cywir, ond mae’n golygu y gall rheolydd wedi’i dapio ddatrys i ddim yn y ffenestr lle nad yw ei darged yn bodoli mwyach.

Mae p’un a yw’r daith yn ôl ac ymlaen yn werth chweil yn dibynnu ar faint rydych yn gwerthfawrogi bod ymddygiad tap ac URL yn aros yn unfath, a hynny’n brofadwy, ar gyfer y penderfyniadau sy’n anodd eu cadw mewn cydamseriad. Ar gyfer cyrchfan heb ganlyniad cyd-destunol, gorbenion am ddim yw’r dyluniad. Ar gyfer gosodiadau, sy’n wir yn datrys mewn dwy ffordd, dau weithrediad a’r drifftio araf rhyngddynt yw’r dewis arall.

Y datrysydd y mae’r astudiaeth hon yn dal i bwyntio ato yw’r un cydran sy’n penderfynu dalen-yn-erbyn-gwthiad o gyd-destun. Mae y darn ar y datrysydd ymwybodol o gyflwr yn edrych ar y penderfyniad hwnnw’n uniongyrchol: un gramadeg URL yn datrys i fwriadau gwahanol yn ôl y cyflwr llywio presennol. Mae’r mynegai llawn yn byw ar yr hwb dolennu dwfn.