Citat:
Ursprungligen postat av cyberrascal
[...]Man ska såklart göra båda.[...]
Absolut, det som förbyllade mig var att ingen påpekade att TS kanske bör validera användarens data långt innan den når databasen.
Jag menar; att lägga till en liten if-sats som kontrollerar ingående data och beroende på utfall sparar informationen känns som en enklare lösning för TS.
Kod:
if age < 20
print age error
else
save data
Kod:
status = write_data_to_database(data)
if status contains errors
try_to_figure_out_what_error_occurred
try_to_figure_out_what_error_occurred-delen under skrivningen är i många fall jobbigare att ta hand om än första kodstycket.
Sedan så tampas man med andra problem när man försöker göra onödiga skrivförsök till databasen.
När en skrivning görs så kan ingen annan läsa, skriva eller plocka bort information från tabellen. Vilket gör att andra processer kommer att köa upp.
Citat:
Ursprungligen postat av cyberrascal
[...]Göra det i databasen för att skydda data från andra källor än just din webapplikation/webservice.[...]
Vilka andra andra källor?
Ajax-requests och liknande requests gör sina requests via ett REST-API.
REST-API:et går i sin tur alltid genom modellen, var vid informationen valideras.
Citat:
Ursprungligen postat av cyberrascal
[...]Tänk om någon klåfingrig idiot går in och gör dumma saker via t.ex Mysql workbench eller SQL Management Studio osv?[...]
Jag kan inte riktigt se hur detta skulle kunna inträffa då det bara är produktionsservern som har skrivrättigheter till databasen.
Citat:
Ursprungligen postat av cyberrascal
[...]Vad händer om programmet ska implementeras om, t.ex som en webservice[...]
Utveckla gärna det där.
Du menar te.x om vi skulle välja att använda vår desktop-applikations databas i en webbsite?
Citat:
Ursprungligen postat av cyberrascal
[...]är det då helt garanterat att det sköts buggfritt och att fel data aldrig försöks skjutas in i databasen?[...]
Eller är det migrering av informationen mellan de olika databaserna du pratar om?
Citat:
Ursprungligen postat av cyberrascal
[...]Finns alldeles för många klåfingriga idioter.[...]
Vad dessa personer gör med sin egen kopia av databasen är inte riktigt mitt problem.
Citat:
Ursprungligen postat av cyberrascal
[...]Utöver det borde man också validera input i applikationen för att kunna ge schysst felmeddelanden osv.[...]
Trevliga och läsbara fel kan du fortfarande ge användaren utifrån din lösning.
- Skriv till databasen
- Några fel?
- Ja? Fånga felet och meddela användaren att något gick fel.
- Nej? Allt gick bra
Citat:
Ursprungligen postat av cyberrascal
[...]Höja abstraktionsnivån? Skulle säga att det snarare är att sänka säkerheten för ditt programs validitet...
Vad dessa två saker har med varandra och göra förstår jag inte riktigt.
Modellen, precis som vyn eller användarens webbläsare ligger, enligt min mening, på en högre abstrakt nivå än te.x en databas.
Citat:
Ursprungligen postat av Windforce
Kul med lite olika idér, ska nämnas att jag är ny inom denna värld och sitter och pillar för att lära mig. Men just nu testade jag att lägga upp en sida, motsvarande IMDB, där man kan skriva in "Filmnamn, Genre, Rating & Year". T.ex. med Year så kunde man skriva det som en YEAR(4), vilket innebar att det bara gick skriva in från 1901-2155 eller något sådant, alltså så skrivs det inte in databasen om man skriver 3040. Spontant tyckte jag då, att ratingen ska gå från 1-5 och att det borde finnas en enkelt sätt att begränsa INT.
Det kanske är lite tidigt att introducera MVC-modellen för dig, då jag gissar på att är relativt ny i branschen. Kortfattat så delegerar man en del av ens applikation till att prata mot någon typ av källa. Exakt vad källan är för något ska inte spela någon roll för övriga delar av applikationen.
Ungefär så här.
Exakt hur alla bilar hämtas är irrelevant för övriga delar av ens applikation.
Källan kan te.x vara Volvos hemsida eller en PostgreSQL-databas.