Opgemerkt moet worden dat, zoals elke classificatie, onze classificatie van informatiesysteemarchitecturen niet absoluut rigide is. In de architectuur van een bepaald informatiesysteem zijn vaak de invloeden van verschillende algemene architecturale beslissingen terug te vinden. Bij het architectonisch ontwerpen van een systeem lijkt het echter nuttig om op zijn minst een gedeeltelijk orthogonale architecturale basis te hebben. In de volgende delen van de cursus zullen we de kenmerken van elke architectuur in detail bekijken en stilstaan bij de methodologieën en technologische hulpmiddelen die het ontwerp en de ontwikkeling van informatiesystemen in de overeenkomstige architectuur ondersteunen.
2.1. Bestandsservertoepassingen
Blijkbaar is de organisatie van informatiesystemen op basis van het gebruik van speciale bestandsservers nog steeds het meest wijdverbreid vanwege de aanwezigheid van een groot aantal personal computers met verschillende ontwikkelingsniveaus en de relatief goedkope verbinding van pc's met lokale netwerken. Wat trekt zo'n organisatie van informatiesysteemontwikkelaars aan die niet erg ervaren zijn op het gebied van systeemprogrammering? Hoogstwaarschijnlijk blijft de autonomie van de applicatiesoftware (en de meeste systeemsoftware) die op elke pc in het netwerk draait, behouden, hoewel ze vertrouwen op bestandsserver-architecturen. In feite werken de componenten van het informatiesysteem, die op verschillende pc's worden uitgevoerd, alleen met elkaar samen dankzij de aanwezigheid van een gemeenschappelijke bestandsopslag, die is opgeslagen op een bestandsserver. In het klassieke geval dupliceert elke pc niet alleen applicatieprogramma's, maar ook databasebeheertools. De bestandsserver is een uitbreiding van het schijfgeheugen dat door alle pc's van het complex wordt gedeeld (Figuur 2.1).
Zonder in detail stil te staan bij de veelbelovende tools voor de ontwikkeling van file-server-applicaties die vandaag op de markt beschikbaar zijn en zonder een analyse te geven van de ontwikkelingstrends van de corresponderende technologieën (het derde deel van de cursus is hieraan gewijd), zullen we kort noem de belangrijkste voor- en nadelen van bestandsserver-architecturen.
Het belangrijkste voordeel is natuurlijk het gemak van de organisatie. Ontwerpers en ontwikkelaars van het informatiesysteem bevinden zich in de vertrouwde en comfortabele omstandigheden van een IBM-pc in MS-DOS, Windows of een willekeurige lichtgewicht versie van Windows NT. Er zijn handige en geavanceerde ontwikkeltools voor de grafische gebruikersinterface, gebruiksvriendelijke tools voor het ontwikkelen van databasesystemen en/of DBMS. Maar in veel opzichten is deze eenvoud duidelijk. (Zoals het Russische spreekwoord zegt: "Eenvoud is erger dan stelen", en hier hebben we meestal eenvoud gebaseerd op diefstal van pc-software.)
Rijst. 2.1. De klassieke weergave van het informatiesysteem in de "file-server"-architectuur
Ten eerste moet het informatiesysteem met de database werken. Daarom moet deze database worden ontworpen. Om de een of andere reden geloven ontwikkelaars van bestandsservertoepassingen vaak dat vanwege de eenvoud van databasebeheertools, het probleem van databaseontwerp kan worden verwaarloosd. Dit is natuurlijk fout. De databank is een databank. Hoe beter het is ontworpen, hoe meer kans er is om het informatiesysteem later effectief te gebruiken. Uiteraard wordt de complexiteit van het databaseontwerp bepaald door de objectieve complexiteit van het gesimuleerde domein. Maar waaruit zou in feite moeten volgen dat bestandsservertoepassingen alleen geschikt zijn voor eenvoudige vakgebieden?
Ten tweede, zoals we herhaaldelijk hebben benadrukt in het eerste deel van de cursus, zijn de noodzakelijke vereisten voor de informatiesysteemdatabase het behoud van zijn integrale staat en gegarandeerde betrouwbaarheid van informatieopslag. De minimale voorwaarden waaronder aan deze eisen kan worden voldaan zijn:
- de aanwezigheid van transactiecontrole, opslag van redundante gegevens (bijvoorbeeld met behulp van logboekmethoden), de mogelijkheid om integriteitsbeperkingen te formuleren en de naleving ervan te verifiëren.
De bestandsserverorganisatie, zoals weergegeven in figuur 2.1, is in principe niet in strijd met het naleven van de genoemde voorwaarden. Een voorbeeld van een systeem dat aan deze voorwaarden voldoet, maar gebaseerd is op een bestandsserverarchitectuur, is de in het verleden populaire Informix SE "databaseserver".
Lange opmerking:
Om de duidelijkheid van de verdere presentatie te behouden, moeten we de terminologie enigszins verduidelijken. Niet voor niets schreven we "databaseserver" tussen aanhalingstekens voor het Informix SE DBMS. Met dit systeem werd een kopie van de DBMS-software bijgehouden voor elke door de gebruiker geïnitieerde DBMS-sessie. Grofweg werd voor elk gebruikersproces dat interactie had met de database, een DBMS-serviceproces gemaakt, dat werd uitgevoerd op dezelfde processor als het gebruikersproces (d.w.z. aan de clientzijde). Elk van deze serviceprocessen gedroeg zich eigenlijk alsof ze de enige vertegenwoordiger van het DBMS waren. Alle synchronisatie van mogelijk parallel werk met de database werd uitgevoerd op het niveau van externe geheugenbestanden die de database bevatten. Laten we voortaan overeenkomen om dergelijke DBMS geen databaseservers te noemen, maar databasebeheersystemen op basis van de bestandsserverarchitectuur (DBMS-FS).
Met een echte databaseserver bedoelen we softwarevorming gekoppeld aan de corresponderende database(s), bestaande, in het algemeen, ongeacht het bestaan van gebruikers (client) processen en uitgevoerd, in het algemeen (hoewel niet noodzakelijk) op dedicated hardware (we hebben bewust we gebruiken niet erg specifieke termen "software-educatie" en "dedicated hardware", omdat hun specifieke implementatie verschilt in verschillende databaseservers).
Echte databaseservers zijn veel complexer qua organisatie dan de DBMS-FS, maar ze bieden fijner en efficiënter databasebeheer. In de rest van deze cursus, wanneer we de term "databaseserver" gebruiken, bedoelen we echte databaseservers.
Maar aan de andere kant wordt in de meeste persoonlijke DBMS niet aan deze voorwaarden voldaan, zelfs niet met behulp van ruwe methoden. In het beste geval is het mogelijk om de tekortkomingen op het niveau van applicatieprogramma's gedeeltelijk te compenseren.
Ten derde is de interface van geavanceerde databaseservers gebaseerd op het gebruik van een SQL-databasetaal op hoog niveau, die het gebruik van netwerkverkeer tussen de client en de databaseserver alleen voor nuttige doeleinden mogelijk maakt (SQL-statements worden voornamelijk verzonden van de client naar de server, van de server naar de client - de resultaten van de uitvoering van operators). In een bestandsserverorganisatie werkt de client met externe bestanden, wat een aanzienlijke overbelasting van het verkeer veroorzaakt (aangezien de DBMS-FS aan de clientzijde werkt, is het in het algemeen noodzakelijk om de volledige bijbehorende bestand aan de clientzijde).
Over het algemeen hebben we in een bestandsserverarchitectuur een "dikke" client en een zeer "dunne" server in die zin dat bijna al het werk aan de clientzijde wordt gedaan en de server alleen voldoende schijfruimte nodig heeft (Figuur 2.2).
Rijst. 2.2. Dikke client en dunne server in bestandsserverarchitectuur
Korte conclusies. Een eenvoudige, kleine bestandsservertoepassing voor één gebruiker kan zeer snel worden ontworpen, ontwikkeld en debuggen. Heel vaak voor een klein bedrijf om bijvoorbeeld personeelsdossiers bij te houden, is het voldoende om een geïsoleerd systeem op een stand-alone pc te hebben. Uiteraard is ook in dit geval grote zorg vereist van eindgebruikers (of beheerders, van wie de aanwezigheid in dit geval twijfelachtig is) om de integriteit van de gegevens veilig op te slaan en te behouden. In al iets complexere gevallen (bijvoorbeeld bij het organiseren van een informatiesysteem ter ondersteuning van een project dat door een groep wordt uitgevoerd), worden fileserver-architecturen echter onvoldoende.
Client-server-applicaties
Met een client-servertoepassing bedoelen we een informatiesysteem gebaseerd op het gebruik van databaseservers (zie de lange noot aan het einde van paragraaf 2.1). Het algemene beeld van het informatiesysteem in de client-server-architectuur is weergegeven in figuur 2.3.
- Aan de clientzijde wordt de applicatiecode uitgevoerd, die noodzakelijkerwijs componenten bevat die de interface met de eindgebruiker ondersteunen, rapporten produceren en andere applicatiespecifieke functies uitvoeren (totdat we ons zorgen maken over hoe de applicatiecode is opgebouwd). De clientzijde van de toepassing werkt samen met de clientzijde van de databasebeheersoftware, die in feite een individuele DBMS-vertegenwoordiger is voor de toepassing.
(Dit is waar de terminologie opnieuw gebrekkig is. Meestal, wanneer een bedrijf de release van een nieuwe databaseserver aankondigt, wordt impliciet begrepen dat er ook een clientzijde van dit product is. De combinatie "clientzijde van een databaseserver" lijkt een beetje vreemd, maar dit is wat we de term moeten gebruiken.)
Rijst. 2.3. Algemeen beeld van het informatiesysteem in de client-server-architectuur
Merk op dat de interface tussen de front-end van de applicatie en de front-end van de databaseserver meestal gebaseerd is op SQL. Daarom worden functies zoals bijvoorbeeld het voorbewerken van formulieren die bedoeld zijn voor query's naar de database, of het genereren van de resulterende rapporten uitgevoerd in de applicatiecode.
Ten slotte heeft de clientzijde van de databaseserver, met behulp van netwerktoegangsfaciliteiten, toegang tot de databaseserver en geeft deze de tekst van de SQL-instructie door.
Er zijn hier nog twee opmerkingen.
Bedrijven die geavanceerde databaseservers produceren, streven er doorgaans naar om ervoor te zorgen dat hun producten niet alleen kunnen worden gebruikt in de huidige standaard op TCP / IP gebaseerde netwerken, maar ook in netwerken die zijn gebaseerd op andere protocollen (bijvoorbeeld SNA of IPX / SPX) ... Daarom worden bij het organiseren van netwerkinteracties tussen de client- en servergedeelten van het DBMS vaak geen standaard tools op hoog niveau (bijvoorbeeld software-sockets of externe procedureaanroepen) gebruikt, maar hun eigen functioneel vergelijkbare tools die minder afhankelijk zijn van de functies van netwerktransportprotocollen. Als we het hebben over een interface gebaseerd op de SQL-taal, moeten we ons ervan bewust zijn dat ondanks de enorme inspanningen om deze taal te standaardiseren, er geen implementatie is waarin de standaardfuncties van de taal niet zijn uitgebreid. Roekeloos gebruik van taalextensies leidt tot volledige afhankelijkheid van de applicatie van de specifieke fabrikant van de databaseserver.
Laten we nu eens kijken wat er gebeurt aan de kant van de databaseserver. In de producten van bijna alle bedrijven ontvangt de server van de klant de tekst van het statement in SQL.
- De server compileert de ontvangen operator. We zullen hier niet uitweiden over welke doeltaal door een bepaalde compiler wordt gebruikt; verschillende implementaties gebruiken verschillende benaderingen (zie deel 4 voor voorbeelden). Het belangrijkste is dat in ieder geval, op basis van de informatie in de databasecatalogustabellen, de niet-procedurele weergave van de operator wordt omgezet in een bepaalde procedure voor de uitvoering ervan. Verder (als de compilatie met succes is voltooid) wordt de instructie uitgevoerd. Nogmaals, we zullen geen technische details bespreken omdat ze verschillen in implementatie. Laten we eens kijken naar de mogelijke acties van de SQL-instructies.
- Een operator kan behoren tot de klasse van operators voor het bepalen (of maken) van database-objecten (het zou nauwkeuriger en correcter zijn om te praten over elementen van een databaseschema of over metabase-objecten). In het bijzonder kunnen domeinen, tabellen, integriteitsbeperkingen, triggers, gebruikersrechten en opgeslagen procedures worden gedefinieerd. In ieder geval, wanneer de instructie om een databaseschema-element te maken wordt uitgevoerd, wordt de bijbehorende informatie in de databasecatalogustabellen (in de metabasetabellen) geplaatst. Integriteitsbeperkingen worden meestal direct in de tekstweergave in de metabase opgeslagen. Voor acties die zijn gedefinieerd in triggers en opgeslagen procedures, wordt procedurele uitvoerbare code gegenereerd en opgeslagen in catalogustabellen. Merk op dat integriteitsbeperkingen, triggers en opgeslagen procedures in zekere zin representatief zijn voor een toepassing in een door een server ondersteunde database; ze vormen de ruggengraat van de applicatie (zie hieronder). Bij het uitvoeren van gegevensselectie-instructies op basis van de inhoud van de tabellen waarop de query betrekking heeft en, mogelijk, met behulp van de indexen die in de database worden ondersteund, wordt de resulterende dataset gevormd (we gebruiken hier bewust niet de term "resultatentabel", omdat afhankelijk op het specifieke type operator kan het resultaat worden geordend, en tabellen, dat wil zeggen, relaties zijn per definitie ongeordend). De serverzijde van het DBMS stuurt het resultaat naar de clientzijde en de uiteindelijke verwerking vindt plaats aan de clientzijde van de toepassing. Bij het uitvoeren van operators voor het wijzigen van de inhoud van de database (INSERT, UPDATE, DELETE), wordt gecontroleerd of de integriteitsbeperkingen die op dat moment zijn gedefinieerd (die behoren tot de klasse van direct controleerbaar) niet worden geschonden, waarna de juiste actie wordt ondernomen wordt genomen (vergezeld van de wijziging van alle relevante indexen en logboekwijzigingen). Vervolgens controleert de server of deze wijziging de triggervoorwaarde van een trigger beïnvloedt, en als een dergelijke trigger wordt gevonden, voert deze zijn actieprocedure uit. Deze procedure kan aanvullende instructies voor het wijzigen van de database bevatten die andere triggers kunnen activeren, enz. U kunt ervan uitgaan dat de acties die op de databaseserver worden uitgevoerd bij het controleren of aan integriteitsbeperkingen is voldaan en wanneer triggers worden geactiveerd, de acties zijn van de backend van de toepassing. .. Bij het uitvoeren van instructies voor het wijzigen van databaseschema's (toevoegen of verwijderen van kolommen van bestaande tabellen, wijzigen van het gegevenstype van een bestaande kolom van een bestaande tabel, enz.) triggers kunnen ook worden geactiveerd, d.w.z. met andere woorden, de serverkant van de applicatie kan worden uitgevoerd. Evenzo kunnen triggers worden geactiveerd wanneer objecten in het databaseschema (domeinen, tabellen, integriteitsbeperkingen, enz.) worden vernietigd. Een speciale klasse van SQL-operators bestaat uit operators die eerder gedefinieerde opgeslagen procedures aanroepen die in de database zijn opgeslagen. Als een opgeslagen procedure is gedefinieerd met behulp van een voldoende ontwikkelde taal die zowel niet-procedurele SQL-instructies als puur procedurele constructies bevat (bijvoorbeeld de PL / SQL-taal van Oracle), dan kan een dergelijke procedure een aanzienlijk deel van de applicatie bevatten, die, wanneer de procedure-aanroepinstructie wordt uitgevoerd, wordt uitgevoerd aan de serverzijde en niet aan de clientzijde. Bij het uitvoeren van de transactievoltooiingsverklaring moet de server de naleving van alle zogenaamde uitgestelde integriteitsbeperkingen controleren (dergelijke beperkingen omvatten beperkingen die worden opgelegd aan de inhoud van de databasetabel als geheel of aan meerdere tabellen tegelijk; bijvoorbeeld de het totale salaris van de afdelingsmedewerkers 999 mag niet hoger zijn dan 150 miljoen roebel.). Nogmaals, het controleren op uitgestelde integriteitsbeperkingen kan worden gezien als het uitvoeren van de achterkant van de toepassing.
Zoals u kunt zien, kunnen clients in een client-serverorganisatie dun genoeg zijn en moet de server dik genoeg zijn om aan de behoeften van alle clients te kunnen voldoen (Figuur 2.4).
Rijst. 2.4. Thin client en fat server in client-server-architectuur
Aan de andere kant zijn ontwikkelaars en gebruikers van informatiesystemen gebaseerd op de client-server-architectuur vaak ontevreden over de aanhoudende netwerkoverheadkosten die het gevolg zijn van de noodzaak om bij elk volgend verzoek van de client naar de server te gaan. In de praktijk is de situatie wijdverbreid dat voor de effectieve werking van een afzonderlijk klantonderdeel van een informatiesysteem in werkelijkheid slechts een klein deel van de totale database nodig is. Dit leidt tot het idee om een lokale gedeelde databasecache aan de clientzijde te onderhouden.
In feite is het concept van lokale databasecaching een speciaal geval van het concept van gerepliceerde (of, zoals ze in de Russischtalige literatuur soms worden genoemd, gerepliceerde) databases. Zoals in het algemene geval, moet de werkstationsoftware, om de lokale databasecache te ondersteunen, een databasebeheercomponent bevatten - een vereenvoudigde versie van de databaseserver die bijvoorbeeld geen toegang voor meerdere gebruikers mag bieden. Een apart punt is het zorgen voor de consistentie (samenhang) van caches en de gemeenschappelijke database. Hierbij zijn verschillende oplossingen mogelijk - van het automatisch behouden van de consistentie door middel van basis databasebeheersoftware tot het volledig overdragen van deze taak aan de applicatielaag. In ieder geval worden de clients dikker zonder de server dunner te maken (Figuur 2.5).
Rijst. 2.5. Fat client en fat server in client-server-architectuur met lokale cache-ondersteuning aan de clientzijde
Laten we enkele voorlopige conclusies formuleren. De client-server-architectuur lijkt op het eerste gezicht veel duurder dan de file-server-architectuur. Er is krachtigere hardware nodig (in ieder geval voor de server) en veel geavanceerdere hulpprogramma's voor databasebeheer. Dit is echter slechts gedeeltelijk waar. Een enorm voordeel van de client-server-architectuur is de schaalbaarheid en, in het algemeen, de mogelijkheid om te ontwikkelen.
Bij het ontwerpen van een informatiesysteem op basis van deze architectuur moet meer aandacht worden besteed aan de geletterdheid van algemene beslissingen. De technische middelen van de pilotversie kunnen minimaal zijn (een van de werkstations kan bijvoorbeeld worden gebruikt als hardwarebasis van de databaseserver). Na totstandkoming van de pilot moet aanvullend onderzoek worden gedaan om knelpunten in het systeem te identificeren. Pas daarna is het nodig om een beslissing te nemen over de keuze van de serverhardware die in de praktijk zal worden gebruikt.
De schaalvergroting van het informatiesysteem levert geen fundamentele problemen op. De gebruikelijke oplossing is om de serverhardware te vervangen (en misschien de hardware van het werkstation als een overstap naar lokale databasecaching vereist is). In ieder geval wordt het toegepaste deel van het informatiesysteem praktisch niet aangetast. Idealiter, wat natuurlijk niet bestaat, blijft het informatiesysteem normaal functioneren na het wisselen van apparatuur.
Het doel van de lezing: laten zien hoe de algemene principes van client-servertechnologieën worden geïmplementeerd in webtechnologieën. Onderzoek de belangrijkste elementen van het onderliggende HTTP-protocol.
Het onderwerp van deze cursus zijn de technologieën van het wereldwijde netwerk World Wide Web (afgekort als WWW of simpelweg het Web). In het Russisch is een veel voorkomende variant de naam "Web".
In het bijzonder zal de cursus onderwerpen behandelen als: basisstandaarden en protocollen van het web, opmaaktalen en programmeertalen voor webpagina's, tools voor het ontwikkelen en beheren van webcontent en applicaties voor het web, tools voor het integreren van webcontent en applicaties in het web.
Netto Web is een wereldwijde informatieruimte gebaseerd op de fysieke infrastructuur van internet en het HTTP-protocol voor gegevensoverdracht. Als we het over internet hebben, bedoelen ze vaak het netwerk. Web.
Client-servertechnologieën Web
Het basisprotocol van het netwerk van hypertextbronnen Web is het HTTP-protocol. Het is gebaseerd op interactie" client server", dat wil zeggen, er wordt aangenomen dat:
Klant- klant na het initiëren van een verbinding met de serverprovider, stuurt deze een verzoek naar hem;
De leverancier- server Na het verzoek te hebben ontvangen, voert het de nodige acties uit en stuurt het een antwoord met het resultaat terug naar de klant.
In dit geval zijn er twee mogelijke manieren om het werk van de clientcomputer te organiseren:
Thin client is een clientcomputer die alle informatieverwerkingstaken naar de server overdraagt. Een voorbeeld van een thin client is een computer met een browser die wordt gebruikt om webapplicaties uit te voeren.
Dikke klant integendeel, het verwerkt informatie onafhankelijk van de server en gebruikt deze voornamelijk voor het opslaan van gegevens.
Laten we, voordat we verder gaan met specifieke client/server-webtechnologieën, eens kijken naar de fundamenten en structuur van het onderliggende HTTP-protocol.
HTTP-protocol
HTTP(HyperText Transfer Protocol - RFC 1945, RFC 2616) is een applicatielaagprotocol voor het overbrengen van hypertext.
Centraal in HTTP is hulpbron gewezen door URI op verzoek van de klant. Meestal zijn deze bronnen bestanden die op de server zijn opgeslagen. Een kenmerk van het HTTP-protocol is de mogelijkheid om in een verzoek en een antwoord een manier te specificeren om dezelfde bron door verschillende parameters weer te geven: formaat, codering, taal, enz. Het is dankzij de mogelijkheid om de methode voor het coderen van een bericht te specificeren dat de client en de server binaire gegevens kunnen uitwisselen, hoewel dit protocol in eerste instantie bedoeld was voor het overdragen van symbolische informatie. Op het eerste gezicht lijkt dit misschien een verspilling van middelen. Gegevens in symbolische vorm nemen inderdaad meer geheugen in beslag, berichten zorgen voor een extra belasting van communicatiekanalen, maar dit formaat heeft veel voordelen. De berichten die via het netwerk worden verzonden, zijn leesbaar en door de ontvangen gegevens te analyseren, kan de systeembeheerder de fout gemakkelijk vinden en oplossen. Indien nodig kan de rol van een van de interactieve applicaties worden vervuld door een persoon, waarbij handmatig berichten in het vereiste formaat worden ingevoerd.
In tegenstelling tot veel andere protocollen is HTTP een geheugenloos protocol. Dit betekent dat het protocol geen informatie opslaat over eerdere clientverzoeken en serverreacties. Componenten die HTTP gebruiken, kunnen onafhankelijk statusinformatie bijhouden die is gekoppeld aan de meest recente verzoeken en antwoorden. Een webclienttoepassing die verzoeken verzendt, kan bijvoorbeeld responsvertragingen bijhouden en een webserver kan de IP-adressen en verzoekheaders van recente clients opslaan.
Alle software voor het werken met het HTTP-protocol valt in drie hoofdcategorieën:
Servers- aanbieders van diensten voor het opslaan en verwerken van informatie (verwerkingsverzoeken).
Klanten- eindgebruikers van serverdiensten (verzenden van verzoeken).
Proxyservers om het werk van vervoersdiensten te ondersteunen.
Het "klassieke" HTTP-sessieschema ziet er als volgt uit.
Een TCP-verbinding tot stand brengen.
Klant verzoek.
Serverreactie.
Gebroken TCP-verbinding.
De client stuurt dus een verzoek naar de server, ontvangt er een reactie van, waarna de interactie wordt beëindigd. Gewoonlijk is een clientverzoek een verzoek om een HTML-document of een andere bron te verzenden, en het antwoord van de server bevat de code voor die bron.
Het HTTP-verzoek dat van een client naar een server wordt verzonden, omvat de volgende componenten.
Statusbalk (soms worden de termen statusbalk of querystring ook gebruikt om het aan te duiden).
Koptekst velden.
Lege regel.
De hoofdtekst van het verzoek.
Statusbalk samen met koptekstvelden soms ook genoemd verzoek header.
Rijst. 1.1. Vraagstructuur van de klant.
Statusbalk heeft het volgende formaat:
request_method url_pecypca nttp_protocol_version
Laten we eens kijken naar de componenten van de statusbalk, met de nadruk op querymethoden.
Methode, gespecificeerd in de statusbalk, bepaalt hoe de bron kan worden beïnvloed, waarvan de URL in dezelfde regel wordt gespecificeerd. De methode kan de waarden GET, POST, HEAD, PUT, DELETE, etc. aannemen. Ondanks de overvloed aan methoden, zijn er slechts twee echt belangrijk voor een webprogrammeur: GET en POST.
KRIJGEN. Volgens de formele definitie is de GET-methode bedoeld om een bron met de opgegeven URL te krijgen. Bij ontvangst van een GET-verzoek moet de server de gespecificeerde bron lezen en de bron-ID opnemen in het antwoord aan de client. De bron waarvan de URL wordt doorgegeven als onderdeel van het verzoek, hoeft geen HTML-pagina, afbeeldingsbestand of andere gegevens te zijn. De bron-URL kan verwijzen naar de uitvoerbare code van het programma, die, als aan bepaalde voorwaarden is voldaan, op de server moet worden uitgevoerd. In dit geval is het niet de programmacode die naar de client wordt teruggestuurd, maar de gegevens die tijdens de uitvoering worden gegenereerd. De GET-methode is per definitie bedoeld om informatie op te halen, maar kan ook voor andere doeleinden worden gebruikt. De GET-methode is heel geschikt voor het overbrengen van kleine stukjes gegevens naar de server.
NA. Volgens dezelfde formele definitie is het belangrijkste doel van de POST-methode het overbrengen van gegevens naar de server. De POST-methode kan echter, net als de GET-methode, op verschillende manieren worden gebruikt en wordt vaak gebruikt om informatie van een server op te halen. Net als bij de GET-methode verwijst de URL die is opgegeven in de statusbalk naar een specifieke bron. De POST-methode kan ook worden gebruikt om een proces te starten.
De HEAD- en PUT-methoden zijn modificaties van de GET- en POST-methoden.
HTTP-protocolversie wordt meestal gegeven in het volgende formaat:
Http / versie.modificatie
Koptekstvelden door de statusbalk te volgen, kunt u uw zoekopdracht verfijnen, d.w.z. aanvullende informatie naar de server sturen. Het kopveld heeft het volgende formaat:
Veldnaam: Waarde
Het doel van een veld wordt bepaald door de naam, die door een dubbele punt van de waarde wordt gescheiden.
De namen van enkele van de meest voorkomende kopvelden in een klantverzoek en hun doel worden gegeven in: tabblad. 1.1.
Tabel 1.1. Velden voor HTTP-verzoekheader. |
|
Velden in koptekst van HTTP-verzoek |
Betekenis |
Domeinnaam of IP-adres van de host waartoe de client toegang heeft |
|
De URL van het document dat linkt naar de bron aangegeven in de statusbalk |
|
E-mailadres klant |
|
MIME-typen gegevens die door de klant worden verwerkt. Dit veld kan meerdere waarden hebben, van elkaar gescheiden door komma's. Vaak wordt het veld Accept-header gebruikt om de server te vertellen welke typen grafische bestanden de client ondersteunt. |
|
Een set identificatiecodes van twee tekens, gescheiden door komma's, die de talen aangeven die door de client worden ondersteund |
|
Lijst met ondersteunde tekensets |
|
MIME-type gegevens in de aanvraagtekst (als de aanvraag niet uit één enkele kop bestaat) |
|
Het aantal tekens in de hoofdtekst van het verzoek (als het verzoek niet uit één kop bestaat) |
|
Aanwezig als de klant niet het hele document opvraagt, maar slechts een deel ervan |
|
Wordt gebruikt om de TCP-verbinding te beheren. Als het veld Sluiten bevat, betekent dit dat de server na het verwerken van het verzoek de verbinding moet sluiten. De Keep-Alive-waarde stelt voor om de TCP-verbinding niet te sluiten, zodat deze voor volgende verzoeken kan worden gebruikt |
|
Klanteninformatie |
In veel gevallen ontbreekt bij het werken op het web de hoofdtekst van het verzoek. Wanneer CGI-scripts worden uitgevoerd, kunnen de gegevens die in het verzoek aan hen worden doorgegeven, in de hoofdtekst van het verzoek worden geplaatst.
Hieronder ziet u een voorbeeld van een HTML-verzoek dat door de browser is gegenereerd:
GET http://oak.oakland.edu/ HTTP / 1.0
Verbinding: Keep-Alive
Gebruikersagent: Mozilla/4.04 (Win95; I)
Gastheer: eiken.oakland.edu
Accepteren: afbeelding / gif, afbeelding / x-xbitmap, afbeelding / jpeg, afbeelding / pjpeg, afbeelding / png, * / *
Accepteer-taal: en
Accept-tekenset: iso-8859-l, *, utf-8
Na een verzoek van de client te hebben ontvangen, moet de server hierop reageren. Voor de ontwikkelaar van webapplicaties is kennis van de structuur van de serverrespons noodzakelijk, aangezien de programma's die op de server draaien zelfstandig de respons naar de client moeten vormen.
Net als het verzoek van de client, bevat het antwoord van de server ook de vier onderstaande componenten.
Statusbalk.
Koptekst velden.
Lege regel.
Reactie lichaam.
De reactie van de server op de client begint met een statusregel, die de volgende indeling heeft:
Protocol_version Response_code Explanatory_message
Protocol_versie wordt gespecificeerd in hetzelfde formaat als in het verzoek van de klant en heeft dezelfde betekenis.
Reactiecode is een decimaal getal van drie cijfers dat het resultaat van het verwerken van het verzoek door de server heeft gecodeerd.
Explanatory_message dupliceert de antwoordcode in symbolische vorm. Dit is een tekenreeks die niet door de client wordt verwerkt. Het is bedoeld voor de systeembeheerder of operator die het systeem onderhoudt en is een decodering van de responscode.
Van de drie cijfers waaruit de responscode bestaat, definieert de eerste (hoogste) de responsklasse, de andere twee vertegenwoordigen het responsnummer binnen de klasse. Dus als het verzoek bijvoorbeeld met succes is verwerkt, ontvangt de klant het volgende bericht:
HTTP / 1.0 200 OK
Zoals u kunt zien, wordt de versie van het HTTP 1.0-protocol gevolgd door een code 200. In deze code betekent teken 2 een succesvolle verwerking van het verzoek van de klant, en de resterende twee cijfers (00) zijn het nummer van dit bericht.
In momenteel gebruikte HTTP-protocolimplementaties kan het eerste cijfer niet groter zijn dan 5 en definieert het de volgende responsklassen.
1 - een speciale klasse van berichten die informatief wordt genoemd. Een responscode die begint met 1 betekent dat de server het verzoek blijft verwerken. Bij het uitwisselen van gegevens tussen een HTTP-client en een HTTP-server worden berichten van deze klasse zelden gebruikt.
2 - succesvolle verwerking van de aanvraag van de klant.
3 - omleiding aanvragen. Er moeten aanvullende stappen worden ondernomen om aan het verzoek te voldoen.
4 - klantfout. Meestal wordt een responscode die begint met het cijfer 4 geretourneerd als er een syntaxisfout wordt aangetroffen in het verzoek van de client.
5 - Serverfout. Om de een of andere reden kan de server niet aan het verzoek voldoen.
Voorbeelden van responscodes die de client van de server kan ontvangen, en verklarende berichten worden gegeven in de tabel. 1.2.
Tabel 1.2. Serverresponscodeklassen. |
||
decodering |
Interpretatie |
|
Een deel van het verzoek is geaccepteerd en de server wacht tot de client het verzoek voortzet. |
||
Het verzoek is met succes verwerkt en de in het verzoek gespecificeerde gegevens worden verzonden in het antwoord van de klant |
||
Als resultaat van het verwerken van het verzoek is er een nieuwe bron gemaakt |
||
Het verzoek is geaccepteerd door de server, maar de verwerking is niet voltooid. Deze responscode garandeert niet dat het verzoek foutloos wordt verwerkt. |
||
Gedeeltelijke inhoud |
De server retourneert een deel van de bron als reactie op een verzoek dat een Range-headerveld bevat |
|
Meerkeuze |
De aanvraag verwijst naar meer dan één resource. De hoofdtekst van het antwoord kan instructies bevatten voor het correct identificeren van de gevraagde bron. |
|
permanent verhuisd |
De gevraagde bron bevindt zich niet langer op de server |
|
Tijdelijk verplaatst |
De gevraagde bron is tijdelijk van adres veranderd |
|
Syntaxisfout gevonden in clientverzoek |
||
De bron op de server is niet beschikbaar voor deze gebruiker |
||
De door de client gespecificeerde bron ontbreekt op de server |
||
methode niet toegestaan |
De server ondersteunt de in het verzoek gespecificeerde methode niet |
|
Interne Server Fout |
Een van de servercomponenten werkt niet correct |
|
Niet geïmplementeerd |
De serverfunctionaliteit is onvoldoende om aan het verzoek van de klant te voldoen |
|
Service onbeschikbaar |
Dienst tijdelijk niet beschikbaar |
|
HTTP-versie niet ondersteund |
De HTTP-versie die is opgegeven in het verzoek wordt niet ondersteund door de server |
Het antwoord gebruikt dezelfde kopveldstructuur als het clientverzoek. Headervelden zijn bedoeld om de reactie van de server op de client te verduidelijken. Een beschrijving van enkele van de velden die in de serverresponsheader kunnen worden gevonden, wordt gegeven in de tabel. 1.3.
Tabel 1.3. Velden voor responsheader van webserver. |
|
Veldnaam |
Inhoudsbeschrijving |
Servernaam en versienummer |
|
Tijd in seconden die is verstreken sinds de bron is gemaakt |
|
Lijst met toegestane methoden voor deze bron |
|
Inhoud-taal |
Talen die de klant moet ondersteunen om de overgedragen bron correct weer te geven |
MIME-type gegevens in de hoofdtekst van de serverreactie |
|
Het aantal tekens in de hoofdtekst van de serverreactie |
|
Datum en tijd waarop de bron voor het laatst is gewijzigd |
|
Datum en tijd die bepalen wanneer het antwoord wordt gegenereerd |
|
Datum en tijd die het moment bepalen waarna de aan de klant verzonden informatie als verouderd wordt beschouwd |
|
Dit veld geeft de werkelijke locatie van de resource aan. Het wordt gebruikt om het verzoek om te leiden. |
|
Caching controle richtlijnen. No-cache betekent bijvoorbeeld dat gegevens niet in de cache mogen worden opgeslagen |
De hoofdtekst van het antwoord bevat de code van de bron die als reactie op het verzoek aan de client is doorgegeven. Het hoeft niet de HTML-tekst van de webpagina te zijn. Als onderdeel van het antwoord kan een afbeelding, een audiobestand, een stukje video-informatie, evenals elk ander type gegevens dat door de klant wordt ondersteund, worden verzonden. De inhoud van het koptekstveld van het type Inhoud vertelt de klant hoe de ontvangen bron moet worden afgehandeld.
Hieronder ziet u een voorbeeld van een serverreactie op het verzoek dat in de vorige sectie is gegeven. De hoofdtekst van het antwoord bevat de originele tekst van het HTML-document.
Server: Microsoft-IIS / 5.1
X-aangedreven door: ASP.NET
Inhoudstype: tekst / html
Accept-bereiken: bytes
ETag: "b66a667f948c92: 8a5"
Inhoudslengte: 426
Client-servertechnologieën
Vrijwel alle modellen voor het organiseren van gebruikersinteractie met een database zijn gebaseerd op client-servertechnologie. Aangenomen wordt dat elk van deze toepassingen verschilt in de manier waarop functies worden verdeeld: het clientgedeelte is verantwoordelijk voor de gerichte verwerking van gegevens en de organisatie van de interactie met de gebruiker, het servergedeelte zorgt voor gegevensopslag - verwerkt verzoeken en stuurt de resultaten naar de klant voor speciale verwerking. Een typische architectuur van client-servertechnologie wordt getoond in Fig. 4.1:
Rijst. 4.1. Typische architectuur van client-servertechnologie
Een deel van de functies van de centrale computers werd overgenomen door lokale computers. In dit geval wordt elke softwaretoepassing vertegenwoordigd door drie componenten: een presentatiecomponent die een interface met de gebruiker implementeert; een applicatiecomponent die voorziet in de implementatie van applicatiefuncties; onderdeel van toegang tot informatiebronnen (resourcemanager), het uitvoeren van informatieaccumulatie en gegevensbeheer.
Op basis van de verdeling van deze componenten tussen een werkstation en een netwerkserver worden de volgende modellen van de "client-server"-architectuur onderscheiden:
· Model van toegang tot gegevens op afstand (Fig. 4.2). De server bevat alleen gegevens:
Rijst. 4.2. Model voor gegevenstoegang op afstand
Dit model wordt gekenmerkt door lage prestaties, aangezien alle informatie op werkstations wordt verwerkt; daarnaast wordt een lage wisselkoers ondersteund bij het overbrengen van grote hoeveelheden informatie van een server naar werkstations;
Model databeheerserver (fig. 4.3):
Rijst. 4.3. Model gegevensbeheerserver
Kenmerken van dit model: vermindering van de hoeveelheid informatie die via het netwerk wordt verzonden, aangezien de selectie van de benodigde informatie-elementen op de server wordt uitgevoerd en niet op werkstations; unificatie en een breed scala aan tools voor het maken van applicaties; het ontbreken van een duidelijk onderscheid tussen de presentatiecomponent en de applicatiecomponent, waardoor het moeilijk is om het computersysteem te verbeteren. Het is raadzaam om bij het verwerken van matige hoeveelheden informatie te werken, terwijl de complexiteit van de toegepaste component laag moet zijn,
· Model van een complexe server (fig. 4.4):
Rijst. 4.4. Complex servermodel
Voordelen van het model: hoge prestaties, gecentraliseerd beheer, besparing van netwerkbronnen. Zo'n server is optimaal voor grote netwerken die gericht zijn op het verwerken van grote en toenemende hoeveelheden informatie in de loop van de tijd;
· Drielaagse architectuur "client-server" (Fig. 4.5). Het wordt gebruikt bij het compliceren en verhogen van de resource-intensiteit van de applicatiecomponent.
Rijst. 4.5. Architectuur met drie niveaus
Verschillende applicatiefuncties kunnen in de applicatieserver worden geïmplementeerd, die elk zijn ontworpen als een afzonderlijke service die bepaalde services aan alle programma's levert. Er kunnen meerdere van dergelijke servers zijn, elk van hen is gericht op het leveren van een bepaalde reeks services. Deze architectuur is gebaseerd op verdere specialisatie van architectuurcomponenten: de klant houdt zich alleen bezig met het organiseren van de interface met de gebruiker, de databaseserver voert alleen standaard gegevensverwerking uit, om de gegevensverwerkingslogica te implementeren, de architectuur biedt een aparte laag - een laag van bedrijfslogica, het kan een dedicated server zijn (toepassingsserver) of op de client worden gehost als een bibliotheek.
Binnen de client-server-architectuur zijn er twee basisconcepten:
· "dunne" cliënt. Een krachtige databaseserver en een bibliotheek met opgeslagen procedures worden gebruikt om berekeningen te maken die de hoofdlogica van gegevensverwerking direct op de server implementeren. De client-applicatie stelt dan ook weinig eisen aan de hardware van het werkstation;
· Een "dikke" client implementeert de belangrijkste verwerkingslogica op de client en de server is een pure databaseserver die alleen standaardverzoeken voor gegevensmanipulatie uitvoert (in de regel lezen, schrijven, wijzigen van gegevens in relationele databasetabellen).
Netwerk IT
E-mail... De allereerste, deze vorm van elektronisch berichtenverkeer (e-mail) demonstreerde de mogelijkheid van bijna onmiddellijke communicatie via computernetwerken. Architectonisch bedoeld voor de uitwisseling van berichten tussen twee abonnees, stelde het groepen mensen in staat om informatie uit te wisselen. Groepen of mailinglijsten werden zo'n wijziging. Met e-mailsoftware kunt u e-mailberichten maken en bijvoegen. De bijlagefunctie wordt gebruikt om documenten van elk type per post te verzenden, zoals tekstdocumenten, spreadsheets, multimediabestanden, databasebestanden, enz. Later ontwikkelde tekstfiltersoftware breidde de mogelijkheden van e-mail uit om de gebruiker te helpen bij het structureren, sturen en filteren van berichten. De behoefte aan deze diensten is te wijten aan het feit dat de hoeveelheid post, die de gebruiker bijna of niet nodig heeft (Spam), voortdurend groeit. De filtersoftware kan ervoor zorgen dat alleen persoonlijke berichten met nieuws dat voor hen belangrijk is, aan gebruikers worden bezorgd en helpt ook om informatie te vinden die gebruikers nodig hebben in het besluitvormingsproces.
Nieuwsgroepen of nieuwsgroepen... Teleconferenties zijn de volgende fase in de ontwikkeling van communicatiesystemen. Hun kenmerken waren ten eerste het opslaan van berichten en het verschaffen van toegang aan geïnteresseerden tot de volledige uitwisselingsgeschiedenis, en ten tweede verschillende methoden voor het thematisch groeperen van berichten. Dergelijke conferentiesystemen bieden een groep van gezamenlijk werkende, maar geografisch gescheiden mensen de mogelijkheid om online meningen, ideeën of informatie uit te wisselen bij het bespreken van een kwestie, waarbij tijdelijke en ruimtelijke barrières worden overwonnen. Tegenwoordig zijn er veel soorten vergadersystemen, waaronder computerconferenties (vergaderingen die via e-mail worden gehouden), conferentiegesprekken met de mogelijkheid om mobiele bellers met elkaar te verbinden, conferenties met desktop-pc's, multimedia, teleconferenties en videoconferenties.
Interactieve communicatie(chatten). Met de ontwikkeling van telecommunicatie begint een toenemend aantal gebruikers op internet te werken in een permanente aanwezigheidsmodus, daarom is er een realtime communicatieservice verschenen, wanneer een abonnee een bericht ontvangt binnen een korte tijd nadat het is verzonden door een gesprekspartner.
De meest voorkomende moderne vormen van interactieve communicatie zijn webapplicaties die de volgende vormen van communicatie organiseren:
O Gasten boeken. De eerste en eenvoudigste vorm. Het eenvoudigste gastenboek is een lijst met berichten die van de laatste tot de eerste worden weergegeven en die elk door een bezoeker erin zijn achtergelaten.
O Forums... De eerste forums kwamen naar voren als een verbetering van gastenboeken en organiseerden berichten in branches - net als nieuwsgroepen. Gebruikersberichten in forums zijn gegroepeerd op onderwerpen, die meestal worden ingesteld door de eerste berichten. Alle bezoekers kunnen het onderwerp zien en hun bericht plaatsen - als reactie op de reeds geschreven berichten. Onderwerpen zijn gegroepeerd in thematische forums, het systeem wordt beheerd door informele beheerders en moderators. De meest ontwikkelde forums beginnen de eerste tekenen van sociale netwerken te vertonen - er kunnen op lange termijn interessante sociale banden tussen de deelnemers tot stand worden gebracht.
O Blogs(Weblog - Weblog, Web-protocol). In deze diensten houdt elke deelnemer zijn eigen dagboek bij - laat records in chronologische volgorde achter. Postonderwerpen kunnen van alles zijn, de meest gebruikelijke aanpak is bloggen als je eigen dagboek. Andere bezoekers kunnen reacties achterlaten op deze berichten. In dit geval krijgt de gebruiker niet alleen de mogelijkheid om zijn eigen dagboek bij te houden, maar ook de mogelijkheid om een lijstweergave te organiseren - een lijst met vermeldingen uit de "vrienden" -tijdschriften, de toegang tot de vermeldingen te regelen en gesprekspartners op interesses te zoeken . Op basis van dergelijke systemen worden communities of interest gecreëerd, tijdschriften die gezamenlijk worden bijgehouden. In een dergelijke gemeenschap kan het lid vrijelijk elk bericht plaatsen over de richting van de activiteiten van de gemeenschap.
Over het algemeen hebben alle moderne systemen voor het waarborgen van het werk van netwerkgemeenschappen verschillende gemeenschappelijke kenmerken:
· De overgrote meerderheid van gemeenschappen voorziet in gebruikersregistratie, d.w.z. Voor elke deelnemer moet een account worden aangemaakt. Bij het registreren geeft de gebruiker ter identificatie enige informatie over zichzelf op. Bijna alle systemen vereisen dat u een e-mailadres invoert en de functionaliteit ervan controleert door een e-mail te sturen met een accountactiveringscode. Als het adres onjuist is, kan alleen de systeembeheerder de invoer activeren. Deze aanpak garandeert tot op zekere hoogte de uniciteit van de deelnemer en zijn herkenbaarheid.
· Werkzaamheden in de omgeving worden in sessies uitgevoerd. Elke sessie begint met de gebruiker die zijn naam invoert en zijn identiteit bevestigt door een wachtwoord in te voeren. Voor het gemak wordt de deelnamesessie meestal met technische middelen voor de gebruiker verborgen, maar niettemin vindt de identificatie van de gebruiker constant plaats.
Naast inloggegevens configureert de gebruiker de omgeving - uiterlijk, aanvullende gegevens over zichzelf, geeft zijn interesses, gewenste contacten, onderwerpen voor communicatie, enz.
· Sociale netwerken en de diensten die ze ondersteunen zijn een uiterst effectieve methode gebleken om siteverkeer en feedback te verzekeren, ze werden geleidelijk een van de middelen om de inhoud van de site te vullen met inhoud die echte commerciële en sociale waarde heeft.
Op basis van de laatste benadering ontstond een vrij groot aantal sociale webservices die snel aan populariteit wonnen, gezamenlijk Web 2.0-services genoemd. Sommige van deze bronnen kunnen worden gespecificeerd:
O Sociale bladwijzers... Op sommige websites kunnen gebruikers een lijst met bladwijzers of populaire websites met anderen delen. Dergelijke sites kunnen ook worden gebruikt om gebruikers met een gemeenschappelijk belang te vinden. Voorbeeld: heerlijk.
O Sociale mappen doet denken aan sociale bladwijzers, maar gericht op academisch gebruik, waardoor gebruikers kunnen werken met een database met citaten uit wetenschappelijke artikelen. Voorbeelden: Academic Search Premier, LexisNexis Academic University, CiteULike, Connotea.
O Sociale bibliotheken zijn applicaties waarmee bezoekers links naar hun collecties, boeken, audio-opnamen beschikbaar kunnen stellen aan anderen. Er wordt ondersteuning geboden voor een systeem van aanbevelingen en beoordelingen. Voorbeelden: discogs.com, IMDb.com.
O Online spellen voor meerdere spelers simuleer virtuele werelden met verschillende scoresystemen, niveaus, competitie, winnaars en verliezers. Voorbeeld: World of Warcraft.
O Meertalige sociale netwerken kunt u sociale banden aanknopen tussen mensen die verschillende talen spreken. Tegelijkertijd wordt speciale software gebruikt waarmee u zinnen in realtime van de ene taal naar de andere kunt vertalen. Voorbeelden: Dudu.
O Geosociale netwerken sociale connecties vormen op basis van de geografische locatie van de gebruiker. Tegelijkertijd worden verschillende geolocatietools gebruikt (bijvoorbeeld GPS of hybride systemen zoals AlterGeo-technologie), die het mogelijk maken om de huidige locatie van een bepaalde gebruiker te bepalen en zijn positie in de ruimte te correleren met de locatie van verschillende plaatsen en mensen in de buurt.
O Professionele sociale netwerken zijn gemaakt voor communicatie over professionele onderwerpen, uitwisseling van ervaring en informatie, zoeken en aanbieden van vacatures, ontwikkeling van zakelijke banden. Voorbeelden: Dokter op het werk, Professionals.ru, MyStarWay.com, LinkedIn, MarketingPeople, Viadeo.
O Dienst sociale netwerken gebruikers in staat stellen zich online te verenigen rond hun gemeenschappelijke interesses, hobby's of om verschillende redenen. Sommige sites bieden bijvoorbeeld services waarmee gebruikers persoonlijke informatie kunnen delen die nodig is om partners te vinden. Voorbeelden: LinkedIn, VKontakte.
O Commerciële sociale media gericht op het ondersteunen van zakelijke transacties en het opbouwen van vertrouwen van mensen in merken door rekening te houden met hun mening over het product, waardoor consumenten kunnen deelnemen aan de promotie van het product en hun bekendheid kunnen vergroten.