API e socket per lo sviluppo di applicazioni Web Based
Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione dalla rete. Il più diffuso modo per sfruttare, all interno delle applicazioni scritte dai normali programmatori, le potenzialità offerte dalle reti di calcolatori è appoggiarsi alle API. Le API non sono altro che librerie software, in genere rese disponibili al pubblico da chi possiede una data tecnologia per rendere possibile la scrittura di applicazioni che sfruttino quella particolare tecnologia. Tra gli esempi più comuni di API possiamo citare le Windows API, diffuse gratuitamente da Microsoft per la creazione di programmi per Windows, e lo standard POSIX per i sistemi Unix-like come, ad esempio, Linux.
Cosa sono le API? L impiego di API comuni libera il programmatore dalla necessità di conoscere e gestire tutto quello che si trova al di sotto del livello dell applicazione in cui si trova ad operare. Il programmatore, nello sviluppo della proprio programma, si limita a richiamare le opportune funzioni implementante nel linguaggio di alto livello che ha scelto per creare l applicazione. Tali funzioni richiamano le API gestendo la comunicazione tra l applicazione e la rete in maniera automatica e del tutto trasparente per il programmatore.
Cosa sono le API? L azione svolta dalle API, a livello astratto, teorico, à quella di creare un interfaccia virtuale (network-application interface) che consente alle applicazioni installate sugli host della rete (sia lato client che lato server), di dialogare tra di loro sfruttando la rete. Le applicazioni, dal loro punto di vista non vedono la rete ma, semplicemente, dialogano con l interfaccia verso la rete che viene loro fornita dallo strato software definito dalle API.
Cosa sono le API? Language reference: Network Application Interface Communicate via the local host Client Server Router Really shouldn t matter to the application... A very simple pattern... But a very important pattern... Our key pattern For instance Echoing
Per poter impiegare le API necessitiamo di un astrazione software che ci consenta di impiegarle in maniera facile e immediata. Tale astrazione viene chiamata socket Sviluppate originariamente per i sistemi UNIX nel 1983 le API Socket sono diventate una standard de facto, implementate, con scarse differenze tra una versione e l altra, in quasi tutti i sistemi operativi ed i linguaggi di alto livello (i quali le rendono usabili ai programmatori fornendo le opportune funzioni per richiamarle). Le API Socket forniscono due tipi di servizi: Streams: consente l invio in maniera affidabile di una sequenza di bit Datagram: consente l invio in maniera non sicura di una sequenza di messaggi separati.
Affinchè un applicazione che sta girando su un terminale possa accedere alla rete ed ai servizi che la rete mette a disposizione, il codice interno dell applicazione dovrà richiamare una funzione che crei un socket, ovvero un accesso virtuale all interfaccia di rete. Il socket non esiste fisicamente... Si tratta semplicemente di un astrazione software. Ogni socket creato avrà una numerazione interna differente, in modo tale da garantire la possibilità di far girare più applicazioni contemporaneamente sullo stesso host.
Una volta creato il socket, esso può essere utilizzato da parte dell applicazione per richedere alla rete una serie di servizi. Ogni richiesta viene fatta mediante l invio di una direttiva che, tramite il socket, verrà processata dai livelli inferiori della rete e produrrà, dal punto di vista dell applicazione, una risposta.
Un esempio di comunicazione web based tramite primitive socketo potrebbe essere il seguente:
Il codice, dal punto di vista del Client, per realizzare lo scambio precedente, potrebbe essere il seguente:
Il codice per il server, invece, potrebbe essere il seguente:
Language reference Slightly deep view of... Data structure (...To let an application attach to the network...) Port number (...It provides a form of addressing... ) Dotted Communication end point bookkeeping Loop structure I wanna point out... A lot of problems that could arise if something doesn t go smoothly
Homework Try to answer the following questions What is the meaning of the acronym API? Using API we can have more than one application running on the same host and using the same network. How is this possible? Explain the meaning of the following API calls: socket, listen, connect, send, receive. In the final minutes of the video the speaker cites some programming languages. Try to guess them.