Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Whitepapers
  • Opret bruger
  • Log ind
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?
Se kommentarer (6)
Emner Web-services, XML

Vær liberal med hvad du modtager

Af Peter Makholm 3. juni 2009 kl. 09:20

Når man implementerer protokoller er der en gammel tommelfingerregel der siger at man skal være liberal med hvad man modtager og konservativ med hvad man sender. Men det var nu lettere i gamle dage hvor mange protokoller lå direkte over en strøm at ascii-tegn.

I dag skal man ofte tage hensyn til en hel lagkage af standarder og en del af dem specificerer ligefrem at man skal være meget konservativ med hvad man modtager. Helt galt går det når de øverste dele af lagkagen bliver defineret mens de underliggende lag ikke er helt færdige.

Tag for eksempel en standard som WebDAV (RFC4918). Den anvender blandt andet XML pakket ind i HTTP. Som namespace har man valgt "DAV:". Senere, tror jeg nok, har XML-folkene besluttet at namespaces skal være strikte URI'er. Men det er "DAV:" ikke.

Hvad kan man gøre? Man kan ikke rigtigt ændre WebDAV-standarden og sikre bagudkompatibilitet og en del hylde-implementationer af XML følger rent faktisk standarden, hvilket gør dem ubruglige til at implementere WebDAV.

Så enten må man (re)-implementere hele standardstakken, eller også må man ty til grimme hacks, såsom at ændre namespaces med rå substitutioner mellem protokol-laget og XML-implementationen. Det sidste er det letteste, men det er ikke specielt tilfredsstillende at skulle gøre det. For eksempel i Perl:

sub escapeNamespace { $[0] =~ s/(xmlns('::\w+)')="(?!urn|http)([^"]+)"/$1="urn:xxx:$2"/g; $[0] =~ s/(xmlns('::\w+)')='(?!urn|http)([^']+)'/$1='urn:xxx:$2'/g; $[0] =~ s/(xmlns('::\w+)')=""/$1="urn:xxx:nonamespace"/g; $[0] =~ s/(xmlns('::\w+)')=''/$1='urn:xxx:nonamespace'/g; }

Send Tweet
Udskriv
Billede af Peter MakholmOm Peter MakholmFollow @pmakholm

Kommentarer (6)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Kai Birger Nielsen 3. jun. 2009 - 11.14
 
Ja, gid det var så vel

Det er en meget relevant problemstilling, du har fat i!

Vi vil fx gerne kunne eksportere kalenderfiler til Google Calendar, så det har jeg kigget en del på. Den er godt nok ikke lavet efter at være liberal i hvad den modtager. Hvis jeg husker ret, så var noget af det jeg boksede med et linieskift for meget efter det sidste END:VCALENDAR og fejlmeddelelsen? Nej, det ville være for nemt. Den nægter bare at godtage ens kalenderfeed indtil det er perfekt :-)
(Men vi endte med at få det til at virke, så sig til hvis I kender nogen, der har givet op for tidligt!)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Kristian Thy 3. jun. 2009 - 11.41
 
Arf

Folk der kræver at man bruger et bestemt præfiks til et namespace skulle have høvl.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Lean Fuglsang 3. jun. 2009 - 11.54
 
html

Hvor galt det kan gå, hvis man følger devicen om at være liberal i modtagelse, kan ses på udviklingen af browsere. I starten var browserne meget liberale, men det gjorde så også at en dårligt specificeret side i IE, så anderledes ud end i andre browsere. Det gav mulighed for at IE fik en lockin effekt, da de fleste sider blev skrevet specifik til IE. Det tog mange år at komme ud over det problem, og krævede at browsere er meget strikse i det de modtager, og fejler på en specificeret måde.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Peter Makholms billede
Peter Makholm 3. jun. 2009 - 12.38
 
Re: Arf

Der kræves ikke et bestem præfix, det er selve navnet på namespacet der i WebDAV-standarden defineres til at være "DAV:"

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Peter Makholms billede
Peter Makholm 3. jun. 2009 - 12.42
 
Re: html

Jeg mener faktisk at hele ideen om 'Graceful degradation' var et at de succesfulde ting ved HTML, omend den aldrig var helt gennemført.

Det store problem der skabte MSIE-lockin var efter min opfattelse heller ikke at MSIE introducerede nye tags, men at folk forsøgte at bruge HTML som layout-sprog og krævede samme layout-præcision som de kunne i deres trykte pjecer.

Lad os få 'graceful degradation' tilbage på www. Det vil løse mange problemer.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Jesper Louis Andersen 4. jun. 2009 - 13.11
 
Man skal aldeles ikke være liberal med hvad man modtager!

Der er stor forskel på om man laver graceful degradation og giver en gammel browser mulighed for at rendere visse dele af nyere sider og om man accepterer fejl i den standard som browseren var designet til at følge.

Det går som regel voldsomt galt hvis man ikke kan stole på hvad man modtager. Så eksploderer ens kodebase og man skal håndtere det ene specialtilfælde efter det andet. Derfor kan det bedst betale sig at afvise ting i døren hvis det ikke overholder en fast defineret standard.

I princippet burde en fejlbehæftet HTML-side give fejlbeskeder. Men - hvis siden ellers er korrekt, borset fra en række extra tilføjelser som browseren ikke forstår, så giver det nok mening at acceptere siden.

Liberal modtagelse er nemt nok i Perl, men heldigvis findes der mere fornuftige sprog en Perl :)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

NemID sender Mac-computere fra 2009 ud i kulden

Udgivet 21. maj 10.42Opdateret 21. maj 10.59

It-konsulent hjalp ven med virus-problemer – og havnede i retten

Udgivet 21. maj 10.11Opdateret 21. maj 11.14

Microsoft lancerer socialt netværk - nu med videofester

Udgivet 21. maj 9.27Opdateret 21. maj 9.36

Vestager: Drop CPR - brug NemID til at verificere danskerne på nettet

Udgivet 21. maj 8.04Opdateret 21. maj 8.04

Fed business case: Giv alle dine medarbejdere iPhones

Udgivet 21. maj 6.59Opdateret 21. maj 10.39

Flere it-nyheder »

Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Seneste debat

  1. Vestager: Drop CPR - brug NemID til at verificere danskerne på nettet

    6 comments.
    Last update 4 minutter 7 sekunder
    Skrevet af Kristian Lund
  2. It-konsulent hjalp ven med virus-problemer – og havnede i retten

    2 comments.
    Last update 9 minutter
    Skrevet af Peter Makholm
  3. Cisco kan være en dyr netværksreligion

    2 comments.
    Last update 12 minutter 7 sekunder
    Skrevet af Mikkel Tobiasen
  4. Fed business case: Giv alle dine medarbejdere iPhones

    12 comments.
    Last update 24 minutter 9 sekunder
    Skrevet af Morten Espensen
  5. NemID sender Mac-computere fra 2009 ud i kulden

    1 comment.
    Last update 31 minutter 17 sekunder
    Skrevet af Christian Schmidt
  6. Dart: Dynamisk Statisk Programmering

    1 comment.
    Last update 50 minutter 43 sekunder
    Skrevet af Kræn Hansen
  7. To psykologiske årsager til at IT-projekter går galt

    1 comment.
    Last update 1 time 3 minutter
    Skrevet af Torben Mogensen
  8. Diablo III overtrumfer Yousees planer om kabelarbejde

    16 comments.
    Last update 1 time 17 minutter
    Skrevet af Peter Binderup

Mere debat »

It-virksomheder

Deltek Danmark
|
Tradeshift
|
GlobalConnect
|
Zap Technology
|
Futurecom Business Solutions
|
Raxco Scandinavia
|
Scanarmor
|
Presswire
|
Redpill Linpro
|
Queue-IT
|
Relation House
|
Propeople
 

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Download Windows 8
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Mountain Lion
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu 11.10
  • Virtualisering
  • Windows 8
  • Windows Phone 7
  • iOS 5
  • iPhone 4S

Tjenester

  • Android-app
  • iPhone-app
  • RSS-feeds
Følg @version2dk
Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Skelbækgade 4 1717 København V
  • Tlf. work 33265300