{"id":230747,"date":"2022-11-30T19:20:00","date_gmt":"2022-11-30T16:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230747"},"modified":"2022-11-09T23:48:50","modified_gmt":"2022-11-09T20:48:50","slug":"un-modo-orientato-agli-oggetti-di-lavorare-con-modelli-e-applicazioni-web","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/un-modo-orientato-agli-oggetti-di-lavorare-con-modelli-e-applicazioni-web\/","title":{"rendered":"Un modo orientato agli oggetti di lavorare con modelli e applicazioni Web"},"content":{"rendered":"\n<p>Quando si parla del concetto di Modelli nella programmazione orientata agli oggetti, ci si riferisce solitamente a una classe che \u00e8 una rappresentazione dei dati archiviati nel database.<\/p>\n<p>Cio\u00e8, quando le informazioni sono archiviate in righe e colonne, popolaamo una classe, i suoi attributi e cos\u00ec via con tali informazioni in modo da poterle passare all&#8217;applicazione, manipolarle secondo necessit\u00e0 e quindi eventualmente serializzare il i dati tornano al database.<\/p>\n<p>Ma in un&#8217;applicazione Web, \u00e8 lecito presumere che il modello potrebbe dover essere utilizzato dal front-end. Cio\u00e8, immagina una richiesta front-end che effettua una chiamata al server, richiede un modello (o una raccolta di modelli) e quindi esegue il rendering sul front-end.<\/p>\n<p>Sebbene questo particolare post non sia orientato al codice, penso comunque che valga la pena pensare al processo di traduzione di un modello dal server e quindi renderlo sul front-end dell&#8217;applicazione web.<\/p>\n<h2>Utilizzo di modelli e applicazioni Web<\/h2>\n<p>Immagina, per un momento, che la tua applicazione abbia un modello Employee. Questo modello pu\u00f2 includere una variet\u00e0 di attributi, ma \u00e8 lecito ritenere che tutti i dipendenti abbiano:<\/p>\n<ul>\n<li>un nome,<\/li>\n<li>un cognome,<\/li>\n<li>un ID dipendente,<\/li>\n<li>e un indirizzo email<\/li>\n<\/ul>\n<p>Il modo in cui queste informazioni vengono archiviate nel database non \u00e8 del tutto irrilevante, ma non \u00e8 cos\u00ec importante per questa discussione.<\/p>\n<p>Ad esempio, forse esiste un singolo record che contiene tutte queste informazioni archiviate in una stringa JSON. D&#8217;altra parte, forse esiste una tabella dipendente in cui ogni riga rappresenta un dipendente e quindi ogni colonna rappresenta un attributo.<\/p>\n<p>I dettagli su come le informazioni vengono tradotte dal database (o, pi\u00f9 in generale, dall&#8217;archivio dati) alla classe non sono cos\u00ec importanti.<\/p>\n<p>Di solito, tuttavia, vedremo qualcosa del genere:<\/p>\n<ol>\n<li>C&#8217;\u00e8 una classe che richiede le informazioni,<\/li>\n<li>Le informazioni vengono passate a una <strong>Simple Factory<\/strong> ,<\/li>\n<li>La <strong>Fabbrica Semplice<\/strong> istanzia il <strong>Modello<\/strong> ,<\/li>\n<li>Il <strong>Modello<\/strong> viene quindi passato alla classe terza che lo ha richiesto.<\/li>\n<\/ol>\n<p>Da un punto di vista pittorico, puoi vederlo in questo modo:<\/p>\n<p>Da questo momento, il <strong>Modello<\/strong> viene trasmesso per tutta l&#8217;applicazione. Ma \u00e8 qui che entra in gioco il punto iniziale di questo post: come si passa un&#8217;istanza del <strong>modello<\/strong> (o una raccolta di <strong>modelli<\/strong>) al front-end dell&#8217;applicazione?<\/p>\n<h2>Il flusso dell&#8217;applicazione Web<\/h2>\n<p>Per motivi di semplicit\u00e0, assumiamo che utilizzeremo un singolo modello e quindi, se dovessi rivisitare questo concetto dal punto di vista del codice, possiamo approfondire un po&#8217; di pi\u00f9.<\/p>\n<p>Tuttavia, il flusso generale di un&#8217;applicazione Web sar\u00e0 simile a questo:<\/p>\n<ol>\n<li>Un utente attiva un&#8217;azione che richiede un&#8217;istanza del modello,<\/li>\n<li>Il front-end effettua una chiamata a un endpoint sul server,<\/li>\n<li>Il server legge le richieste e ne verifica la validit\u00e0,<\/li>\n<li>Quindi invia una rappresentazione del modello al front-end.<\/li>\n<\/ol>\n<p>Altri sviluppatori potrebbero non essere d&#8217;accordo (che \u00e8 sempre il benvenuto e vale la pena discutere, secondo me), ma ho scoperto che la serializzazione dell&#8217;istanza del modello in JSON rende molto pi\u00f9 facile lavorare sul front-end a causa della funzionalit\u00e0 JavaScript in quanto si riferisce a, ehm, JSON.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163595-61e75570192c9.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163595-61e75570192c9.png\" alt=\"Un modo orientato agli oggetti di lavorare con modelli e applicazioni Web\" ><\/a><\/p>\n<p>In altre parole:<\/p>\n<ol>\n<li>prendiamo il modello,<\/li>\n<li>serializzalo in JSON,<\/li>\n<li>mandalo attraverso il filo,<\/li>\n<li>quindi deserializzalo sul front-end in una rappresentazione JavaScript di se stesso.<\/li>\n<\/ol>\n<p>Questo ci permette di manipolarlo come faremmo sul lato server; tuttavia, abbiamo a che fare con un oggetto JavaScript. Inoltre, ci consente anche di apportare determinate modifiche e di inviare le informazioni al server in uno stato diverso da quello in cui sono state inviate.<\/p>\n<p>In definitiva, questo ci consente di salvare i dati nel database.<\/p>\n<h2>Una prospettiva di alto livello<\/h2>\n<p>E questo \u00e8 il ciclo di vita di alto livello del passaggio di informazioni da un database a un modello al front-end e viceversa.<\/p>\n<p>Spesso, tuttavia, \u00e8 utile vederlo nel codice, quindi forse in un post futuro fornir\u00f2 una serie di articoli che possono spiegare come farlo.<\/p>\n<p>Nel frattempo, tuttavia, non dovrebbe essere difficile tradurre le tue implementazioni nel flusso di lavoro Model-Serialization-Request-Send come descritto in questo post.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comprendere come pensare al processo di lavoro con modelli lato server e applicazioni Web tramite modelli, factory e altro ancora.<\/p>\n","protected":false},"author":1,"featured_media":224094,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[731,720],"tags":[1168],"class_list":["post-230747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230747"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224094"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}