Ero sivun ”Idempotenssi” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
→‎Tietotekniikassa: +DELETE-metodi
→‎Tietotekniikassa: tietokantaan lisäesimerkki; C-esimerkin korjailua
Rivi 9:
== Tietotekniikassa ==
 
Tietotekniikassa metodi on idempotentti, jos sen vaikutukset ovat samat riippumatta siitä, suoritetaanko se vain yhden vai useamman kerran. Esimerkiksi metodi, joka toteuttaa asiakkaan osoitetietojen hakemisen tietokannasta on idempotentti metodi, sillä kysely ei muuta tietokannan tilaa. Toisaalta osoitetietojen tallennuskin voi olla idempotentti: se kyllä muuttaa tietokannan tilaa, mutta samojen osoitetietojen tallennus uudelleen ei sitä enää muuta. Sen sijaan asiakkaan tekemän tilauksen tallentava metodi ei tyypillisesti ole idempotentti, sillä metodin kutsuminen useita kertoja lisää vastaavan määrän tilauksia tietokantaan. Huomaa myös, että metodilla voi olla ohjelman tilaa muuttavia [[sivuvaikutukset (ohjelmistotekniikka)|sivuvaikutuksia]], vaikka se olisi idempotentti.
 
Lisäksi esimerkiksi [[C (ohjelmointikieli)|C-kielisetkielessä]] [[otsikkotiedosto]]t onpyritään suunniteltuyleensä idempotenteiksi:suunnittelemaan On tärkeääidempotenteiksi, niin että [[Tietokoneohjelma|ohjelman]] toimintaan ei vaikuta se, otetaanko jokin tiedostootsikkotiedosto mukaan käännettäessä #include -direktiivillä yhden vai useamman kerran. ISO-standardin mukaan [[C-standardikirjastot|standardikirjastojen]] otsikkotiedostojen on oltava idempotentteja.<ref>{{Verkkoviite | Osoite = http://docs.sun.com/app/docs/doc/819-5265/bjaky?a=view | Nimeke = Sun Studio 12: C User's Guide | Tekijä = | Tiedostomuoto = | Selite = 6.8.1 Standard Headers | Julkaisu = | Ajankohta = | Julkaisupaikka = | Julkaisija = | Viitattu = 25.9.2009 | Kieli = {{en}} }}</ref>
 
[[WWW]]:n tiedonsiirrossa käytetyn [[HTTP]]-protokollan GET-metodia tulisi standardin mukaan<ref>{{Verkkoviite | Osoite = http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html | Nimeke = HTTP/1.1: Method Definitions | Tekijä = Fielding, et al | Tiedostomuoto = | Selite = | Julkaisu = RFC 2616 | Ajankohta = Kesäkuu 1999 | Julkaisupaikka = | Julkaisija = W3C/MIT: Network Working Group | Viitattu = 25.9.2009 | Kieli = {{en}} }}</ref> käyttää ainoastaan tiedon hakuun palvelimelta, mikä on idempotentti ominaisuus (toisin sanoen, useiden samanlaisten GET-metodien suorittaminen vaikuttaa palvelimen tilaan samalla tavalla kuin jos metodi suoritettaisiin vain kerran). Käytännössä usein näin ei kuitenkaan ole, vaan järjestelmän tilaa muuttavat toiminnot kuten päivitykset ja poistot on toteutettu GET:llä. Myös DELETE-metodin tulisi olla idempotentti: sillä on kyllä vaikutus palvelimen tilaan, nimittäin tietyn resurssin poistaminen, mutta saman pyynnön toistaminen ei aiheuta enää lisää vaikutuksia. POST-pyynnön taas voidaan olettaa olevan ei-idempotentti.