{"id":32231,"date":"2021-02-10T05:00:00","date_gmt":"2021-02-10T04:00:00","guid":{"rendered":"https:\/\/blexin.com\/?p=32231"},"modified":"2021-08-05T17:31:39","modified_gmt":"2021-08-05T15:31:39","slug":"blazor-vs-angular-quale-scegliere-prima-parte","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/","title":{"rendered":"Blazor vs Angular: quale scegliere? Prima parte"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"32232\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/attachment\/blexin_1105x656_blog_angularvsblazor\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&amp;ssl=1\" data-orig-size=\"1105,656\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"blexin_1105x656_blog_angularvsblazor\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-32232\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor-1024x608.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una delle domande su Blazor che mi viene fatta pi\u00f9 spesso \u00e8 perch\u00e9 dovrebbe essere scelto come framework di front-end al posto di soluzioni pi\u00f9 consolidate come Angular. La risposta \u00e8 molto semplice: non ci sono ragioni generiche per adottare un framework piuttosto che un altro, quindi non dovreste mai farlo alla cieca! Ma spesso si guardano le cose da punti di vista strettamente funzionali, quando invece nella realt\u00e0 i requisiti <strong>non funzionali <\/strong>fanno la differenza tra il successo e il fallimento di un progetto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9&nbsp;Angular&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Angular \u00e8 sicuramente un framework molto utilizzato nel mondo Microsoft, probabilmente perch\u00e9, con l\u2019avvento di .NET Core, fu chiaro che a breve non ci sarebbe stata una soluzione paragonabile e anche perch\u00e9 tra i framework in circolazione era quello pi\u00f9 vicino ai programmatori .NET. Questo perch\u00e9 il team di Angular, nel passaggio da AngularJS a Angular 2, decise di adottare TypeScript, un tool Microsoft che rende JavaScript straordinariamente simile a C#.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stiamo per\u00f2 parlando di un <em>transpilatore<\/em> che genera codice JavaScript che il browser pu\u00f2 eseguire, quindi non un vero e proprio compilatore. La tipizzazione forte, offerta a tempo di compilazione, in realt\u00e0 non esiste in JavaScript e pu\u00f2 essere facilmente aggirata. Nonostante questo, parliamo di una buona soluzione per chi si occupa di front-end Web e vuole risolvere i principali problemi di produttivit\u00e0 e manutenibilit\u00e0 di JavaScript, mentre per chi viene dal back-end \u00e8 un approccio a JavaScript pi\u00f9 che ottimo. Se poi si conosce C# si ha quasi l\u2019illusione di un linguaggio conosciuto da sempre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9&nbsp;Blazor&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Se non conosciamo gi\u00e0 Angular e TypeScript, per\u00f2, stiamo comunque incamerando debito tecnico nel team. L\u2019utilizzo corretto di questo framework richiede studio e tempo, spesso anche un team dedicato. Le conoscenze del team e il tempo necessario all\u2019acquisizione di nuove competenze sono un requisito non funzionale spesso sottostimato, che ha un impatto notevole sui progetti. Ecco quindi una buona ragione per utilizzare Blazor: potete riutilizzare le vostre conoscenze del mondo .NET nel browser, sfruttando standard web aperti come WebSocket e WebAssembly, scaricando nel browser le DLL .NET compilate in codice IL (Intermediate Language) ed eseguendo il front-end della vostra applicazione nel browser installato sulla macchina dell\u2019utente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ad onor del vero, Blazor \u00e8 disponibile in due modalit\u00e0, chiamate Hosting Models: la versione Server e la versione WebAssembly. Nella versione Server, l\u2019esecuzione del codice avviene lato Server e le modifiche all\u2019interfaccia utente (il DOM nel nostro caso) vengono inviate al client utilizzando SignalR, che, nel migliore dei casi, utilizza WebSocket in maniera trasparente al programmatore. Nella versione WebAssembly, invece, le DLL vengono scaricate nel client ed eseguite grazie a un runtime .NET (il runtime del progetto Mono) compilato in WASM, il formato binario dello standard WebAssembly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per un confronto equo, ci dobbiamo necessariamente riferire a Blazor WebAssembly, in modo da non avere nessun aiuto dal server, cosa che Angular necessariamente non avrebbe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dalla compilazione all\u2019esecuzione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Partiamo dal browser, che \u00e8 l\u2019ambiente in cui girano entrambi ma in maniera completamente differente. Ad un pi\u00f9 alto livello, possiamo vedere il browser come un\u2019 applicazione che ci mette a disposizione HTML e CSS per disegnare la nostra interfaccia e tutta una serie di API con le quali il nostro codice pu\u00f2 interagire per manipolare il DOM, accedere agli storage disponibili, comunicare con l\u2019esterno, e tanto altro in completa sicurezza e senza fare nessuna assunzione sul sistema operativo su cui il browser gira.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Possiamo accedere a queste API grazie ad un runtime, chiamato JavaScript Runtime, che garantisce il funzionamento del nostro codice con tutti i limiti di sicurezza necessari in un ambiente del genere (non possiamo accedere al file system direttamente, cos\u00ec come alle periferiche, ad esempio). Il caso pi\u00f9 comune di utilizzo del JavaScript Runtime \u00e8 attraverso gli script JavaScript, che vengono interpretati ed eseguiti proprio da questo runtime.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Angular partiamo da codice TypeScript, che viene transpilato in codice JavaScript, minificato e <em>bundlizzato<\/em> da un bundler (tipicamente WebPack) per servire al browser la versione pi\u00f9 compatta possibile del codice. Questo codice viene eseguito direttamente nel JavaScript Runtime senza intermediari, quindi con le migliori performance possibili.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-attachment-id=\"32255\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/attachment\/blazor\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blazor.jpg?fit=1598%2C898&amp;ssl=1\" data-orig-size=\"1598,898\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"blazor\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blazor.jpg?fit=1024%2C575&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blazor.jpg?resize=1024%2C575&#038;ssl=1\" alt=\"\" class=\"wp-image-32255\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2021\/02\/blazor-980x551.jpg?crop=1 980w, https:\/\/blexin.com\/wp-content\/uploads\/2021\/02\/blazor-480x270.jpg?crop=1 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In Blazor, partiamo da codice C# che viene compilato in codice IL in un assembly DLL che viene poi servito al browser insieme al runtime Mono compilato in WASM (rinominato in dotnet.wasm) e alle DLL del framework .NET necessarie all\u2019applicazione. In questo caso, il codice IL non viene eseguito direttamente nel JavaScript Runtime, ma caricato ed eseguito dal runtime Mono compilato in WASM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Come vedremo parlando di performance, questa differenza di funzionamento impatta notevolmente sui tempi di esecuzione, che pu\u00f2 quindi essere uno dei fattori di scelta tra i due.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un possibile confronto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per confrontare i due framework,&nbsp;\u00e8 necessaria una buona conoscenza di entrambi&nbsp;per&nbsp;valutare&nbsp;gli aspetti salienti in maniera oggettiva e soprattutto contestualizzata, cercando di capire quando ha senso usare uno piuttosto che l\u2019altro,&nbsp;senza fanatismi.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inoltre, i possibili piani su cui eseguire un confronto sono tantissimi, quindi limiteremo il campo a tre fattori specifici, che sono l\u2019<strong>esperienza di sviluppo,<\/strong>&nbsp;intesa come l\u2019insieme degli strumenti disponibili e il modo con cui \u00e8 possibile sviluppare applicazioni, le&nbsp;<strong>funzionalit\u00e0<\/strong>&nbsp;messe a disposizione dai due framework e le&nbsp;<strong>performance<\/strong>, non necessariamente di pura esecuzione, ma anche di tempi di attesa di compilazione e download.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dato che ognuno di questi tre punti merita un articolo separato, cominciamo qui con l\u2019esperienza di sviluppo, mentre nei prossimi articoli esamineremo funzionalit\u00e0 e performance.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Esperienza di Sviluppo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entrambi i framework mettono a disposizione una CLI (<strong>C<\/strong>ommand <strong>L<\/strong>ine<strong> I<\/strong>nterface) cross-platform per eseguire la creazione, la compilazione, l\u2019esecuzione e il deploy di progetti. Per entrambi, \u00e8 possibile usare diversi editor a pagamento o gratuiti (come Visual Studio Code), per i quali sono disponibili dei plugin specifici a supporto dello sviluppo. Possiamo anche usare degli IDE completi come Visual Studio su Windows o Visual Studio for Mac su macOS, a seconda delle nostre preferenze o abitudini.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Personalmente, preferisco Visual Studio Code per lo sviluppo front-end, mentre utilizzo Visual Studio quando mi occupo dello sviluppo di tutti i layer utilizzando lo stack Microsoft: l\u2019esperienza di sviluppo nel passaggio da front-end a back-end e viceversa \u00e8 sicuramente pi\u00f9 produttiva con un ambiente integrato. In questo specifico caso, se sviluppate su Windows con Blazor per il front-end e .NET per il back-end, l\u2019esperienza con Visual Studio \u00e8 ovviamente migliore che con Angular, vista la forte integrazione tra i prodotti della stessa casa madre. Con Angular continuo a preferire Visual Studio Code e il suo terminale integrato, i plug-in disponibili per Angular sono davvero tanti e comodi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qualsiasi ambiente usiate, l\u2019esperienza di debug di Angular al momento \u00e8 pi\u00f9 semplice e completa. Nello sviluppo front-end, mi piace fare una differenza sostanziale tra due possibili approcci al debug di quello che realizziamo. La prima vede l\u2019inserimento di un punto di interruzione nel codice per poter esaminare passo passo la logica implementata e ispezionare i valori delle variabili, la seconda \u00e8 quella che invece utilizza massicciamente il Live Reload, cio\u00e8 il rebuild e refresh automatico nel browser della pagina su cui si sta lavorando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando utilizziamo i punti di interruzione con il browser, abbiamo due possibilit\u00e0: o farlo direttamente con i tool di sviluppo offerti dal nostro browser preferito, oppure agganciare il debugger del browser dal nostro ambiente di sviluppo. In entrambi i casi, \u00e8 necessario esaminare il codice originale per capirci qualcosa, quindi C# per Blazor e TypeScript per Angular. Nel caso di Blazor, per\u00f2, abbiamo un doppio passaggio che vede coinvolti C#, il codice intermedio (IL) e la sua traduzione in WebAssembly da parte del runtime di Mono. In Angular, invece, passiamo direttamente da TypeScript a JavaScript, quindi la cosa \u00e8 notevolmente pi\u00f9 semplice. Inoltre, il browser ha un supporto nativo e consolidato per il debug di JavaScript, mentre non \u00e8 cos\u00ec invece per WebAssembly, che, tra l\u2019altro, essendo un formato binario potenzialmente generabile da qualsiasi linguaggio di alto livello, rende il debug nativamente ostico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nonostante tutto questo, Blazor WebAssembly offre la possibilit\u00e0 di inserire punti di interruzione nel codice e debuggare il codice C# originale, con una esperienza tutto sommato comoda (notevolmente migliorata con .NET 5) se non fatta direttamente nel browser (esiste, ma l\u2019usabilit\u00e0 lascia a desiderare) e in ogni caso non paragonabile a quella JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anche con il Live Reload, devo dire che l\u2019esperienza multi-browser offerta dalla CLI di Angular \u00e8 molto pi\u00f9 comoda e stabile di quella offerta dalla CLI di .NET, che \u00e8 stata introdotta proprio in .NET 5. Questo perch\u00e9, mentre in Angular riuscite ad avere il refresh su pi\u00f9 browser aperti sulla vostra applicazione, con Blazor solo un browser per volta pu\u00f2 essere aggiornato. Pu\u00f2 sembrare poca cosa, ma se fate sviluppo cross-browser, nonostante tutti gli standard attuali, capita spesso di dover provare la propria applicazione su browser differenti (a volte anche sistemi operativi differenti) e magari in diverse modalit\u00e0 (desktop, tablet o mobile). Niente di insuperabile, ma \u00e8 un aspetto di cui tener conto. Inoltre, in Blazor questa modalit\u00e0 funziona solo senza il debugger attivato, quindi non potete avere contemporaneamente Live Reload e punti di interruzione, cosa che invece avete in Angular.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In tutti i framework di front-end moderni, l\u2019interfaccia \u00e8 un insieme di componenti, quindi come realizzare un componente in uno specifico framework diventa fondamentale. Inoltre, una Single Page Application si basa su meccanismi di routing che permettono di simulare la navigazione tra diverse pagine logiche, visto che fisicamente la pagina \u00e8 una sola: il modo in cui posso istruire il motore di routing \u00e8 quindi un altro aspetto fondamentale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Da questi punti di vista Angular e Blazor hanno due approcci completamente differenti. Angular basa il suo funzionamento su una dichiarazione esplicita di tutti i parametri, quindi offre una forte configurabilit\u00e0 che per\u00f2 significa anche dover specificare ogni singola opzione diversa dai default. In Blazor, come nei principali framework web Microsoft, invece si predilige un approccio pi\u00f9 basato su convenzioni che su configurazioni (Convention Over Configuration), rendendo spesso pi\u00f9 immediato l\u2019utilizzo del framework a scapito di una configurabilit\u00e0 pi\u00f9 ostica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusioni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per il momento ci fermiamo qui, sperando di averti dato qualche informazione utile per cominciare a ragionare su quale framework scegliere per il tuo prossimo progetto. Nei prossimi articoli, analizzeremo le funzionalit\u00e0 e le performance, per completare il confronto e darti i principali strumenti per fare la scelta giusta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se hai delle domande o vuoi fare una chiacchierata con noi su questi temi, puoi contattarci utilizzando l\u2019<a rel=\"noreferrer noopener\" href=\"https:\/\/blexin.com\/it\/contatti\/\" target=\"_blank\">apposito form<\/a> e leggere gli altri articoli del nostro blog o guardare le registrazioni dei talk che<a href=\"https:\/\/blexin.com\/it\/tag\/blazor\/\" target=\"_blank\" rel=\"noreferrer noopener\"> parlano di Blazor<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Happy Coding!<\/p>\n\n\n\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dall\u2019analisi al confronto: l\u2019esperienza di sviluppo <\/p>\n","protected":false},"author":196716248,"featured_media":32232,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637374],"tags":[688637541,688637387,688637414,688637459,688637382],"class_list":["post-32231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-dotnetcore","tag-angular","tag-asp-net-core","tag-blazor","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Blazor vs Angular: quale scegliere? Prima parte - Blexin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Blazor vs Angular: quale scegliere? Prima parte - Blexin\" \/>\n<meta property=\"og:description\" content=\"Dall\u2019analisi al confronto: l\u2019esperienza di sviluppo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-10T04:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-05T15:31:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i2.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1105\" \/>\n\t<meta property=\"og:image:height\" content=\"656\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Michele Aponte\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michele Aponte\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/\"},\"author\":{\"name\":\"Michele Aponte\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/cdc5540c3b6edcacd8d760669e797005\"},\"headline\":\"Blazor vs Angular: quale scegliere? Prima parte\",\"datePublished\":\"2021-02-10T04:00:00+00:00\",\"dateModified\":\"2021-08-05T15:31:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/\"},\"wordCount\":1768,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1\",\"keywords\":[\".NetCore\",\"Angular\",\"Asp.net core\",\"Blazor\",\"C#\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/\",\"name\":\"Blazor vs Angular: quale scegliere? Prima parte - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1\",\"datePublished\":\"2021-02-10T04:00:00+00:00\",\"dateModified\":\"2021-08-05T15:31:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/cdc5540c3b6edcacd8d760669e797005\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1\",\"width\":1105,\"height\":656},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/blazor-vs-angular-quale-scegliere-prima-parte\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blazor vs Angular: quale scegliere? Prima parte\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/cdc5540c3b6edcacd8d760669e797005\",\"name\":\"Michele Aponte\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g\",\"caption\":\"Michele Aponte\"},\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/author\\\/michele-aponteblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Blazor vs Angular: quale scegliere? Prima parte - Blexin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/","og_locale":"it_IT","og_type":"article","og_title":"Blazor vs Angular: quale scegliere? Prima parte - Blexin","og_description":"Dall\u2019analisi al confronto: l\u2019esperienza di sviluppo","og_url":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/","og_site_name":"Blexin","article_published_time":"2021-02-10T04:00:00+00:00","article_modified_time":"2021-08-05T15:31:39+00:00","og_image":[{"width":1105,"height":656,"url":"https:\/\/i2.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","type":"image\/png"}],"author":"Michele Aponte","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Michele Aponte","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/"},"author":{"name":"Michele Aponte","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/cdc5540c3b6edcacd8d760669e797005"},"headline":"Blazor vs Angular: quale scegliere? Prima parte","datePublished":"2021-02-10T04:00:00+00:00","dateModified":"2021-08-05T15:31:39+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/"},"wordCount":1768,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","keywords":[".NetCore","Angular","Asp.net core","Blazor","C#"],"articleSection":["Blog"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/","url":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/","name":"Blazor vs Angular: quale scegliere? Prima parte - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","datePublished":"2021-02-10T04:00:00+00:00","dateModified":"2021-08-05T15:31:39+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/cdc5540c3b6edcacd8d760669e797005"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","width":1105,"height":656},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/it\/blog\/blazor-vs-angular-quale-scegliere-prima-parte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Blazor vs Angular: quale scegliere? Prima parte"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/cdc5540c3b6edcacd8d760669e797005","name":"Michele Aponte","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/32138aff568f2063b34d27a23cef27e09f3159bfcadea5ea05599c499cf4342f?s=96&d=identicon&r=g","caption":"Michele Aponte"},"url":"https:\/\/blexin.com\/it\/author\/michele-aponteblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2021\/02\/blexin_1105x656_blog_angularvsblazor.png?fit=1105%2C656&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-8nR","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/32231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716248"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=32231"}],"version-history":[{"count":19,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/32231\/revisions"}],"predecessor-version":[{"id":33340,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/32231\/revisions\/33340"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/32232"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=32231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=32231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=32231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}