Serverwebprogrammering. Een methode kiezen om een ​​probleem op te lossen. Ik wil een full-stack ontwikkelaar worden

De meest pijnlijke keuze voor degenen die de wereld van programmeren willen betreden, is het kiezen van hun vakgebied. Het is pijnlijk, want als je op een dag wakker wordt en beseft dat dit niet jouw roeping is, en niet alleen maar te lui om door te gaan, zul je maanden en jaren van training en oefening verliezen.

Met specifieke talen is het in dit opzicht gemakkelijker - meestal is basiskennis al voldoende voor beoordeling, zodat je de richting van de activiteit snel en zonder veel tijdverlies kunt veranderen. Het is echter de taalkeuze die jonge geesten in verdoving brengt: er zijn er tenslotte veel meer dan algemene programmeergebieden, maar ze moeten iets aanpakken.

Kalmeer maar, nu zal de collectieve geest een keuze voor je maken.

In het eerste deel zullen we het hebben over webtalen. Welke prelinguale indeling moet je kennen en wat is de volgorde van leren? Hierover later meer.

Frontline, achter en niet voor de hand liggende keuze

De eerste keuze die moet worden gemaakt, is het verantwoordelijkheidsgebied.

Front-end ontwikkelaars
Soms worden ze ook wel webdesigners genoemd, maar dit is onjuist. De taak van een front-end ontwikkelaar is het creëren van een interface; hij is er verantwoordelijk voor dat de webpagina snel laadt, niet vertraagt, en dat de code erop correct werkt.

Backend-ontwikkelaars
Mensen die verantwoordelijk zijn voor verborgen functionaliteit en gegevensverwerking. Hun taak is het schrijven van servercode.

Full-stack specialisten
Er is de meeste vraag naar hen, simpelweg omdat ze in hun eentje alle wensen van de klant kunnen vervullen.

De gemakkelijkste manier is natuurlijk om jezelf de taak te geven alles uit te zoeken, maar dit zal je aandacht alleen maar in de vroege stadia afleiden, en in latere stadia zul je al de noodzaak leren van op zijn minst een oppervlakkige studie van alle processen. Laten we daarom op volgorde gaan en beginnen met de voorkant.

Gezicht om verkocht te worden

Het belangrijkste dat iemand die front-end developer wil worden niet moet doen, is zoeken naar de minimale lijst met vereisten voor een specialist. In dit geval is het risico groot dat je artikelen tegenkomt zoals het artikel “Frontend-ontwikkelaars moeten overal bovenop zitten.” Alles wat daar geschreven staat is de absolute waarheid, maar je moet tot dit punt komen, beginnend met kleine dingen, en kleine dingen zijn de drie belangrijkste pijlers van de frontend: HTML, CSS en JavaScript. De basis voor verdere opleiding kun je krijgen bij.

Nog maar een paar jaar geleden, nadat je HTML en CSS had bestudeerd in de vorm van verschillende slimme boeken, en JS op jQuery-niveau, kon je serieus naar een juniorpositie streven. Tegenwoordig zijn de tijden echter veranderd en zijn de eisen enorm toegenomen. De kennis van HTML en CSS kan echter nog steeds worden samengevat in een paar goede boeken:

  • "HTML5 leren" Bruce Lawson, Remy Sharp,
  • "CSS. Recepten programmeren »Christopher Schmitt.

Je zult veel tijd aan JavaScript moeten besteden. Hier is het niet voldoende om de theorie te bestuderen, bijvoorbeeld uit het boek "JavaScript: Strengths". Het duurt enkele maanden om je handen te trainen en je hersenen in de praktijk te trainen, inclusief het gebruik van de genoemde jQuery.

Naast theoretische en praktische kennis moet een front-end specialist een zeer goede kennis hebben van de laatste internettrends en deze professioneel kunnen toepassen. Dit is tenslotte precies het verantwoordelijkheidsgebied volgens welke de overgrote meerderheid van de klanten het hele project zal evalueren op het moment van oplevering.

Verwerken, schroeven en creëren

De basistaal voor elke back-end developer is PHP. Dit is een bepaalde basis, die helemaal niet nodig is om perfect te weten, en om er ook het belangrijkste hulpmiddel van te maken, maar je moet het op een basisniveau begrijpen. Om dit te doen, kun je op zijn minst het boek “PHP: The Right Way” zorgvuldig bestuderen.

Wat de huidige talen betreft, zul je hoogstwaarschijnlijk moeten kiezen uit Ruby en Python, en deze keuze is puur een kwestie van smaak. Zelfs hier laaien de geschillen niet periodiek op, maar zelfs in het geschil over het gemak van studeren is het onmogelijk om een ​​duidelijke winnaar te vinden. Voor Python is het handig om een ​​boek te lezen met de simpele titel “Learning Python”, voor Ruby – “Rails 4. Agile ontwikkeling van webapplicaties”.

Een andere taal die je moet kennen is JavaScript met zijn afgeleiden jQuery en Ajax. In dit geval is het de back-end-ontwikkeling die u interesseert, dus het heeft geen zin om tijd te besteden aan het leren van algemene talen, maar het bezoeken van bronnen zoals de blog van Anton Shevchuk kan uiterst nuttig zijn.

En uiteraard heb je kennis nodig op het gebied van databases. Dit betekent in ieder geval het leren van SQL, en maximaal ervaring met het werken met populaire databases.

Een voor allen

De waarheid van het beroep van webontwikkelaar is dat er hier vrijwel geen zogenaamde “sferische” specialisten zijn, en dat gewone klanten deze verdeeldheid niet altijd begrijpen, dus in een of andere vorm zul je vrij snel tot de volledige stapel moeten komen. . Lees daarom de vorige twee secties opnieuw, bezoek ze opnieuw en begin te knagen aan het graniet van de softwarewetenschap.

Kennis niet over talen

Naast de talen zelf is het noodzakelijk om alle gespecialiseerde add-ons die daarbij horen te bestuderen. Dit geldt vooral voor JavaScript (AngularJS, Knockout, Backbone) en CSS (Bootstrap, Foundation). Bovendien moet u vertrouwd raken met versiebeheersystemen Git en SVN.

Om groot succes te behalen bij webontwikkeling, moet u geduld hebben, stap voor stap naar uw doel gaan en het pad kiezen dat u het meest interessant lijkt. En het maakt helemaal niet uit of het verschilt van wat hierboven of in een ander artikel wordt beschreven. Houd van wat je doet, besteed er tijd aan, leg je ziel erin, en succes zal je niet laten wachten.

Wat? Welke andere serverprogrammering? Wat voor probleem is dit? En waarom hebben we het nodig?

Het lijkt erop dat we hebben geleerd hoe we webpagina's kunnen maken in de Dreamweaver-omgeving. We hebben zelfs geleerd hoe we er hele websites mee kunnen maken en deze op een webserver kunnen publiceren. We hebben twee typen pagina-ontwerp bestudeerd: framegebaseerd, waarbij sites worden gebouwd op basis van sets frames, en tabelvormig, waarbij pagina-inhoud in een grote, complexe tabel wordt geplaatst. We leerden over stylesheets, metatags en richtlijnen aan de serverzijde. En ten slotte leerden we over webprogrammering en webscripts waarmee we ‘leven’ aan onze statische pagina’s kunnen toevoegen. Wat is er nog meer nodig voor geluk?

Ja, wat we eerder hebben geleerd, is voor ons voldoende om behoorlijk fatsoenlijke websites te maken. Veel webontwerpers stoppen daar. Maar we willen meer, nietwaar?

Laten we dus de volgende stap zetten: laten we overgaan van pagina's die zijn opgeslagen in bestanden op de server naar pagina's die zijn gegenereerd door speciale programma's. Het is precies het schrijven van dergelijke programma's waar serverprogrammering zich mee bezighoudt.

Maar laten we de zaken op orde brengen. En we zullen beginnen met uit te zoeken waarom deze serverprogramma’s nodig zijn.

Wat is serverprogrammering

Echt, wat is het en waarmee wordt het gegeten?

Waarom hebben we serverprogramma's nodig?

Heeft u ooit een online winkel bezocht? Bijvoorbeeld de meest populaire "Ozon" (http://www.ozon.ru). Weet u nog hoe u daar goederen kunt bestellen?

Als je het niet meer weet of niet eens weet wat een online winkel is, laten we het dan onthouden (of uitzoeken).

U gaat naar een webpagina waarop het product wordt beschreven dat u nodig hebt. Na veel gewetenswroeging besluit je uiteindelijk om te kopen en op de knop te klikken Kopen. Hierna ontvangt u verschillende webpagina's waar u uw adres, betalingsmethoden en levering van goederen kunt instellen en ten slotte de aankoop kunt bevestigen. U doet dit allemaal door op de juiste knoppen te klikken en gegevens in te voeren in de juiste invoervelden die zich direct op de pagina's bevinden.

Wat gebeurt er als dit gebeurt? Hoe worden de gegevens die u invoert verwerkt? Is het echt de webbrowser zelf?

Helemaal niet. Deze gegevens worden verwerkt op de webserver.

Een online winkel is slechts een van de voorbeelden die in de gedachten kwamen van de auteur, die fan en vaste klant is van het bovengenoemde "Ozon". Webgebaseerde e-mailservers, zoekmachines, elektronische bulletinboards, forums en, in het algemeen, alle websites die bepaalde gegevens van de bezoeker ontvangen en verwerken, werken op precies dezelfde manier. In al deze gevallen ontvangt de webbrowser gegevens van de bezoeker en stuurt deze naar de webserver, die deze verwerkt en het resultaat van de verwerking produceert in de vorm van een automatisch gegenereerde webpagina.

Hoe gebeurt dit eigenlijk? Nu zullen we het ontdekken. En laten we eerst de vraag beantwoorden...

Zoals een webserver verwerkt gebruikersgegevens

Hoe verwerkt een webserverprogramma de gegevens die een gebruiker ernaar stuurt?

Echt niet.

De webserver is niet uitgerust om ze te verwerken. Zijn taak is het ontvangen van een verzoek om bestanden van een webbrowser (webpagina's, stijlbladen, grafische afbeeldingen, films, geluiden, archieven, uitvoerbare bestanden, enz.), het zoeken naar dezelfde bestanden op de harde schijven van de servercomputer en stuur de gevonden bestanden terug naar de webbrowser. Dit is zijn hoofdtaak. Natuurlijk kunnen sommige bijzonder krachtige servers extra acties uitvoeren op de bestanden die worden verzonden voordat ze daadwerkelijk worden verzonden (in het bijzonder het uitvoeren van serverrichtlijnen). Er zijn ook “multi-host”-programma's die niet alleen de functies van een webserver vervullen, maar ook van een FTP-server, mail, UseNet-nieuws en God weet wat nog meer. Maar de belangrijkste functie: eenvoudige uitgifte van bestanden volgens de eisen van de klant - en niets meer. Het geheim is dat de bezoekersgegevens niet door de webserver zelf worden verwerkt. Hiervoor worden speciale programma's gebruikt die samenwerken met de webserver op dezelfde servercomputer. Ze heten hebben geen gebruikersinterface en "communiceren" alleen met de webserver, ontvangen de door de gebruiker ingevoerde gegevens ervan en sturen het resultaat naar hem terug. Dit is hoe ze fundamenteel verschillen van clientprogramma's die rechtstreeks met de gebruiker samenwerken. (Clientprogramma's omvatten, maar zijn niet beperkt tot, uw favoriete webbrowser.)

Hieruit volgt dat de webserver nog steeds gegevens van de gebruiker kan accepteren. Ja, dit maakt deel uit van zijn hoofdtaak: gegevens accepteren en doorsturen naar het serverprogramma. Het serverprogramma verwerkt ze op zijn beurt en stuurt het resultaat terug naar de webserver.

Dit is waar het plezier begint. Feit is dat het resultaat dat door het serverprogramma naar de webserver wordt geretourneerd niets anders is dan gewone HTML-code! In feite retourneert het serverprogramma een voltooide webpagina, gegenereerd op basis van de door de bezoeker ingevoerde gegevens. Deze pagina heet dynamisch, in tegenstelling tot statisch pagina's geschreven door een webontwerper en opgeslagen in bestanden op de schijven van een servercomputer. En de webserver stuurt deze dynamische pagina naar de client als reactie op de ingevoerde gegevens.

Serverprogramma's zijn onderverdeeld in de volgende vier typen.

  1. Uitvoerbare programma's die via de interface lopen CGI(Common Gateway Interface - gemeenschappelijke uitwisselingsinterface), de zogenaamde CGI-programma's. Dit type serversoftware is het oudste, maar zeker niet verouderd.
  2. Webserverextensies(ISAPI-, NSAPI-formaattoepassingen, Apache-uitbreidingsmodules, enz.). Een nieuwe methode waarmee u serverprogramma's in de webserver zelf kunt inbedden, waardoor ze een integraal onderdeel worden. Het werd voor het eerst voorgesteld door Microsoft voor hun Microsoft Internet Information Server (ISAPI-interface) en door de ontwikkelaars van de populaire gratis Apache-webserver.
  3. Actieve serverpagina's(ASP, JSP, enz.). In feite zijn dit gewone statische webpagina's die zijn opgeslagen in bestanden en die, naast de gebruikelijke HTML-code, opdrachten bevatten die worden verwerkt door de webserver zelf of door de extensie ervan. Ook een nieuwe methode, voor het eerst voorgesteld door Microsoft voor dezelfde Internet Information Server.
  4. Serverscripts, geschreven in een geïnterpreteerde taal (Perl, Python, VBScript, JavaScript, enz.). Algemene scripts die via een CGI- of ISAPI-interface aan de serverzijde lopen.

Laten we nu al deze diversiteit in meer detail bekijken.

CGI-programma's zijn gewone uitvoerbare bestanden die in elke programmeertaal zijn geschreven en tot software zijn gecompileerd.processorbuscode. Ze hebben geen gebruikersinterface (zoals alle serverprogramma's), maar werken met een webserver, ontvangen daar invoergegevens van en sturen de resultaten van hun werk ernaartoe. Ze worden door de webserver zelf gelanceerd wanneer ze nodig zijn (wanneer het nodig is om gegevens te verwerken die van de gebruiker zijn ontvangen) en werken onder controle van het besturingssysteem van de servercomputer. Bovendien, als de webserver tegelijkertijd meerdere verzoeken om gegevensverwerking van gebruikers ontvangt, start hij het overeenkomstige aantal exemplaren van het CGI-programma.

De voordelen van CGI-programma's zijn onder meer het gemak van creatie (veel programma-ontwikkelomgevingen ondersteunen de creatie van dergelijke applicaties, met name het populaire Borland Delphi, te beginnen met versie 3) en het gemak van foutopsporing. Omdat CGI-applicaties onafhankelijke programma's zijn, draaien ze bovendien afzonderlijk van de webserver (zoals programmeurs en systeembeheerders zeggen: ze draaien in een andere adresruimte). Dit betekent dat als een CGI-programma faalt, alleen dat programma eindigt - de webserver zelf blijft drijven. Maar CGI-programma's hebben slechts één nadeel: een groot verbruik van systeembronnen, aangezien een afzonderlijke kopie van het serverprogramma wordt gestart om elke set gegevens te verwerken. En als de webserver te veel verzoeken ontvangt om gegevens te verwerken, kan de servercomputer vastlopen.

Webserverextensies zijn een nieuwer type serversoftware. Het zijn gewone DLL's die alle logica van het serverprogramma implementeren. Dergelijke bibliotheken zijn als het ware in het webserverprogramma ingebouwd en werken als integraal onderdeel ervan. Omdat DLL's alleen in de Windows-omgeving werken, zijn er andere formaten uitgevonden om extensies op andere besturingssystemen te maken. In het bijzonder zijn Apache-serveruitbreidingsmodules geen DLL's,

In de vorm van DLL's worden uitbreidingen van de webservers Internet Information Server van Microsoft en Netscape Web Server van Netscape gemaakt. In het eerste geval hebben extensies het formaat ISAPI(Internet Server Application Programming Interface - Internetserver Application Programming Interface), en in de tweede - NSAPI(Netscape Server Application Programming Interface - Netscape Server Application Programming Interface). Het formaat van Apache-uitbreidingsmodules wordt Apache-modules genoemd.

Webserverextensies hebben één voordeel: zorgvuldig gebruik van systeembronnen. Feit is dat om alle sets gebruikersgegevens te verwerken slechts één exemplaar van de extensie wordt gelanceerd, wat aanzienlijk minder bronnen in beslag neemt dan veel actieve CGI-programma's. Extensies zijn echter moeilijker te maken en te debuggen, en ze zijn niet zo veilig.

Zoals CGI-programma's. Omdat ze als onderdeel van een webserver worden uitgevoerd, zal elke fout in de extensie ervoor zorgen dat de server vastloopt.

Beide soorten serverprogramma's die hierboven zijn beschreven, hebben één groot nadeel. Voordat ze kunnen werken, moeten ze in een programmeertaal worden geschreven en op de processor tot machinecode worden gecompileerd, wat tijdrovend is, vooral bij het debuggen. Natuurlijk werken gecompileerde programma's sneller dan geïnterpreteerde programma's, dat wil zeggen programma's waarbij elke instructie wordt gelezen, gedecodeerd en verwerkt door een speciaal tolkprogramma. Maar geïnterpreteerde programma's hebben ook hun voordelen, waarvan de belangrijkste de eenvoud en schrijfsnelheid zijn. De volgende twee soorten serverprogramma's die zullen worden beschreven, zullen worden geïnterpreteerd.

Zoals reeds vermeld, zijn actieve serverpagina's gewone webpagina's die speciale webpagina's bevatten serverscripts, uitgevoerd door de webserver zelf of een speciaal serverprogramma (CGI-applicatie of webserverextensie). In het bijzonder, ADDER.(Actieve serverpagina's) ondersteund door Microsoft Internet Information Server, en JSP(Java Server Pages - serverpagina's geschreven in JavaScript), ondersteund door een aantal andere webservers, werken op deze manier. ASP-serverpagina's zijn geschreven in JavaScript en VBScript, terwijl JSP alleen in JavaScript is geschreven.

U kent de voordelen van actieve serverpagina's al: schrijfgemak en -snelheid en foutopsporingsgemak. Omdat actieve serverpagina's slechts gewone webpagina's zijn waarin code is verwerkt, kunnen ze bovendien gemakkelijk worden geschreven door iedereen die bekend is met HTML. Nadeel: relatieve traagheid en hogere eisen aan systeembronnen.

Server-side scripts zijn vergelijkbaar met actieve serverpagina's in die zin dat ze worden geïnterpreteerd, maar het zijn 'pure' programmacode, zonder HTML-toevoegingen. De tolk is bijna altijd een CGI-programma, maar niets houdt u tegen om het als een web te ontwikkelen serverextensies Scripts worden meestal geschreven in de programmeertaal Perl, die speciaal is ontworpen voor tekstverwerking, JavaScript, VBScript en zelfs (zoals ze zeggen) de MS-DOS-opdrachtbestandstaal scripts in elke programmeertaal waarvoor een tolk bestaat.

De voor- en nadelen van server-side scripts zijn hetzelfde als die van actieve serverpagina's. Scripts verbruiken echter een uitzonderlijk grote hoeveelheid systeembronnen, zelfs meer dan CGI-applicaties. Om elke set gebruikersgegevens te verwerken, wordt immers een eigen kopie van de tolk gelanceerd, en de tolk besteedt op zijn beurt veel middelen aan de verwerking van het script. En toch zijn scripts de populairste manier om serverprogramma's te maken.

In tafel 15.1 toont de bestandsextensies van serverprogramma's.

Tabel 15.1. Bestandsextensies van serverprogramma's

Type serverprogramma's

Ondersoorten

Verlenging

CGI-programma's

-

exe

Webserverextensies

ISAPI- en NSAPI Apache-modules

dll Geen extensie

Actieve serverpagina's

Serverscripts

ASP-JSP

asp jsp

Taal Perl JavaScript VBScript Andere talen

pl, cgi js, cgi vbs, cgi cgi

We hebben dus gekeken naar hoe de webserver gebruikersgegevens verwerkt (of liever niet verwerkt). Laten we nu naar het begin van de keten gaan en kijken hoe de webbrowser gebruikersgegevens naar het serverprogramma verzendt.

Hoe de webbrowser de ingevoerde gegevens verzendt

Aan het begin van dit hoofdstuk hebben we besproken hoe bedieningselementen op de webpagina's zelf worden gebruikt om bezoekersgegevens te verzamelen. Dit zijn gewone bedieningselementen die u kent uit Windows-toepassingen: invoervelden, knoppen, lijsten, selectievakjes, enz. Een bezoeker van de site voert er gegevens in en drukt op een speciale knop die begint met het verzenden van de gegevens naar de webserver, en dus naar het serverprogramma. .

Op het formulier zijn bedieningselementen voor het invoeren van bezoekersgegevens geplaatst. Formulier - Dit is een speciaal element van de pagina dat de gegevens feitelijk codeert en naar de webserver stuurt. (We kunnen zeggen dat het formulier de ouder is van de besturingselementen.) De besturingselementen zelf ontvangen alleen gegevens van de bezoeker, maar coderen of verzenden deze niet.

Elk besturingselement op een formulier moet een unieke naam hebben. Deze namen worden door de webbrowser gebruikt om de in het formulier ingevoerde gegevens weer te geven op een manier die leesbaar is voor de server.

Bijvoorbeeld:

Hier hebben we het ideale geval overwogen waarin de waarden van elk besturingselement alleen maar bevatten geldig bij vanuit het oogpunt van het HTTP-protocol, symbolen: letters van het Latijnse alfabet, cijfers, streepjes, onderstrepingstekens en enkele andere tekens. (Houd er rekening mee dat HTTP een protocol voor bestandsoverdracht is dat door een webserver wordt gebruikt.) Als u gegevens overdraagt ​​die illegale tekens bevatten, zoals spaties of letters van het Russische alfabet, wordt elk teken weergegeven als een hexadecimale code, voorafgegaan door een percentage. teken bijvoorbeeld zo (gecodeerde spaties zijn vetgedrukt):

Dankzij dit gegevensformaat wordt het schrijven van serverprogramma's die het verwerken heel eenvoudig. Perl heeft met name ingebouwde decoderingsfaciliteiten voor dit formaat.

De gegevens in het bovenstaande formulier worden vervolgens gecodeerd met behulp van een van de vooraf gedefinieerde gegevens coderingsmethoden en worden via internet naar het serverprogramma verzonden. Dit alles wordt feitelijk gedaan door het formulier (maar niet door de bedieningselementen).

Het proces van het verzenden van gegevens begint nadat de gebruiker op een speciale knop heeft gedrukt. Deze knop heet Versturen(Verzenden - in Engelstalige programma's) en moet aanwezig zijn in het formulier. Het formulier kan ook een knop bevatten Opnieuw instellen(Reset), waarmee de door de gebruiker ingevoerde gegevens worden gereset. Meestal bevinden deze knoppen zich helemaal onderaan het formulier.

U kunt een formulier beschouwen als zoiets als een normaal Windows-toepassingsdialoogvenster dat invoer van de gebruiker accepteert, deze op een specifieke manier codeert en naar het hoofdvenster verzendt. (Dialoogvensters van Windows-applicaties hebben ook noodzakelijkerwijs twee knoppen: OK En Annuleren(Annuleren).) Maar als bij een reguliere Windows-applicatie de programmeur expliciet moet specificeren hoe de gegevens versleuteld en verzonden worden, is dit bij een webformulier niet nodig. U hoeft slechts drie vereiste parameters op te geven:

  • Internetadres van het serverprogramma dat de formuliergegevens verwerkt;
  • coderingsmethode voor verzonden gegevens;
  • een van de twee methoden voor het verzenden van gegevens.

We zullen het later hebben over de methoden voor het verzenden van gegevens. Laten we nu alles te weten komen over de andere twee vereiste formulierparameters.

Het internetadres van een serverprogramma lijkt sterk op het internetadres van elk ander bestand, zoals een webpagina. Kijk zelf maar - dit is hoe het adres van het CGI-programma eruit zal zien:

http://www. ergens. ru/bin/program.exe Dit is het adres van de webserverextensie: http: //www.somesite.ru/bin/extension.dll Dit is het adres van de actieve serverpagina:

http://www. ergens. ru/asps/active_page. adder

En dit is het adres van het scriptprogramma geschreven in Perl:

http://www. ergens. ru/scripts/perl_script.pl

Zoals u kunt zien, is hier niets ingewikkelds aan. Het serverprogramma is een gewoon bestand dat op de harde schijven van de servercomputer wordt geplaatst, en een link ernaar betekent ook niets bijzonders.

Voor het coderen van gegevens die via internet worden verzonden, worden meestal de drie meest populaire methoden gebruikt: application/x-www-form-urlencoded,meerdelige/formuliergegevens en (veel minder vaak) tekst/plain. Het is mogelijk om andere coderingsmethoden te gebruiken, maar in de overgrote meerderheid van de gevallen worden de drie genoemde methoden gebruikt. Bovendien worden deze drie coderingsmethoden door de meeste webbrowserprogramma's ondersteund.

Opmerking

Als u zich nog herinnert wat een MIME-gegevenstype is, zult u, als u naar de namen van de hierboven gegeven gegevenscoderingsmethoden kijkt, onmiddellijk zien dat dit slechts MIME-typen zijn. Met hun hulp worden codeermethoden gespecificeerd.

In de overgrote meerderheid van de gevallen wordt de coderingsmethode application/x-www-form-uriencoded gebruikt. Dit is trouwens degene die standaard wordt gebruikt als de coderingsmethode niet is opgegeven. De coderingsmethode voor meerdelige/formuliergegevens wordt gebruikt als u bestanden naar een webserver gaat verzenden; het biedt de binaire dataconversie die geschikt is voor dit geval. De laatste methode - tekst/plain - presenteert de gegevens in platte tekst, wat handig kan zijn als de formuliergegevens per e-mail worden verzonden (soms wordt deze methode van gegevensoverdracht ook gebruikt).

We hebben dus de gegevenscodering geregeld. Het valt nog te bezien hoe deze gegevens via netwerkkanalen worden verzonden.

Hoe gegevens via internet worden overgedragen

Zoals u al weet, wordt voor het verzenden van gegevens via internet, en zelfs via elk lokaal of mondiaal computernetwerk, een speciale reeks regels gebruikt, genaamd protocol. Het protocol definieert hoe gegevens worden gecodeerd en verpakt voor daaropvolgende verzending via het netwerk. Uiteraard moeten zowel het verzendende als het ontvangende programma hetzelfde protocol ondersteunen om elkaar te kunnen ‘begrijpen’. (Anders zal er zogenaamde incompatibiliteit met het dataoverdrachtsprotocol ontstaan, iets heel onaangenaams.) Eigenlijk hebben we het al over internetprotocollen gehad en het heeft geen zin om ze nu te herhalen.

U weet ook dat het HTTP-protocol wordt gebruikt om webpagina's en bijbehorende bestanden (afbeeldingen, geluiden, archieven, enz.) via internet te verzenden. Het wordt ook gebruikt voor datatransmissie, en hiervoor zijn er twee overdrachtsmethode gegevens. Beide methoden worden veel gebruikt bij internetprogrammering en hebben hun voor- en nadelen. Laten we ze bekijken.

De eerste methode wordt aangeroepen KRIJGEN door de waarde van de overeenkomstige vormparameter. Bij gebruik worden gegevens verzonden als onderdeel van het internetadres in een HTTP-verzoek.

Zoals u zich herinnert, stuurt een webbrowser, om het benodigde bestand van een webserver te ontvangen, deze server een zogenaamd HTTP-verzoek, dat het internetadres van het vereiste bestand bevat. De gegevens kunnen dus als onderdeel van dit adres worden verzonden.

Neem bijvoorbeeld de dataset die hierboven wordt weergegeven:

naam1 = Ivan achternaam = Ivanovitsj naam2 = Ivanov leeftijd = 30

Laten we het nu voorbereiden voor verzending met behulp van de GET-methode (de gegevens zelf zijn vetgedrukt):

http://www.somesite.ru/bin/program.exe? naam1=Ivan&achternaam2=Ivanovitsj&naam2=Ivanov&leeftijd=30

Zoals u kunt zien, worden gegevens die via de GET-methode worden verzonden, helemaal aan het einde van het internetadres geplaatst en daarvan gescheiden door een vraagteken. In dit geval worden de paren “naam” = “waarde” van elkaar gescheiden door het teken “commercieel en” (“&”). Alles is heel eenvoudig en duidelijk.

Deze eenvoud en duidelijkheid van de gegevenspresentatie is het belangrijkste voordeel van de GET-methode. Zoals ze zeggen, alles is duidelijk zichtbaar. Ook het debuggen van webpagina's wordt aanzienlijk vereenvoudigd: aangezien het adres dat aan de webserver wordt doorgegeven, in de adresbalk van de webbrowser wordt weergegeven, kunt u altijd zien wat er precies is doorgegeven. (Zoals u begrijpt, kunnen vertrouwelijke gegevens echter niet via deze methode worden verzonden; iedereen die achter u staat, zal het zien.)

http://www.mysite.ru/bin/choose.exe?chapter=3

Zoals u kunt zien, zijn dit feitelijk koppelingen naar het serverprogramma, die één hoofdstukparameter en de waarde ervan bevatten. Dit betekent dat alle andere pagina's van zo'n site dynamisch worden gevormd door het serverprogramma, op basis van de ontvangen parameters. Met behulp van dit principe worden vaak directorysites, programmacatalogussites, elektronische winkels en andere sites met een grote hoeveelheid geheime informatie gebouwd.

Helaas heeft de GET-methode een groot nadeel: er kunnen geen grote hoeveelheden gegevens worden overgedragen. Dit komt door de beperking die normen stellen aan de lengte van een internetadres: niet meer dan 256 tekens. Trek hier de lengte van het daadwerkelijke adres van het serverprogramma af - en u krijgt de maximaal toegestane grootte van uw gegevens. Het tweede nadeel van de GET-methode is de keerzijde van de voordelen. De gegevens die het verzendt, zijn openbaar zichtbaar en kunnen eenvoudig worden gelezen in de adresbalk van een webbrowser.

De GET-methode moet worden gebruikt als de gegevens die naar het serverprogramma worden verzonden duidelijk klein en niet geheim zijn. Het wordt met name gebruikt om trefwoorden naar zoekmachines te sturen op sites die zijn gebouwd op basis van een serverprogramma (zie hierboven) enz. Als u omvangrijke of vertrouwelijke gegevens moet verzenden, gebruikt u de tweede verzendmethode, genaamd POST.

Methode NA verzendt gegevens naar het serverprogramma in hetzelfde HTTP-verzoek, maar niet als onderdeel van het internetadres, maar in de vorm van zogenaamde aanvullende gegevens. Omdat de omvang van de aanvullende gegevens niet beperkt is (deze kan in ieder geval erg groot zijn), kunt u alles wat u maar wilt, in elke hoeveelheid, overdragen. In het bijzonder kunnen op deze manier zelfs bestanden naar de webserver worden overgedragen.

Voordelen van de POST-methode: er is geen limiet op het volume van de overgedragen gegevens en de “onzichtbaarheid ervan”. Nadelen: problemen bij het decoderen van gegevens en problemen bij het debuggen. De POST-methode wordt gebruikt voor het verzenden van bijvoorbeeld persoonlijke gegevens, adressen van klanten in elektronische winkels, literaire werkentoegang tot de sites http://www.stihi.ru en http://www.proza.ru, enz. Over het algemeen iets met grote volumes.

Zoals ze zeggen, is de WWWC-commissie van plan om uiteindelijk de GET-methode helemaal achterwege te laten en alle gegevens over te dragen met behulp van de POST-methode. Tot nu toe is de GET-methode eenvoudigweg niet aanbevolen voor gebruik in nieuw gemaakte sites, maar in werkelijkheid wordt deze nog steeds ondersteund door webbrowsers.

Dus we hebben alles ontdekt over serverprogramma's. Nou ja, misschien niet alles, maar voor nu is dit genoeg voor ons. Laten we het nu hebben over hoe volledig dit alles wordt ondersteund door Dreamweaver MX.

Programmeren aan de serverzijde: de Dreamweaver-aanpak

Is het moeilijk om serverprogramma's te schrijven? Ja, het is moeilijk. Waarschijnlijk zelfs moeilijker dan webpagina's.

Weet u echter nog hoe vaak we HTML-code met de hand moesten schrijven? Vrij zeldzaam, nietwaar? En dat allemaal omdat Dreamweaver ons hier zorgvuldig tegen beschermde door een handige interface te bieden voor het visueel maken van pagina's. We schreven gewoon tekst, formatteerden deze, plaatsten afbeeldingen, tabellen op de pagina, pasten gedrag toe op pagina-elementen, enz. Kortom, we voelden ons op ons gemak.

En moeten we nu echt serverprogramma's handmatig schrijven?! Nee, helemaal niet nodig.

Er is al vermeld dat Dreamweaver zogenaamd gedrag biedt voor onervaren gebruikers en in het algemeen voor degenen die niet met JavaScript-code willen omgaan. Gedrag- dit is een kant-en-klaar script, geschreven door professionele programmeurs en door Dreamweaver zelf in de webpaginacode geplaatst nadat de gebruiker dit gedrag in het paneelgedragsmenu heeft geselecteerd Gedrag. De gebruiker hoeft zich geen zorgen te maken over het plaatsen van een script dat deze of gene actie op een bepaalde plaats in de paginacode uitvoert; hij hoeft dit script niet op fouten te controleren en met andere scripts te coördineren. Dreamweaver doet dit allemaal voor hem.

In feite is het aantal bewerkingen dat wordt gebruikt bij het programmeren van servers erg klein. Open de database, haal er wat gegevens uit, toon deze op de pagina, schrijf nieuwe gegevens - wat is er nog meer nodig!

Als je wat leuke dingen wilt doen, zul je natuurlijk serverpagina's handmatig moeten schrijven. Maar zie je, dit gebeurt niet vaak.

We ontdekten dus twee dingen. Ten eerste ondersteunt Dreamweaver MX het maken van webpagina's op de server. Ten tweede gebruikt het gedrag waarmee u bekend bent om er scripts in te plaatsen. Dreamweaver biedt een groot aantal gedragingen voor scenario's aan de serverzijde, waarmee u aan de slag kunt.

Het valt nog te bezien welke serverpagina's u met Dreamweaver kunt maken. Meer precies, welke technologieën u kunt gebruiken voor het maken van serverpagina's. Er zijn vier van dergelijke technologieën, en deze zullen nu worden vermeld.

  1. ADDER. Deze technologie is u al bekend.
  2. ASP.NET. Verdere ontwikkeling van ASP.
  3. PHP. Gratis technologie gedistribueerd met open source-teksten. Behoorlijk populair en vaak gebruikt met gratis webservers, zoals Apache.
  4. Macromedia ColdFusion. Eigen ontwikkeling van Macromedia.

Welke moet je kiezen? We zullen tenslotte voorbeelden van webpagina's moeten maken.

Laten we ASP kiezen. En dat is waarom.

Om met pagina's op de server te kunnen werken, hebben we een webserver nodig. Zonder dit zullen serverpagina's eenvoudigweg niet werken. En misschien weet u dat alle min of meer nieuwe versies van Windows worden geleverd met een kleine webserver. Op Windows 95/98/ME-systemen is dit Personal Web Server, en op Windows NT/2000/XP is dit Internet Information Server. De mogelijkheden zijn voldoende om te experimenteren met serverprogrammering.

Deze webserver ondersteunt dus volledig de ASP-technologie. U kunt actieve serverpagina's schrijven en deze daaronder uitvoeren. En u hoeft geen extra componenten te downloaden; alles wat u nodig heeft, is al inbegrepen in de Windows-distributiekit. Daarom is gekozen voor ASP.

Bijna geen enkele webserver ondersteunt momenteel ASP.NET-technologie; Microsoft heeft nog geen enkel product uitgebracht dat deze technologie ondersteunt. Om met PHP-pagina's te werken, moet u op internet een vrij grote distributiekit met een PHP-handler zoeken en downloaden, en vervolgens veel tijd besteden aan het instellen ervan. Wat de ColdFusion-technologie betreft, is het onwaarschijnlijk dat u er enkele duizenden dollars voor kunt uitgeven. We hebben dus praktisch geen opties.

Inleiding tot databases

Het laatste waar we in dit hoofdstuk naar zullen kijken, zijn databases en het werken ermee. Omdat het leeuwendeel van de serverprogramma's met databases werkt, zal deze kennis voor ons zeer nuttig zijn. Natuurlijk zullen we niet alle databasetechnologieën in detail bekijken, maar we zullen ons, net als voorheen, beperken tot een kort educatief programma. Als u hierin geïnteresseerd bent, kunt u zelf op internet zoeken naar de benodigde boeken en teksten.

Wat is er gebeurd databank? Niets bijzonders, gewoon een gewoon bestand of een groep bestanden met gegevens die op een speciale manier zijn georganiseerd. Als een database uit veel bestanden bestaat, blijft deze nog steeds één geheel. De gegevens in de database worden verwerkt met behulp van een speciaal programma genaamd databaseverwerker. De databaseprocessor kan een volledig afzonderlijk programma zijn dat op dezelfde computer draait als het programma dat de gegevens gebruikt, of kan er deel van uitmaken.

Databases kunnen op verschillende manieren worden georganiseerd. Maar de overgrote meerderheid van de databases die tegenwoordig worden gebruikt, is dat wel relationeel. Gegevens in dergelijke databases zijn georganiseerd in de vorm van tabellen. Elke dergelijke database kan een of meer tabellen bevatten; Bij complexe databases zijn doorgaans veel tabellen met elkaar verbonden.

Elke tabel bestaat op zijn beurt uit een reeks rijen verdeeld in cellen, en elke cel bevat gegevens van een bepaald type: tekst, getallen, logische waarden, datums, enz. De rijen met databasetabellen worden genoemd verslagen, en de cellen waarin elke record is verdeeld, zijn velden. Zoals reeds vermeld, heeft elk veld een specifiek type en is het noodzakelijkerwijs uitgerust naam, via welke het programma dat met gegevens werkt toegang krijgt tot dit veld.

In afb. 15.1 toont een voorbeeld van zo'n tabel. Zoals u kunt zien, heeft deze tabel drie velden:

  • NAAM - naam van de technologie voor het maken van serverpagina's, tekst;
  • PRICE - prijs van het handlerprogramma, numeriek;
  • GEBRUIKEN - of deze technologie momenteel wordt ondersteund, logisch ("ja-nee").

Bovendien bevat deze tabel vier vermeldingen die overeenkomen met de technologieën die worden ondersteund door Dreamweaver MX: ASP, ASP.NET, PHP en ColdFusion.

Heel vaak is een van de tabelvelden klaar sleutel. De sleutelveldwaarde wordt gebruikt om een ​​record uniek te identificeren. Uiteraard moeten de sleutelvelden van alle tabelrecords in dit geval unieke waarden bevatten. Soms wordt het sleutelveld aangeroepen teller veld.

Voorbeeld van een tabel opgenomen in een database

U weet al hoe u toegang krijgt tot een afzonderlijk veld - aan de hand van de naam. Hoe kan ik toegang krijgen tot het vereiste record?

Feit is dat een programma dat databasegegevens gebruikt, ooit slechts met één record kan werken, genaamd huidig. Het kan gegevens uit de velden in dat record ophalen en eventueel wijzigen. Maar om de gegevens van een ander record te krijgen, moet het programma een verplaatsingscommando geven. In dit geval verplaatst de databaseprocessor een special huidige recordwijzer naar het gewenste record en het programma kan ermee werken.

Het programma kan ook gebruiken zoekopdracht het gewenste record volgens elk criterium. Heel vaak wordt een dergelijke zoekopdracht uitgevoerd met behulp van de waarde van een sleutelveld.

Het programma heeft ook de mogelijkheid om nieuwe tabelgegevens toe te voegen en onnodige tabelgegevens te verwijderen. Om een ​​nieuw record toe te voegen, voert het programma de opdracht uit om een ​​record toe te voegen en voert de benodigde gegevens in de velden in. Om een ​​item te verwijderen, moet het programma het eerst actueel maken en vervolgens het verwijdercommando geven.

Over het algemeen ziet de volgorde van het werken met gegevens in de database er als volgt uit:

  1. Programma opent database door een open bewerking uit te voeren. Dit is een noodzakelijke handeling, zonder welke het onmogelijk is om toegang te krijgen tot de database.
  2. Het programma opent de gewenste databasetabel. Hierna stuurt de processor de zogenaamde terug naar haar recordset(in het Engels -- recordset), waarmee het programma werkt.
  3. Het programma doet het eigenlijke werk met de gegevens.
  4. Programma sluit tabel, waarna de processor de set records die met dit programma correspondeert uit het geheugen verwijdert.
  5. Het programma sluit de database en verbreekt alle verbindingen ermee.

Houd er rekening mee dat de laatste twee bewerkingen (het sluiten van de tabel en de database) net zo noodzakelijk zijn als het openen ervan. Feit is dat een reeks records en andere datastructuren die door de processor in het geheugen worden gegenereerd voor een programma dat met gegevens werkt, veel systeembronnen in beslag nemen. Sluit daarom, zodra u klaar bent met het werken met een tabel of database, deze onmiddellijk af om bronnen vrij te maken voor andere gebruikers.

Onlangs zijn ze enorm populair geworden databaseservers. Dit zijn gewone gegevensverwerkers, maar geïmplementeerd in de vorm van serverprogramma's en draaiend op servercomputers. Hun voordelen ten opzichte van conventionele gegevensverwerkers:

  • ze draaien op een servercomputer, die doorgaans krachtiger is dan de clientcomputer, waardoor hun prestaties hoger zijn;
  • ze zorgen voor een grotere gegevensbeveiliging via toegangscontrole en enkele andere mechanismen;
  • ze zijn simpelweg krachtiger, in de zin dat ze meer verschillende innovaties ondersteunen die recentelijk zijn verschenen.

Om toegang te krijgen tot de databaseserver en de gegevens zelf, stuurt het clientprogramma er speciale opdrachten naartoe. Om dergelijke opdrachten samen te stellen, is een zoekbeschrijvingstaal ontwikkeld SQL(Gestructureerde querytaal - gestructureerde querytaal). Met behulp van in deze taal geschreven commando's kan het clientprogramma de gewenste tabel openen, de gegevens lezen, een record toevoegen, wijzigen, verwijderen en uiteindelijk de database sluiten wanneer deze niet langer nodig is.

Databaseservers worden nu heel vaak gebruikt, en bij webprogrammering - bijna overal. De meest populaire zijn onder meer Oracle, Microsoft SQL Server, Sybase, het krachtige IBM DB2, Borland InterBase (in Rusland wordt het verkocht onder de naam IBase), het steeds populairder wordende PostgressSQL en de gratis MySQL-server, gedistribueerd als open source. Deze laatste server wordt overigens heel vaak gebruikt in combinatie met de Apache-webserver en PHP-serverpaginatechnologie.

Hiermee is het verhaal over databases en serverprogrammering afgerond.

Er is al gezegd dat speciale elementen van webpagina's - formulieren - gegevens naar het serverprogramma sturen. In het volgende hoofdstuk zullen we het hebben over formulieren en het werken ermee in Dreamweaver. En pas dan gaan we verder met het programmeren van de server zelf.

Ik ben bij voorbaat dankbaar voor commentaar, beoordelingen en correcties (rekening houdend met het feit dat de doelgroep dummies is).

Als alle gebruikers, onder welke omstandigheid dan ook, hetzelfde te zien moeten krijgen, dan kan het bijbehorende bestand gewoon op de server worden geplaatst, maar meestal is dit niet voldoende en wil je wat afwisseling. In dit geval moet u een programma op de server uitvoeren dat de HTML-tekst creëert die in dit specifieke geval nodig is. Het schrijven van deze “server”-programma's (scripts) is over het algemeen de hoofdactiviteit van webontwikkeling; daarin is meestal 90% van de complexiteit en de kosten van elk project verborgen. Omdat het programma op onze server draait en niet op de computer van de gebruiker, is de keuze van de tools volledig aan ons en bestaat er geen enkele taal waarin dergelijke programma's zijn geschreven.

De eerste en belangrijkste beslissing die u moet nemen, is het besturingssysteem van onze server. Theoretisch kan het van alles zijn, in de praktijk gebruiken ze in Rusland in 93% van de gevallen Unix, in 6,99% - Windows, in 0,01% - iets anders. Ik ben niet helemaal objectief, maar ik zie geen enkel argument ten gunste van Windows en twee argumenten ten gunste van Unix, dus ik raad je aan er altijd voor te kiezen. Argument één: wat gebruikelijker is, is altijd handiger, het is gemakkelijker om hosting te vinden, het is gemakkelijker om een ​​specialist te vinden, het is gemakkelijker om een ​​kant-en-klare oplossing voor een bepaalde deeltaak te vinden. Argument twee: de kosten van licenties voor Windows/MS SQL/...; Het geld daar is niet exorbitant, maar nog steeds verschillend van nul. Als we Unix als besturingssysteem hebben gekozen, dan is de volgende natuurlijke vraag - welke implementatie we moeten gebruiken - absoluut onbelangrijk en kan worden besloten op basis van de persoonlijke voorkeuren van de systeembeheerder.

De tweede fundamentele beslissing is de programmeertaal. De keuze is hier vrij groot. Ten eerste is er een hele klasse talen die ideaal zijn voor typische webprogrammeertaken (en een daarvan is speciaal daarvoor uitgevonden) - 'scripttalen'. Nu is dit in ieder geval PHP, Perl, Ruby en Python. Het is aan hen dat de overgrote meerderheid van de sites wordt geschreven, van bijvoorbeeld de eenvoudigste online winkels tot vkontakte.ru. In termen van mogelijkheden, gemak, productiviteit, ontwikkelingshulpmiddelen en enkele andere theoretische indicatoren zijn ze ongeveer gelijk aan elkaar; het belangrijkste verschil is de beschikbaarheid van programmeurs. Op dit moment zijn de gemeten marktindicatoren als volgt: voor elke 100 cv's van PHP-programmeurs in Rusland zijn er 10 Perl- en 2-3 Ruby- en Python-cv's. Aan de andere kant zou 80% van alle mensen die zichzelf PHP-programmeurs noemen, de code niet als een kanonschot mogen aanraken; dit cijfer is ongeveer de helft, en voor Ruby en Python zelfs nog minder. Het is duidelijk dat de eerste cijfers objectief zijn en afkomstig zijn van werkplekken, en de tweede een voorwaardelijke subjectieve beoordeling is en niet direct kan worden vermenigvuldigd, maar in ieder geval is het aantal programmeurs en goede programmeurs in deze volgorde gerangschikt: PHP, Perl, Ruby of Python, en hun gemiddelde niveau is precies het tegenovergestelde. Dus als we een industrieel project hebben met een groot aantal ontwikkelaars en personeelsverloop, dan moeten we PHP kiezen uit de webtalen (het is acceptabel om Perl te gebruiken in het geval van een aantal zeer belangrijke lokale redenen). Als het project kort is, zal de programmeur zeker alleen zijn en nooit veranderen, dan kan de keuze aan hem worden toevertrouwd en kan de keuze voor Ruby/Python zelfs een optimistische factor blijken te zijn.

Naast de beschouwde tweelingbroers van scripttalen (waartussen de keuze puur sociaal is), zijn er anderen die verschillende technische kenmerken hebben en dienovereenkomstig andere niches voor gebruik.

C-taal die maximale nauwkeurigheid van de programmeur vereist, is de moeilijkst te vinden fouten, met de minste kant-en-klare oplossingen die beschikbaar zijn en met de langzaamste ontwikkelingssnelheid. Het compenseert al deze nadelen met slechts één voordeel: prestaties, die verschillende ordes van grootte beter zijn dan de prestaties van PHP en zijn analogen. In principe is ijzer nu goedkoop, maar arbeid is duur, en dit is zelden belangrijk. Als het project minder dan een miljoen vertoningen per dag verwacht, kunt u C normaal gesproken gerust vergeten, maar als er meer vertoningen zijn, moet u er alleen aan denken en het niet onvoorwaardelijk accepteren. De liveinternet.ru-teller is bijvoorbeeld geschreven in C.

Taal C++. Het heeft dezelfde nadelen als C, maar biedt in een minder voor de hand liggende vorm een ​​vergelijkbare, maar lagere productiviteit. Het wordt meestal gebruikt waar prestatie nog steeds vereist is en de bedrijfslogica zeer complex is en grenst aan het wetenschappelijke. Een klassiek voorbeeld zijn zoekdiensten. Een belangrijk nadeel dat verhindert dat het C in zijn niche volledig vervangt, is de grotere vrijheid voor niet-ondersteunde code. Net als bij de tabelindeling schrijft iedereen ongeveer hetzelfde in C, en als de code voldoet aan formele en verifieerbare kwaliteitseisen (geen geheugenlekken toestaat, correct omgaat met fouten, enz.), dan zal deze hoogstwaarschijnlijk op een volledig niveau zijn. aanvaardbaar niveau en in termen van informele maar belangrijke kenmerken zoals ‘begrijpelijkheid’ en ‘samenhang’. Maar in C++ kun je zowel geweldig als walgelijk schrijven, met inachtneming van alle formele vereisten. En uiteraard komt de tweede vaker voor.

Java-taal. Vanuit technisch oogpunt verschilt het van C++ op ongeveer dezelfde manier als C++ verschilt van C. Dat wil zeggen dat de overgang van C++ naar Java een verlies van nog eens een halve orde aan productiviteit betekent, maar een nieuwe winst in ontwikkelingssnelheid en een bibliotheek met kant-en-klare oplossingen is al vergelijkbaar met scripttalen. Vanuit sociaal oogpunt is het aantal Java-programmeurs kleiner dan het aantal C++-programmeurs en het aantal PHP-programmeurs, terwijl ze gemiddeld duurder zijn en, naar mijn subjectieve mening, gemiddeld slechter dan beide. De reden voor deze vreemde situatie is de vrij grote markt voor Java-ontwikkeling van bedrijfssystemen, die enerzijds de salarissen verhoogt en anderzijds een eigen cultuur en benadering van programmeren inbrengt, wat alleen schadelijk is op internet. . Als gevolg hiervan zie ik geen enkele situatie waarin het gebruik van Java bij webontwikkeling gerechtvaardigd zou zijn. (Desalniettemin is odnoklassniki.ru geschreven in Java en werkt het met succes.)

Als we een fout hebben gemaakt en Windows als besturingssysteem hebben gekozen, verschijnen er naast de genoemde talen (ze zijn in principe allemaal meer gericht op Unix, maar kunnen overal worden gebruikt) nog twee opties: VBScript (een soort analoog van PHP) en C# (analoog van Java). Omdat ik geen enkel voordeel van Windows zie, kan ik ze niet aanbevelen.

De verscheidenheid aan serverprogrammeertalen is niet beperkt tot de genoemde opties, maar de totale populariteit van al het andere is bijna nul en ik ken geen rationele redenen om voor exotische te kiezen.

Alle bestaande (tenminste alle populaire) tools zijn universeel. Op elk van hen kun je absoluut alles implementeren, de enige vraag is dat het met sommige tools sneller en goedkoper zal zijn, en met andere duurder en langzamer. In principe verbiedt niemand het gebruik van twee verschillende servertalen in één project, maar dit leidt meestal tot een verslechtering van de beheersbaarheid van het project - we zijn afhankelijk van twee specialisten (of twee groepen specialisten) in plaats van één, die naast Bij het eigenlijke projectwerk moet aandacht worden besteed aan coördinatie als puur sociaal (communicatie met elkaar) en technisch. De enige gerechtvaardigde uitzondering is de combinatie van een van de scripttalen met een van de C/C++-paren. Het “oppervlakkige” deel van de code, dat verantwoordelijk is voor de interface, is geschreven in script, en het meest prestatiekritische interne deel is geschreven in C of C++. Bovendien kan de verhouding tussen onderdelen in verschillende projecten totaal verschillend zijn. Ulov-umov.ru is bijvoorbeeld een zeer algoritmisch complex C++-project dat in wezen een eigen zoekmachine en een kleine Perl-wrapper implementeert die een gebruikersinterface van letterlijk 10 pagina's tekent. En binnen de volledig op PHP gebaseerde readme.ru bevindt zich een kleine C-module die, op basis van kant-en-klare gegevens, snel informanten aantrekt. Het is belangrijk dat een productieve taal zich altijd ‘binnenin’ bevindt, en welk deel van het volume deze in beslag neemt, hangt af van lokale factoren.

Hoe verschillen webprogrammeertalen aan de clientzijde van de webprogrammeertalen aan de serverzijde?

Datum: 04-10-2012

Alle webprogrammeertalen kunnen in twee grote groepen worden verdeeld: cliënt En server. Om te begrijpen en te begrijpen wat deze talen zijn, hoe ze werken en hoe ze van elkaar verschillen, moet je nog twee definities begrijpen: Server En Cliënt.

Server– dit is de computer waarop de site op internet draait (de bestanden en mappen van de site worden opgeslagen). Meer onder de term Server een speciaal programma begrijpen dat op een computer is geïnstalleerd en dat verzoeken van de browser van de gebruiker naar een webdocument verwerkt (bijvoorbeeld).

Cliënt- dit is de gebruiker zelf, of beter gezegd de browser die op uw computer is geïnstalleerd. Wanneer een internetgebruiker een verzoek indient bij een server, is hij een klant.

Talen van klanten.

Clienttalen draaien op de (client)computer van de gebruiker. Om precies te zijn: ze worden door de browser zelf uitgevoerd. Normaal gesproken zijn clienttalen ingebed in de html-code van een webpagina. Om de code te zien, hoeft u dus alleen maar de webpagina te openen met een teksteditor of browser.

Omdat clienttalen op de computer van de gebruiker draaien, kan alleen de gebruiker beslissen of hij ze nodig heeft of niet. Hij kan ze eenvoudig uitschakelen en de browser doet niets.

Een van de belangrijkste nadelen van client-side talen is dat ze niet kunnen communiceren met de server waarop de site zich bevindt. Er is geen manier om er informatie uit op te slaan en te laden. Dit beperkt het gebruik van clienttalen aanzienlijk. Bijvoorbeeld over programma’s die bepaalde informatie van/naar de server moeten opslaan en laden: gastenboeken, commentaarblokken, beoordelingen, stemmen, etc. Je kunt het helemaal vergeten.

Omdat elke gebruiker de programmacode heel gemakkelijk kan bekijken, kunt u bovendien de beveiliging vergeten. Als u de toegang tot bepaalde bestanden met dergelijke talen wilt blokkeren, is de kans klein dat dit lukt. Het is heel gemakkelijk om de HTML-code van een webpagina te bekijken om alle beveiligde informatie en wachtwoorden te achterhalen.

Omdat klanttalen echter zo populair zijn geworden, moeten ze ook voordelen hebben. Ja, er zijn voordelen en meer!

1) Ze sturen geen gegevens naar de server, waardoor hun werk veel sneller gaat.

2) Er is geen aanvullende software vereist, alles wat u nodig heeft staat in de browser van de klant.

3) Het hostingbedrijf heeft geld nodig voor het gebruik van servertalen (betaalde hosting), maar niet voor clienttalen.

De meest voorkomende klanttalen zijn: JavaScript En VisualBasicScript (VBS). Om ervoor te zorgen dat de browser ze begrijpt en uitvoert, is er een speciale tool ingebouwd: een tolk.

JavaScript, ontwikkeld door het bedrijf Netscape en werd oorspronkelijk alleen voor de browser gebruikt Netscape-navigator. Momenteel is deze taal erg populair geworden. VisualBasicScript (VBS) dit is een analoog van de klanttaal van het bedrijf Microsoft.

Zoals eerder vermeld werken al deze talen in reguliere browsers zonder extra modules of plug-ins. De meest voorkomende browsers zijn: Internet Explorer, Opera, Mozilla, enz.

Servertalen.

Talen aan de serverzijde worden rechtstreeks op de server zelf uitgevoerd, door een speciaal programma. Dit betekent dat het, om ze te laten werken, niet uitmaakt welke browser de gebruiker gebruikt, alle berekeningen zullen nog steeds plaatsvinden op een externe computer (server).

Het is voor een sitebezoeker over het algemeen onmogelijk om de programmacode in de servertaal te zien; hij ziet alleen de resultaten van het werk, dat al als een HTML-pagina wordt gepresenteerd.

Server-side talen bieden de webprogrammeur veel meer mogelijkheden dan client-side talen. Hiermee kunt u gegevens uitwisselen met de server, waarvan wij bij het gebruik van clienttalen geen gebruik konden maken.

De meest populaire servertalen zijn: en Perl.

Omdat servertalen communiceren met een externe computer (server), er is behoefte om de resultaten van deze interactie ergens op te slaan. De vraag rijst: hoe en waar deze gegevens moeten worden opgeslagen?

Een gastenboek omvat bijvoorbeeld het opslaan op de server van informatie over de naam van de gebruiker en de gegevens van het bericht dat hij heeft achtergelaten. Als u niet te veel gegevens heeft, kunt u deze opslaan in een gewoon tekstbestand. Maar naarmate elke site groeit, moet deze een enorme hoeveelheid informatie opslaan. Het is voor dit doel dat er is Database (DB).

Dit is een soort bibliotheek waar alle informatie netjes op planken staat. Maar gewoon alleen DB nog niet genoeg. Als er veel informatie is, wordt het erg moeilijk om te vinden wat we nodig hebben, om nog maar te zwijgen van het verwerken van alle informatie of het extraheren van alleen de noodzakelijke gegevens. Dus waarom laat je de computer het niet doen? Dat is wat ze deden. Momenteel worden databases met succes door computers verwerkt. De systemen die hiervoor verantwoordelijk zijn heten Databasebeheersystemen (DBMS).

  • Vertaling
  • Handleiding

De weg is lang en moeilijk, maar interessant en nuttig!

Het artikel was bedoeld als een praktische gids voor diegenen die een professionele webontwikkelaar willen worden. Ik schrijf al meer dan 20 jaar webcode. Ik werk elke dag met en help webontwikkelaars. In dit artikel beschrijf ik wat je moet leren, wanneer je het moet leren en waar je de informatie kunt krijgen (meestal gratis). Daarna geef ik advies over het opdoen van ervaring in de echte wereld, en vooral, hoe je betaald krijgt om code te schrijven.

Er zijn veel links naar gratis en belangrijke bronnen verspreid over het artikel. Voor de eenvoud heb ik ze in PDF verzameld en in categorieën verdeeld. Ik word niet betaald om de sites te vermelden waarnaar ik link - ik wil alleen de beste bronnen aanbevelen om u te helpen uw doel te bereiken.

Dingen om te onthouden:

1. Je mag door het artikel scrollen

De gids kan u helpen, waar u zich ook bevindt op de weg naar professionele ontwikkeling. Scroll naar de titel die uw huidige situatie het beste beschrijft en lees vanaf daar. Als je net aan dit pad bent begonnen, of er nog over nadenkt, volg dan het advies van de Koning uit “Alice in Wonderland”:

Begin bij het begin en ga door tot je het einde bereikt; en daar al stoppen.

2. Probeer van alles een beetje en kies dan een specialisatie.

Geld is niet het allerbelangrijkste. Je moet HOUDEN van wat je doet! Maar je weet pas wat je lekker vindt als je het probeert.


Vind je passie en genereer er geld mee

De gids helpt u zo snel mogelijk vertrouwd te raken met zoveel mogelijk gebieden van webontwikkeling. En dan helpt hij je bij het kiezen van een specialisatie op het gebied dat je leuk vindt. Je zult in eerste instantie nergens perfect in worden; je leert de basis en gaat dan verder met leren. Vind je passie en ik zal je laten zien hoe je verder kunt komen.

Ik besloot code te schrijven. Ik hou van internet. Ik weet niet waar ik moet beginnen


Je zal slagen!

Gefeliciteerd! Dit is een grote eerste stap en het begin van iets heel spannends. Maar het kan ook heel lastig zijn. Maak je geen zorgen, ik zal helpen.

Ten eerste moet u snel vertrouwd raken met de basisprincipes van alle gebieden van webontwikkeling (“volledige cyclus”). De training zal gevarieerd, maar oppervlakkig zijn. Dit is om een ​​vakgebied te vinden dat je leuk vindt en ook om basisvaardigheden op verschillende gebieden te verwerven. Dan zul je in staat zijn een groot aantal problemen te begrijpen en ermee aan de slag te gaan, ongeacht wat je kiest.

Leer de basisprincipes van HTML

Hypertext Markup Language (HTML) bepaalt de inhoud en lay-out van wat u in de browser ziet. Zodra u daar begint, beschikt u over een gebruikersinterface waarmee u kunt communiceren en de resultaten van uw code kunt zien. Naarmate u complexere talen leert, zal het belang ervan toenemen. Je hoeft niet blindelings te coderen.

Dit is wat u moet leren over HTML:

Ik ken de basisprincipes van HTML al

Koel! Dit is een zeer belangrijke stap. Leer nu de basisprincipes van JavaScript.

Leer JavaScript-basisprincipes

JavaScript is de taal van het internet en alle grote browsers (Chrome, Firefox, Safari, IE en vele andere) ondersteunen dit. Elke site, elke webapplicatie die u hebt gebruikt, bevat hoogstwaarschijnlijk een enorme hoeveelheid JS-code. Om nog maar te zwijgen van het feit dat de taal aan populariteit wint op andere platforms: servers, desktopcomputers en andere apparaten.

Voor nu heb je de basis nodig, en de volgende bronnen zijn daar goed voor:

Ik ken de basisprincipes van JavaScript en HTML

Verbazingwekkend! Laten we nu CSS aan uw vaardigheden toevoegen

Leer CSS

CSS of Cascading Style Sheets (trapsgewijze stijlbladen). Wordt gebruikt om het uiterlijk van HTML-elementen op de pagina aan te passen. Bekijk de gratis tutorial van Mozilla en bekijk vervolgens CSS-Tricks voor de moeilijkste problemen (zoek rechtsboven).

Laten we verder gaan naar de backend

Tot nu toe hebben we gekeken naar wat de ‘front-end’ van webontwikkeling wordt genoemd. Je bent vertrouwd geraakt met de belangrijkste talen die in de browser werken. Het is tijd om verder te gaan naar de backend: de code die op de server draait. Maak je geen zorgen, je hebt geen server nodig; je computer regelt het wel.

Er zijn een heleboel backend-talen, maar aangezien je bekend bent met JavaScript, raad ik je aan Node.js te leren gebruiken. Hiermee kunt u JS-code op de server uitvoeren in plaats van in de browser.

Daarnaast moet je Express en MongoDB leren.

Nadrukkelijk
Dit is een bibliotheek waarmee Node.JS als webserver kan werken (verzoeken van pagina's beluisteren en antwoorden sturen).
MongoDB
Het is een database waarmee u informatie kunt opslaan en ophalen.

Je kunt deze drie onderwerpen bestuderen dankzij het volgende uitstekende en gratis educatieve materiaal, en het vervolg ervan.

Ik moet kiezen tussen frontend, backend en volledige cyclusontwikkeling

Nadat je beide ontwikkelopties hebt geprobeerd, is het tijd om een ​​keuze te maken. Als je geen tijd hebt gehad om ze uit te proberen, raadpleeg dan het vorige gedeelte van het artikel om de hiaten in je kennis op te vullen.

Op dit punt heb je twee soorten code geschreven. De ene is voor gebruikersinteractie, de andere is voor gegevens. Wat verkies je?

Gebruikersinteractie? Gefeliciteerd, je bent een front-end developer!

Interactie met gegevens? Gefeliciteerd, je bent een backend-ontwikkelaar!

Beide? Gefeliciteerd, je bent een full-stack ontwikkelaar!

Vond je niets leuk? Gefeliciteerd, webontwikkeling is niets voor jou. Wees blij dat je er nu achter bent gekomen en geen hoop tijd en geld hebt verspild. Nog niet klaar om op te geven? Misschien ben je geen taal tegengekomen die je leuk vond? Probeer andere talen te leren in de sectie 'Ik wil een backend-ontwikkelaar worden'.

Ik wil een full-stack ontwikkelaar worden

Koel. U moet de volledige inhoud van de secties 'Ik wil een backend-ontwikkelaar worden' en 'Ik wil een frontend-ontwikkelaar worden' lezen.

Ik wil front-end developer worden en ken de basis van JavaScript, HTML en CSS

Om effectief te kunnen werken als front-end-ontwikkelaar, moet je vloeiend zijn in HTML, CSS en JavaScript aan de clientzijde. Je zult ook een goed begrip moeten hebben van een aantal belangrijke raamwerken. Je verkrijgt de vaardigheden die werkgevers en klanten verwachten te vinden bij front-end ontwikkelaars.

Je zou nu de basisprincipes van HTML al moeten kennen. Ga anders terug naar het gedeelte HTML-basisbeginselen leren.

Leer halfgevorderde en geavanceerde HTML
Bekijk de tussentijdse HTML-tutorial en vervolgens de geavanceerde HTML-tutorial.
Leer geavanceerd JavaScript aan de clientzijde


Een uitstekende serie boeken over JS, en het is gratis

Om uw JavaScript-vaardigheid te verbeteren, raad ik de You Don't Know JS-boekenreeks van Kyle Simpson aan. De auteur heeft de hele serie gratis online gezet:

Bovendien zou MDN JavaScript ook je beste vriend moeten zijn.

[Ook is er een uitstekende vertaling van het uitstekende boek "Expressive JavaScript" geheel gratis voor u beschikbaar.]

Het kennen van de “front-end drie-eenheid”, HTML, CSS en JavaScript is natuurlijk geweldig. Maar om geld te verdienen, zul je kennis moeten maken met enkele raamwerken.

Leer jQuery
Het is de populairste JS-bibliotheek aller tijden. Hoewel sommige nieuwe raamwerken jQuery minder belangrijk hebben gemaakt, is de kans groot dat jQuery nog vele jaren in functiebeschrijvingen zal voorkomen (en in sollicitatiegesprekken zal worden genoemd) als je op zoek bent naar een baan.

Ik raad aan om jQuery te leren met behulp van FreeCodeCamp-materiaal - het is een snelle en effectieve methode. Ga daarna naar de officiële trainingssite - daar vindt u aanvullende instructies.

Leer een populair JS-framework
Frameworks maken het werken met een bepaalde taal of technologie eenvoudiger omdat ze de grootste problemen oplossen die de gekozen technologie met zich meebrengt. JavaScript heeft een zeer gunstig effect gehad op de ontwikkeling en popularisering van raamwerken.

Bijna één keer per week verschijnt er een nieuw raamwerk, dat de plaats zal gaan innemen van een nieuwe ontwikkelingsstandaard. U zult vacaturesites moeten doorzoeken en behoorlijk wat Googlen moeten doen om erachter te komen welk raamwerk populair is in uw markt. Ik raad ook de tool van Hacker News aan voor het beoordelen van trends op de arbeidsmarkt.

Op het moment dat dit artikel werd geschreven, waren de volgende raamwerken populair:

Nadat je het meest geschikte raamwerk hebt gekozen en er grondig mee vertrouwd bent geraakt, is het de moeite waard om het bijbehorende CSS-raamwerk te bestuderen. De twee grootste spelers op deze markt zijn Bootstrap en Material Design.

Bootstrap
Bootstrap is gemaakt door Twitter-ontwikkelaars en is al behoorlijk volwassen en populair. Er bestaan ​​bootstrap-versies voor Angular, Angular 2 en React.
Materiaal
Materiaal is een reeks ontwerpregels die bij Google zijn ontwikkeld. Het wint aan populariteit en er zijn versies voor Angular en React. Omdat Angular ook een geesteskind van Google is, past Material daar perfect bij.

Hier zijn enkele links voor u:

Gefeliciteerd! Je beschikt over belangrijke front-end ontwikkelaarsvaardigheden!


Kijk maar naar hem!

Ik wil een backend-ontwikkelaar worden

Prachtig! De eerste stap is het kiezen van een taal. Er zijn veel talen beschikbaar om met de backend te werken, en elk heeft zijn eigen voor- en nadelen. Bekijk de tabel met programmeertalen gesorteerd op populariteit. Ze staan ​​allemaal al tien jaar in de top tien. De groen gemarkeerde zijn webtalen die door de jaren heen steeds populairder zijn geworden.


TIOBE Index van programmeertalen, www.tiobe.com/tiobe_index?page=index

Concentreer je op de talen waarvan ik de namen groen heb omcirkeld. Als je ze niet kent, begin dan bovenaan de tafel en werk zo naar beneden. Stop wanneer je iets vindt dat je leuk vindt en graaf diep!

Als u bekend bent met een van de groen gemarkeerde talen en deze leuk vindt, concentreer u dan daarop.

Verbeter uw interviewvaardigheden
U moet zich voorbereiden op meer dan alleen het schrijven van code. Een goed artikel van Life Hacker beschrijft veel nuttige en waardevolle informatie.
Het belangrijkste is om voet aan de grond te krijgen op de markt
Maak je niet al te veel zorgen over het krijgen van je droombaan bij je droomwerkgever met je droomsalaris. Zoek eerst gewoon een baan waar je code schrijft voor geld. Zodra u meer ervaring heeft opgedaan, kunt u uw volgende stap plannen.
Ik wil freelancer worden
Eigen baas zijn is goed, maar brengt ook enorme druk en moeilijkheden met zich mee. De beste bron van freelance-informatie die ik heb gezien is DoubleYourFreelancing.com. Hij heeft een reeks artikelen die je zullen helpen een betere freelancer te worden dan ik ooit zou kunnen. Lezen.

Een andere optie, als u vertrouwen heeft in uzelf, is de Toptal-service. Ze accepteren slechts 3% van alle sollicitanten, en het proces is erg ingewikkeld, maar als je instapt, heb je toegang tot goedbetaalde banen waar je op afstand aan kunt werken.

Ik ben begonnen met werken, maar heb het gevoel dat ik op een dood spoor zit
Begrijpen. Het is niet gemakkelijk, en als iemand je iets anders heeft verteld, heeft hij het niet gedaan of probeert hij je geld afhandig te maken. Als je het gevoel hebt dat je vastzit, probeer dan deze opties:
Vernieuw uw oorspronkelijke bedoeling
Vraag jezelf af, schrijf op papier waarom je hebt besloten dit pad te volgen. Is uw antwoord nog steeds geldig? Zo ja, waarom dan stoppen? Vooruit!