Pan fydd URLau yn cyrraedd yn gynt na’r rhyngwyneb
Async Digital Ltd Caerdydd, DU
Nid yw dolen ddofn sy’n gweithio pan fydd yn cyrraedd ar ei phen ei hun yn profi fawr ddim. Y prawf gonest yw’r pwl: URLau wedi’u tanio gefn wrth gefn i ap newydd ei lansio’n oer, pob un yn glanio cyn i’r un diwethaf orffen cael ei gymhwyso. Mae’r astudiaeth achos hon yn recordio beth mae Deep Link Kit yn ei wneud o dan y pwysau hwnnw. Mae pum senario pwl, pob un yn dechrau o lansiad oer, i gyd yn datrys i’r ysgrifennwr olaf yn ennill: dim dalennau wedi pentyrru, dim llywio hanner-gymhwysedig, dim gweddillion o rediad a ganslwyd. Y mecanwaith yw un dosbarthwr bwriadau a rennir gan dapiau ac URLau, gwiriadau bodolaeth wrth ddosrannu, hepgor taniadau na fyddai’n newid dim, a chanslo cydweithredol sy’n ysgrifennu pob rhediad a adawyd i drywydd y mae’r profion yn ei wirio. Nid cred am y cod yw diogelwch rhag rasys yma. Dilyniant o ddigwyddiadau wedi’i recordio ydyw.
Nid yn y dosrannwr y mae’r rhan fwyaf o fygiau dolennu dwfn yn byw. Maent yn byw yn yr hanner eiliad ar ôl i URL gyrraedd, tra bo’r ap yn dal i animeiddio tuag at yr un blaenorol. Mae Deep Link Kit yn trin y ffenestr honno fel y prif achos: mae’r URL nesaf yn canslo’r rhediad sydd ar y gweill, yn gydweithredol, ac mae’r ysgrifennwr olaf yn ennill. Mae’r erthygl hon yn dangos yr ymddygiad hwnnw’n dal o dan gamdriniaeth fwriadol, a’r trywydd sy’n profi iddo ddal.
Y ras yw’r achos arferol
Fel arfer caiff dolennu dwfn ei ddylunio o amgylch tybiaeth gwrtais: un URL, yn cyrraedd ar ei ben ei hun, i ap sy’n eistedd yn dawel ar ei sgrin gartref. Mae’r dybiaeth yn dal hyd nes y daw URLau yn iaith fewnbwn. Mae rhedwr profion yn gyrru’r ap drwy URLau. Mae Shortcut yn tanio un tra bo sgrin yng nghanol trawsnewid. Mae asiant yn rhoi’r cyfarwyddyd nesaf cyn i’r un diwethaf setlo. Mae person yn tapio ail hysbysiad am mai’r un cyntaf oedd yr un anghywir. Ym mhob un o’r achosion hynny, mae URLau yn cyrraedd mewn pyliau, ac nid achos ymylol yw’r pwl. Dyna sut mae’r mewnbwn yn ymddwyn unwaith y bydd unrhyw beth awtomataidd ar y pen arall.
Mae tri ateb deniadol i bwl, ac mae pob un ohonynt yn anonest yn ei ffordd ei hun. Ciwiwch yr URLau ac mae’r ap yn ufudd ailchwarae bwriad wedi dyddio, gan dywys y defnyddiwr drwy dair sgrin nad oes arno eu heisiau mwyach. Gollyngwch y rhai newydd ac mae’r ap yn anwybyddu cyfarwyddyd diweddaraf y defnyddiwr o blaid un hŷn. Gadewch i’r rhediadau blethu a’r canlyniad yw dalennau wedi pentyrru, llywio hanner-gymhwysedig, a sgrin sy’n perthyn i URL nad oes neb yn aros amdano.
Yr ateb gonest yw’r pedwerydd. Mae’r URL diweddaraf yn ennill, mae pob rhediad y mae’n torri ar ei draws yn cael ei ganslo’n gydweithredol ar ffin cam, ac nid yw rhediad a ganslwyd yn gadael dim ar ei ôl. Taniodd y defnyddiwr yr ail URL am fod arno eisiau cyrchfan yr ail URL. Popeth arall yn yr erthygl hon yw’r peirianwaith sy’n gwneud y frawddeg honno’n wir, a’r dystiolaeth ei bod yn aros yn wir o dan bwysau.
Yr ysgrifennwr olaf yn ennill, bum gwaith
Roeddwn i eisiau ateb wedi’i recordio, nid un cysurlon. Felly mae’r protocol yn blwmp ac yn blaen. Mae pob senario’n dechrau o lansiad oer yr ap. Mae pob pwl yn tanio ei URLau gefn wrth gefn heb seibiau rhyngddynt. Yna mae’r rhediad yn aros pum eiliad ac yn cipio’r rhyngwyneb terfynol. Yr ap ar y pen sy’n derbyn yw ap negeseuon demo a adeiladwyd fel defnyddiwr y pecyn.
Y senario cyntaf yw’r mwyaf digroeso: chwe URL i chwe chyrchfan wahanol, wedi’u tanio mewn llai nag eiliad.
botmessages://conversation/scrumbotmessages://profile/designbotmessages://settingsbotmessages://composebotmessages://search?q=mockbotmessages://conversation/studio
Mae’r senarios sy’n weddill yn amrywio siâp y gamdriniaeth yn hytrach na’r nifer.
- Chwe chyrchfan wahanol: sgwrs, proffil, gosodiadau, cyfansoddi, chwilio, yna ail sgwrs. Cyflwr terfynol: y sgwrs olaf wedi’i gwthio, dim byd arall wedi’i osod.
- Pedair neges yn yr un edefyn, mewn trefn esgynnol. Cyflwr terfynol: yr edefyn wedi’i wthio, wedi’i sgrolio i’r neges olaf.
- Cyfansoddi, afatar wedi’i ehangu, atodiad wedi’i ehangu, yna proffil. Cyflwr terfynol: y proffil wedi’i wthio.
- 10 taniad bob yn ail rhwng dwy sgwrs. Cyflwr terfynol: y sgwrs olaf wedi’i gwthio.
- Pum URL gosodiadau unfath. Cyflwr terfynol: un ddalen gosodiadau, dim pentyrru.
Daliodd yr ysgrifennwr olaf yn ennill ym mhob achos. Ni phentyrrodd unrhyw ddalen ar ddalen arall. Ni oroesodd unrhyw gyflwr hanner-gymhwysedig o rediad a ganslwyd. Y pumed senario yw’r un tawel a’r un sy’n dweud y cyfan: cynhyrchodd tanio’r un URL bum gwaith un ddalen yn union, oherwydd byddai pedwar o’r pum taniad wedi newid dim a chawsant eu hepgor cyn cyffwrdd â’r rhyngwyneb.
Un dosbarthwr, dim ail lwybr
Mae’r ymddygiad uchod yn rhatach i’w warantu nag y mae’n edrych, oherwydd dim ond un llwybr sydd i’w warantu arno. Mae tapiau ac URLau yn llwybro drwy’r un dosbarthwr bwriadau. Nid yw’r botwm gosodiadau yn gwthio sgrin yn uniongyrchol; mae tapOpenSettings() yn llunio URL y gosodiadau ac yn ailymuno â’r un llwybr ag y byddai URL allanol yn ei gymryd. Mae’r rheolau ymwybodol o gyflwr (mae gosodiadau’n cyrraedd fel dalen o’r gwraidd ond fel gwthiad o du mewn i edefyn) yn gymwys yn union yr un fath i’r ddau bwynt mynediad. Ni all ymddygiad tap ac ymddygiad URL wahanu, oherwydd nad oes ail lwybr cod iddynt wahanu ar ei hyd.
Y tu mewn i’r llwybr hwnnw, mae bwriadau’n crynhoi i weithrediadau. Mae ffwythiant pur, operations(intent:), yn ehangu pob bwriad yn rhagddodiad ailosod (crebachu troshaenau, clirio hidlwyr, popio i’r gwraidd, cau dalennau) ac yna camau’r gyrchfan. Mae agor sgwrs, er enghraifft, yn ehangu i’r rhagddodiad ailosod, yna .effect(.scrollToConversationRow(id)), yna .nav(.push(.conversation(id))). Mae pob URL yn glanio ar linell sylfaen lân waeth ble roedd yr ap yn eistedd pan gyrhaeddodd.
Mae dau borth yn tocio’r gwaith cyn iddo ddechrau. Wrth ddosrannu, caiff URL nad yw ei ddynodwr yn datrys yn nata’r ap ei wrthod yn llwyr, felly nid oes rhaid i’r cod sy’n dilyn byth drin “llywio at res nad yw’n bodoli”. A chyn i unrhyw gam redeg, caiff effaith na fyddai’n newid cyflwr gweladwy ei hepgor. Yr ail borth hwnnw yw’r rheswm pam mae senario pump yn cywasgu pum taniad gosodiadau unfath yn un: mae’r taniad cyntaf yn cyflwyno’r ddalen, ac mae’r pedwar arall yn weithredoedd di-effaith yn erbyn dalen sydd yno’n barod.
Canslo fel ffaith wedi’i recordio
Y rhan o’r dyluniad hwn rwy’n ymddiried fwyaf ynddi yw’r rhan sy’n ysgrifennu pethau i lawr. Pan fydd ail URL yn cyrraedd yng nghanol cymhwyso, caiff y dasg sy’n rhedeg ei chanslo ar ffin y cam nesaf, ac mae’r cam sydd ar y gweill yn recordio digwyddiad trywydd wedi’i ganslo sy’n cario ei ôl-gyflwr. Nid offeryniaeth wedi’i bolltio ymlaen wedyn ar gyfer dadfygio yw’r recordydd trywydd. Dyma’r cytundeb y mae’r profion yn ei siarad. Mae profion ras yn gwirio yn erbyn y dilyniant o ddigwyddiadau a recordiwyd a’r cyflwr llywio terfynol, nid yn erbyn “a oedd y sgrin yn edrych yn iawn”.
Y gwahaniaeth hwnnw yw holl bwynt galw diogelwch rhag rasys yn ffaith wedi’i recordio. Nid oes unrhyw “rwy’n meddwl i’r ras gael ei thrin yn gywir” yn unman yn y gyfres brofion. Mae dilyniant o ddigwyddiadau, pob un â’i ôl-gyflwr, a gwiriadau sy’n methu’n uchel pan fydd y dilyniant yn anghywir. Y recordiadau yn yr erthygl hon yw wyneb darllenadwy’r un dystiolaeth; y trywydd yw’r fersiwn y gall peiriant ddal y pecyn ato.
Mae un manylyn yn dangos pa mor fwriadol y cymhwysir rheol yr ysgrifennwr olaf. Mae targedau sgrolio nad ydynt wedi’u defnyddio eto (y rhes y dylai sgwrs lanio arni, yr afatar y dylai proffil ganoli arno) yn cael eu dal mewn cliciedau sy’n aros, ac o dan ail-daniadau cyflym caiff y cliciedau hynny eu trosysgrifennu’n fwriadol yn hytrach na’u hamddiffyn.
Taniodd y defnyddiwr yr ail URL am fod arno eisiau cyrchfan yr ail URL. Byddai rasio sgrolio’r cyntaf i olwg sydd eisoes yn animeiddio tuag at res wahanol yn ganlyniad anghywir.
o nodiadau dylunio’r pecynNid methiant y mae’r pecyn yn ymddiheuro amdano yw colli ras yma. Dyma’r canlyniad a bennwyd, wedi’i recordio fel pob un arall.
Yr hyn y mae’r dyluniad yn talu amdano
Nid yw ymddygiad deterministig o’r math hwn am ddim, ac mae’n werth bod yn fanwl gywir am y bil.
Mae pob tap yn talu toll crynhoi bwriadau. Mae tap nad yw eisiau dim mwy na gwthio sgwrs yn dal i lwybro drwy grynhoi’r bwriad yn gamau: mae’r rhestr gamau’n cywasgu i un cofnod, mae’r hepgor yn tynnu’r rhagddodiad ailosod, ac mae’r pecyn yn dal i redeg ei ddolen gymhwyso. Ar lefel y defnyddiwr mae’r gorbenion yn anweledig; mae’n ymddangos fel llond llaw o gofnodion trywydd ychwanegol fesul rhyngweithiad.
Mae’r recordydd trywydd ei hun yn gyflwr y mae’r cydlynydd yn berchen arno. Mae’n cadw’r dilyniant llawn o ddigwyddiadau fel y gall profion ras ei ailchwarae, ac mae’r cadw hwnnw’n gost go iawn, nid yn rhywbeth am ddim.
Yn fwyaf gweladwy: profion. Mae’r wyneb dolennu dwfn yn cario 1,160 o linellau o god profi mewn cyfres defnyddiwr o 2,041, mwy na’i hanner. Mae trin rasys, datrys ymwybodol o gyflwr, canslo, a dosrannu URLau bob un yn mynnu ei gwmpas ei hun. Byddai’r un 18 bwriad wedi’u gweithredu heb ganslo nac URLau ymwybodol o gyflwr yn profi mewn ffracsiwn o hynny.
Mae p’un a yw’r pris hwnnw’n deg yn dibynnu ar faint rydych yn gwerthfawrogi bod ymddygiad tap ac URL yn aros yn unfath, a hynny’n brofadwy, ac ar ba mor aml y mae eich URLau yn cyrraedd yn anghwrtais. Ni chafodd dim o hyn ei gynllunio ar fwrdd gwyn ymlaen llaw; setlodd y dyluniad ar draws llawer o newidiadau bach, pob un wedi’i orfodi i ail-brofi priodweddau’r ras cyn glanio, a’r trywydd yw’r hyn a gadwodd hynny’n onest.
Goroesi pwl yw hanner amddiffynnol y stori. Yr hanner arall yw cyfyngiant: faint o god defnyddiwr y caniateir i’r peirianwaith sy’n ei oroesi ei gyffwrdd. Mae y darn nesaf yn y gyfres hon yn mesur yr ôl troed hwnnw, hyd at ble mae trin URLau yn byw a beth a gostiodd i’r ap o’i gwmpas. Mae’r map llawn yn byw ar yr hwb dolennu dwfn.