Una panoramica delle caratteristiche e delle possibilità che hanno reso Angular uno dei framework più importanti sulla scena frontend.
N.B. Le slides sono aggiornate sino ad Angular 6.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
I servizi offerti dalla piattaforma BING consentono di realizzare facilmente applicazioni per Windows 8.1 moderne ed evolute. Le funzionalità di Speech Recognition, ad esempio, consentono di fornire all'utente un diverso modo per interagire con la nostra applicazione mentre le funzionalità infrastrutturali di App Linking ci permettono di integrare la nostra applicazione all'interno dei risultati della Smart Search di Windows 8.1, consentendoci di essere più visibili e, quindi, di avere un maggior successo.
Slide della sessione "BING e Windows Store App" tenuta al DotNetCampus 2014 a Roma il 10/05/2014
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
Integrazione tra il Webkit-engine ed una Applicazione nativa per iPad.
Relatori:
Nicholas Valbusa – [email protected]
Alessandro Maroldi – [email protected]
Angular 4 - convertire o migrare un'applicazione AngularjsGiovanni Buffa
Seminario renuto all'IRES di Udine sulla migrazione, attraverso UpgradeModule, o la riscrittura di un'applicazione AngularJs in una applicazione Angular 2/4
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostriFrancesco Sciuti
Un talk dedicato agli aspetti più arcani di Angular tra i quali sono presenti alcuni mostri, che una volta conosciuti non fanno poi così tanta paura. Approfondiamo quindi alcuni aspetti della Change Detection di Angular, proviamo a capire a cosa serve e come funziona Zone.js e se sono presenti in giro altre creature o miti da sfatare!
A very introductive presentation about how Model-View-Controller pattern (MVC) and Dependence Injection (DI) are implemented in some popular frameworks, such as Spring and Angular JS.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Integrazione tra il Webkit-engine ed una Applicazione nativa per iPad.
Relatori:
Nicholas Valbusa – [email protected]
Alessandro Maroldi – [email protected]
Angular 4 - convertire o migrare un'applicazione AngularjsGiovanni Buffa
Seminario renuto all'IRES di Udine sulla migrazione, attraverso UpgradeModule, o la riscrittura di un'applicazione AngularJs in una applicazione Angular 2/4
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostriFrancesco Sciuti
Un talk dedicato agli aspetti più arcani di Angular tra i quali sono presenti alcuni mostri, che una volta conosciuti non fanno poi così tanta paura. Approfondiamo quindi alcuni aspetti della Change Detection di Angular, proviamo a capire a cosa serve e come funziona Zone.js e se sono presenti in giro altre creature o miti da sfatare!
A very introductive presentation about how Model-View-Controller pattern (MVC) and Dependence Injection (DI) are implemented in some popular frameworks, such as Spring and Angular JS.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Antonio Russo, Federico Oldrini e Jacopo Giola di Makeitapp hanno presentato il workshop di CommitUniversity, dedicato al Backend as a Service, mostrandoci come costruire con esso un applicazione.
Introduzione alla programmazione android - Android@tulug lezione 2Ivan Gualandri
Seconda lezione del corso android tenuto presso il TuLug (Tuscia Lug) A Viterbo. Le slides sono completamente in italiano (Slides are in italian! Sorry!)
Ti hanno sempre detto che per creare dei processi bisogna scrivere codice?! Nel corso di questa live cercherò di mostrarvi come, grazie all'utilizzo di Azure Logic Apps, potete cominciare a crearli in modalità No-Code.
Le Azure Logic App sono un servizio offerto da Microsoft e presente sul proprio cloud: tramite una serie di "blocchi" potrete definire flussi, controlli e connettori semplicemente con un click da interfaccia visuale. Non dovrete scrivere del codice (se non poco e in modalità guidata) per raggiungere il vostro obiettivo!
Non passerò il tempo della live con tutta teoria. Vi mostrerò come creare, costruire , modificare e "sbagliare" una Logic App. Poco dopo, vi mostrerò una mia Logic App che opera su OneDrive introducendo in questo modo il concetto dei connettori per accedere a sistemi diversi.
Certo, sicuramente quello che vedremo un programmatore lo può scrivere via codice. Però perché escludere la possibilità di raggiungere certi obiettivi non utilizzando la programmazione?! Questo non vuol dire che il mondo del coding e quello delle Logic Apps siano incompatibili. Possono interagire benissimo tra di loro ed essere scambiati a piacere!
Ora – se volete conoscere il No-Code su Azure – non vi resta che unirvi alla live per avere una visione alternativa (e per tutti) alla programmazione.
Dependency injection questa sconosciutaAndrea Dottor
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilità o potenzialità.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che può portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilità.
In questa sessione vedremo cos'è la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
Slide dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice è disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive Servicesdotnetcode
The document discusses new features of Azure Cosmos DB, a multi-model database service. It begins with an introduction to NoSQL databases and how they originated. It then outlines three new key features of Cosmos DB: 1) serverless capabilities that allow customers to pay based on consumption, 2) built-in Jupyter notebooks for interactive querying and visualization, and 3) integration of notebooks with GitHub. The document concludes with a demo of how these features can be used together with other Azure services like Cognitive Search, Computer Vision, and Functions.
Azure Meetup: Understanding Azure App Service Plandotnetcode
Azure App Service è il servizio Microsoft per l'hosting di applicazioni basate sul Web (Web App, Api App, Mobile App o Logic App).
In Azure App Service Il piano tariffario determina le limitazioni in termini di spazio sul disco, il numero di app che è possibile ospitare e il numero di istanze di macchine virtuali che è possibile scalare all'interno del piano.
Inoltre il piano tariffario scelto determina anche quali funzionalità sono disponibili.
Scopriamo le differenze tra i vari piani, come cambiarlo anche dopo la creazione dell'App Service e come scalarlo.
Speaker: Gaetano Paternò
Video sessione: https://youtu.be/u1akvSSsFz4
Azure Meetup: Keep your secrets and configurations safe in azure!dotnetcode
Le nostre applicazioni hanno di tutto nei loro file di configurazione: stringhe di connessione, chiavi di accesso ai servizi e informazioni sensibili si trovano, in chiaro, scritti in file accessibili da chiunque. Ogni applicazione, inoltre, ha il suo file di configurazione dove vengono duplicate informazioni che sono sempre le stesse.Sarà il modo corretto di conservare i segreti?
Come faccio a sapere chi e quando accede alle informazioni sensibili e come posso centralizzare le configurazioni comuni?
Azure Key Vault e Azure App Configuration possono essere la soluzione ai nostri problemi. In questo meetup vedremo quali strumenti e funzionalità ci forniscono per mettere in sicurezza le informazioni sensibili di configurazione delle nostre applicazioni…..e non solo!!!
Meetup Azure DevOps
Introduzione ad Azure DevOps e panoramica sulle principali funzionalità per il CI ed il CD del proprio software
Speaker: Simone Natalini
The document summarizes a presentation given by Fabio Mannis on secure coding practices for .NET developers. It discusses the Open Web Application Security Project (OWASP) Top 10 security risks, including injection, broken authentication, sensitive data exposure, and cross-site scripting. It provides examples of each risk and techniques for avoiding common vulnerabilities like validating and sanitizing untrusted user input, implementing secure password policies, encrypting sensitive data, and using anti-XSS libraries when updating pages with user-supplied content. The presentation aims to help developers write more secure code and avoid vulnerabilities.
The document announces a meetup hosted by DotNetCode.IT, a Microsoft .NET coding community. The meetup agenda focuses on micro ORMs, how they can help write performant code, differences from Entity Framework, and examples using Dapper. The meetup includes presentations on what micro ORMs are, how to use them to improve performance, use cases versus Entity Framework, an introduction to Dapper, and a demo. Attendees can get a 25% discount and information is provided on upcoming events focusing on serverless microservices and the Global Azure Bootcamp.
6. DotNetCode.IT
Microsoft .Net Coding Community
AGENDA
• Introduzione alle Single Page Application
• ASP.NET Core & Single Page Application
• Angular
• Integrazione SPA e Angular
8. DotNetCode.IT
Microsoft .Net Coding Community
Cosa sono le Single Page Applications?
Con Single Page Application (SPA) si intende un'applicazione web o un
sito web che può essere usato o consultato su una singola pagina web
con l'obiettivo di fornire una esperienza utente più fluida e simile alle
applicazioni desktop dei sistemi operativi tradizionali
9. DotNetCode.IT
Microsoft .Net Coding Community
Classic Web Page VS Single Page Applications
Applicazioni Web Classiche (Multi Page Application)
In un'applicazione classica web il caricamento del codice e delle risorse
necessarie per il rendering della pagina viene richiesto dal browser ad
ogni caricamento della singola pagina.
Client
Inital Request
Server
HTML
HTML Page
Post/Get Url
HTML
HTML Page
Reload
10. DotNetCode.IT
Microsoft .Net Coding Community
Classic Web Page VS Single Page Applications
Single Page Application
In un'applicazione su singola pagina tutto il codice necessario (HTML,
JavaScript e CSS) è recuperato in un singolo caricamento della pagina o
le risorse appropriate sono caricate dinamicamente e aggiunte alla
pagina quando necessario, di solito in risposta ad azioni dell'utente.
Client
Inital Request
HTML
HTML Page
Ajax Call
{...}
JSON
Server
11. DotNetCode.IT
Microsoft .Net Coding Community
Quali sono ad oggi i framework più utilizzati?
Le Single Page Application, essendo applicazioni che girano sul browser,
sono basate tutte su un framework javascript.
I framework più utilizzati ad oggi sono:
Angular React Vue Ember AureliaBackbone
13. DotNetCode.IT
Microsoft .Net Coding Community
Struttura di una SPA
Il 99% Single Page Application possono esser suddivise 2 in due parti:
Front End Back End
DB
16. DotNetCode.IT
Microsoft .Net Coding Community
Angular
Angular è un framework per costruire applicazioni lato client
Punti di forza
• Approccio modulare
• Codice riusabile
• Sviluppo rapido e semplice
• Testing
• Google + Microsoft (Typescript)
Storia e Semantic Versionig
2010 – Angular JS
2016 – Angular 2.0
12/2016 – Angular 4.0
11/2017 – Angular 5.0
17. DotNetCode.IT
Microsoft .Net Coding Community
Concetti Fondamentali
•Modulo: è un «area caratteristica» dell’applicazione. Un’applicazione Angular è un insieme di moduli, il
modulo principale, detto «Root Module», è l’AppModule e contiente, al suo interno, tutto il necessario per
compilare e avviare l’applicazione.
•Componente: è un evoluzione del linguaggio HTML che permette la realizzazione della pagina. Ogni
componente è caratterizzato da 3 elementi fondamentali:
•Nome (selettore)
•Rappresentazione grafica (template o vista)
•Funzionalità che deve avere (classe o modello)
Ogni modulo contiene uno o più componenti, che appartengono al componente principale
«AppComponent»
•Servizio: è una classe che contiene logica di business. Ogni modulo può contener uno o più servizi.
•Direttiva: è una notazione che si inserisce nei tag html per arricchirli di nuove funzionalità. Esistono 2 tipi di
direttive, quelle in grado di cambiare la struttura del DOM della pagina e quelle in grado di cambiare solo
l’aspetto di tag già presenti (ad esempio il colore di un testo)
•Evento: è un operazione che può essere fatta all’interno dell’applicazione e che viene intercettata dal
browser (sintassi simile a javascript)
18. DotNetCode.IT
Microsoft .Net Coding Community
Modulo
L’AppModule:
• per convenzione viene salvato come «app.module.ts» all'interno della cartella app.
• deve essere unico all’interno dell’applicazione
• deve sempre importare il «BrowserModule» che conterrà le direttive importanti
• all’interno della proprietà declarations, dovrà contenere l’elenco di tutti i componenti utilizzati
nell’applicazione
• All’interno della proprietà bootstrap, deve contenere il nome del componente che dovrà essere caricato per
primo (AppComponent)
19. DotNetCode.IT
Microsoft .Net Coding Community
Componente
Un componente
• per convenzione dovrà essere salvato come: nome.component.ts, all’interno della cartella
app/components/nome
• dovrà contenere il nome del selettore html, la sua rapprensentazione grafica ed eventualmente il suo foglio di
stile
• dovrà contenere al suo interno la logica del componente e la gestione degli eventi
20. DotNetCode.IT
Microsoft .Net Coding Community
Servizio
Il servizio è una normale classe TypeScript il cui nome per convenzione sarà nome.service.ts e sarà salvata in
una cartella services, che conterrà un particolare decoratore «@Injectable()», grazie al quale Angular potrà
riconoscerla come classe da utilizzare grazie al meccanismo del Dependendy Injection.
Come tutte le classi, che non siano componenti, non ha un template ma contiene la parola export, perché
dovrà essere esportata come un modulo all’interno dell’AppModule, nella proprietà providers
21. DotNetCode.IT
Microsoft .Net Coding Community
Esempi di Direttive
• *ngFor: la direttiva ngFor ci permette di ripetere elementi del DOM
• *ngIf: la direttiva ci permette di visualizzare un elemento solo se si verifica una condizione
• *ngSwitch: la direttiva ci permette di visualizzare un elemento sulla base di più valori
• *ngStyle: la direttiva ci permette di cambiare l’aspetto di un elemento
• *ngClass: la direttiva ci permette di aggiungere o togliere css
22. DotNetCode.IT
Microsoft .Net Coding Community
Eventi
• click – Emesso non appena si effettua un click
• mouseup - Emesso non appena si rilascia il pulsante del mouse dopo un click
• mousedown - Emesso non appena si schiaccia il pulsante del mouse sopra all'elemento
• mousemove - Emesso non appena si muove il mouse sopra all'elemento
• mouseover - Emesso non appena si posiziona il mouse sopra all'elemento o a uno dei suoi figli
• keydown - si verifica non appena si preme un pusante qualsiasi della tastiera
• keyup - si verifica non appena si rilascia un pulsante qualsiasi della tastiera
• key - il nome del tasto premuto
• shiftKey - valore booleano indicando se il tasto SHIFT (maiuscolo) è stato o meno premuto
• ctrlKey - valore booleano indicando se il tasto CTRL è stato o meno premuto
• altKey - valore booleano indicando se il tasto ALT è stato o meno premuto
23. DotNetCode.IT
Microsoft .Net Coding Community
Creazione Applicazione
Creazione progetto in Visual Studio. File -> Nuovo -> Progetto : Selezionare Web ASP.NET Core e poi
Angular
24. DotNetCode.IT
Microsoft .Net Coding Community
Il template scarica tutti i moduli necessari all’applicazione nella cartella node_modules e configura la
soluzione inserendo
• Le cartelle e i file di configurazione tipici di ASP.NET MVC:
• «Controllers» e «Views»
• «Startup.cs» e «Program.cs»
• La cartella «ClientApp» con i file TypeScript contenenti il codice di esempio Angular
• La cartella «wwwroot» che serve ad VS2017 per costruire una versione ottimizzata del codice lato client
• Il file «appsettings.json» che sostituisce il vecchio WebConfig
• Il file «package.json» che contiene la configurazione di NPM (ossia tutti i moduli scaricati con le relative
versioni)
• Il file tsconfig.json che contiene la configurazione di TypeScript
• I file webpack.config.js e webpack.config.vendor.js che contengono i moduli di codice e le loro dipendenze
nel corretto ordine e gestiscono il Lazy Loading
Contenuto della Soluzione
25. DotNetCode.IT
Microsoft .Net Coding Community
Contenuto della Soluzione
Nella cartella ClientApp sono presenti le classi di esempio di AppModule e AppComponent:
27. DotNetCode.IT
Microsoft .Net Coding Community
Interazione Client-Server
Ora che abbiamo lo scheletro della nostra applicazione esploriamo le capacità di interazione client-server del
framework, o meglio cerchiamo di capire come Angular è in grado di recepire i dati da .NET Core usando MVC e
le web API.
Per poter rispondere a qualunque Data Request, il
Controller deve avere le seguenti capacità:
• Leggere e/o scrivere dati usando il Data Access Layer
• Organizzare i dati in un ViewModel adatto alla
Serializzazione JSON
• Serializzare il ViewModel e inviarlo al client come
Response
28. DotNetCode.IT
Microsoft .Net Coding Community
Interazione Client-Server
Il ViewModel è una classe di tipo container che rappresenta solo i dati che vogliamo mostrare nella pagina, e
nello standard MVC ASP.NET è istanziata dal Controller in risposta a una richiesta di tipo GET o POST.
Nel contesto standard Web Api, i dati devono essere passati, per convenzione, in formato JSON o XML, per
questo motivo il ViewModel dovrà essere serializzato e convertito in stringa JSON e per far ciò è sufficiente
aggiungere la seguente decorazione alla classe:
[JsonObject(MemberSerialization.OptOut)]
Il Controller, invece, dovrà essere modificato per permettere la gestione dei metodi HTTP: GET, POST, PUT e
DELETE.
In particolare la classe dovrà essere decorata il routing: [Route("api/[controller]")]
e ogni metodo con il verbo che li invocherà: [HttpGet("[action]")]
29. DotNetCode.IT
Microsoft .Net Coding Community
Interazione Client-Server
Il componente di Angular che ha effettuato la Request dovrà interpretare la Response e visualizzarla, in questa
maniera:
30. DotNetCode.IT
Microsoft .Net Coding Community
Entity Framework
Per quanto riguarda il Data Access Layer possiamo utilizzare EF, è sufficiente scaricarlo da NuGet
Le modalità di EF in ASP.NET Core non cambiano, perciò bisogna prima scegliere l’approccio migliore per
l’applicazione che si sta realizzando (Model-First, Database-First, Code.-First) e poi procedere secondo la
modalità scelta.
31. DotNetCode.IT
Microsoft .Net Coding Community
Entity Framework
Ad esempio se si sceglie il Code-First bisogna:
• Creare le entità
• Definire le relazioni
• Settare il DbContext
• Scegliere le strategie per inizializzare il database
• Scegliere il Database Engine
• Aggiungere la stringa di connessione in appsettings.json
• Modificare il file Startup.cs aggiungendo i servizi di Entity Framework al metodo ConfigureServices
• Creare il database (Migration: «dotnet ef migrations add "Initial" -o "DataMigrations" »)
32. DotNetCode.IT
Microsoft .Net Coding Community
Autenticazione
Il templete Angular scelto in fase di creazione del progetto, non prevede l’autenticazione tuttavia è possibile
inserirla manualmente.
Si può scegliere tra autenticazione di terze parti (Facebook, Google, etc) o proprietaria mediante .NET Core:
• Individual user account, immagazzinando i dati in un database interno mediante ASP.NET Identity
• Azure Active Directory, utilizzando un set di chiamate API basate su un token
• Windows Authentication, per applicazioni locali all’interno di un dominio Windows
Ad esempio se si sceglie di utilizzare ASP.NET Core Identity bisogna:
• Configurare l’Identity service nel file Startup.cs, aggiungendo la referenza a Microsoft.AspNetCore.Identity
• Creare l’entità ApplicationUser ed estenderla con l’IdentityUser
• Aggiornare il DbContext
• Rivedere il DbSeeder
• Aggiornare il database (Migration: «dotnet ef migrations add "Identity" -o "DataMigrations" »