UNIVERSITÀ DEGLI STUDI GUGLIELMO MARCONI FACOLTÀ DI SCIENZE E TECNOLOGIE APPLICATE CORSO DI LAUREA IN INGEGNERIA INFORMATICA UN SISTEMA DI ...
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
UNIVERSITÀ DEGLI STUDI GUGLIELMO MARCONI FACOLTÀ DI SCIENZE E TECNOLOGIE APPLICATE CORSO DI LAUREA IN INGEGNERIA INFORMATICA UN SISTEMA DI BIGLIETTISTICA IN TECNOLOGIA NFC COMPRENSIVO DI APP PER SMARTPHONE Relatore: Candidato: Prof. Luca Regoli Gianmattia Gherardi Matr. N°: STA07049/L8 ANNO ACCADEMICO 2020/2021
INDICE i. Contenuti ii. Indice iii. Ringraziamenti 1. Introduzione 2. Analisi 2.1. Smart City 2.2. Descrizione del problema 3. Progettazione 3.1. Ticket NFC 3.1.1. Tecnologia NFC 3.1.1.1. Panoramica 3.1.1.2. Dispositivi NFC 3.1.1.3. Funzionamento dei tag NFC 3.1.1.4. NFC Data Exchange Protocol (NDEF) 3.1.1.5. Tag Length Value blocks (TLV blocks) 3.1.1.6. NDEF Message TLV 3.1.1.7. Terminator TLV 3.1.1.8. NDEF Record 3.1.1.9. NDEF Record Type 3.1.2. Progettazione del sistema 3.1.2.1. Use case 3.1.2.2. Logica di validazione e timbratura 3.1.2.3. Lettura e scrittura dei biglietti 3.1.2.4. Meccanismi anticontraffazione 3.2. Web API 3.2.1. Web API e servizi RESTful 3.2.1.1. Panoramica 3.2.1.2. JSON Web Token 3.2.2. Progettazione servizi per App e sistema NFC
3.2.2.1. Servizio di Autenticazione 3.2.2.2. Servizi condivisi 3.2.2.3. Servizi dedicati all’App 3.3. App per smartphone 3.3.1. Biglietti Virtuali 3.3.2. Progettazione delle funzionalità fondamentali 3.3.2.1. Registrazione utente 3.3.2.2. Login 3.3.2.3. Dashboard 3.3.2.4. Associazione Biglietto Fisico 3.3.2.5. Creazione Biglietto Virtuale 3.3.2.6. Dettaglio biglietti 3.3.2.7. Ricarica Biglietto Virtuale 3.3.2.8. Impostazioni 3.4. Database 3.4.1. Autenticazione 3.4.2. Validazione biglietti 3.4.3. Ricarica biglietti 3.4.4. Associazione e creazione biglietti 3.4.5. Schema complessivo 3.5. Visione progettuale d’insieme 4. Implementazione 4.1. Tecnologie e strumenti di sviluppo 4.1.1. Componenti Software 4.1.1.1. C# come linguaggio di programmazione back end 4.1.1.2. Xamarin per lo sviluppo di App 4.1.1.3. Visual Studio come IDE 4.1.1.4. Git come sistema di SCM e GitHub come repository 4.1.1.5. Microsoft SQL Server Express come database 4.2. Componenti Hardware
4.2.1.1. Reader NFC 4.2.1.2. Chip NFC 4.3. Creazione del database 4.3.1. Tabella SmartTicket 4.3.2. Tabella Utente (SmartTicketUser) 4.3.3. Tabella Transazione (CreditTransaction) 4.3.4. Tabella Ruolo (Role) 4.4. Libreria NFCReaderAPI 4.4.1. Classi relative ai dispositivi NFC 4.4.2. Classi relative ai messaggi NDEF 4.5. Libreria NFCTicketing 4.6. Software NFCTicketValidator 4.7. Web API (libreria NFCTicketingWebAPI) 4.7.1. Middleware SmartTicketController 4.7.2. Middleware SmartTicketAuthenticationManager 4.7.3. Middleware ExceptionHandler 4.7.4. Entity Framework Core come ORM 4.7.5. Lista degli endpoint 4.7.5.1. AuthenticateUser (authenticate) 4.7.5.2. RegisterUser (register) 4.7.5.3. AssociateTicket (associateticket) 4.7.5.4. UnbindTicket (unbindticket) 4.7.5.5. AddCredit (addcredit) 4.7.5.6. CreateVirtualTicket (createvirtualticket) 4.7.5.7. DeactivateTicket (deactivateticket) 4.7.5.8. DeleteTicket (deleteticket/{cardid}) 4.7.5.9. ValidateTicket (validate) 4.7.5.10. GetTickets (gettickets) 4.8. App per smartphone 4.8.1. Schermata di Login
4.8.2. Schermata di Registrazione 4.8.3. Dashboard 4.8.4. Associazione Biglietto Fisico 4.8.5. Creazione Biglietto Virtuale 4.8.6. Dettaglio Biglietto 4.8.6.1. Biglietto Fisico 4.8.6.2. Biglietto Virtuale 4.8.7. Ricarica Biglietto 4.8.8. Impostazioni 4.9. Esempi di utilizzo 4.9.1. Biglietto Fisico 4.9.1.1. Acquisto biglietto 4.9.1.2. Ricarica biglietto 4.9.1.3. Obliterazione 4.9.2. Biglietto Virtuale 4.9.2.1. Creazione 4.9.2.2. Ricarica credito 4.9.2.3. Validazione biglietto 5. Possibili evoluzioni applicative 5.1. Timbratura Biglietto Fisico tramite smartphone 5.2. Portafoglio di biglietti a uso famigliare 5.3. Disattivazione dei biglietti 5.4. Acquisto diretto abbonamenti 6. Conclusioni Bibliografia
ABSTRACT Con la nascita degli smartphone ci si è trovati a possedere dei veri e propri computer, dove telefonare non era altro che una delle innumerevoli funzioni, ed è iniziata la diffusione di quelle che ormai sono comunemente chiamate ‘app’. La capacità di questi dispostivi di connettersi ad Internet e di navigare quasi come se si usasse un laptop o un pc desktop, unitamente alla possibilità di creare app di carattere così profondamente diverso tra di loro, ha stravolto la nostra capacità di interagire con il mondo che ci circonda. Utilizzare il proprio smartphone per usufruire più facilmente del trasporto pubblico, grazie alla possibilità di acquistare e gestire biglietti online, non può che essere una delle logiche conseguenze di questa rivoluzione tecnologica. Il progetto descritto non è incentrato unicamente sullo sviluppo di un’app che consenta la gestione di biglietti in maniera virtuale: ancora oggi, infatti, molte persone non possiedono uno smartphone o non hanno desiderio di utilizzarlo se non per comunicare. La realizzazione comprende, quindi, una parte molto importante: la possibilità di migliorare l’obliterazione e l’acquisto di titoli di viaggio sfruttando la tecnologia NFC. Sono state analizzate le problematiche e proposti i miglioramenti che un sistema di questo tipo può apportare alla gestione dei biglietti per il trasporto pubblico. È stata ampliamente dettagliata la tecnologia NFC, utilizzata per la comunicazione tra dispositivi elettronici e fulcro del sistema di bigliettistica progettato, ed i protocolli necessari per il suo funzionamento. È stato svolto un importante lavoro di accentramento delle informazioni e della documentazione relativa a questa tecnologia.
I moduli sono stati pensati secondo una logica di riusabilità anche su diversi ambienti operativi: grande importanza è stata data alla modularità dell’architettura del software, evitando un forte cablaggio interno dei componenti e quindi impedendo al sistema di risultare troppo rigido o legato a determinati dispositivi NFC proprietari. Una particolare attenzione è stata rivolta ai sistemi di sicurezza impiegati, al fine di limitare il più possibile i tentativi di falsificazione o di riproduzione illegale dei biglietti. L’implementazione dell’intero software è stata realizzata tramite l’ausilio di tecnologie moderne e sono stati estrapolati ed esposti diversi frammenti di codice particolarmente caratterizzanti, sia relativi alla modularità dell’architettura del sistema di bigliettistica in tecnologia NFC che all’applicazione per smartphone. Sono infine state discusse alcune delle possibili evoluzioni applicative da attivare in futuro.
BIBLIOGRAFIA ISO/IEC 14443, Wikipedia, https://en.wikipedia.org/wiki/ISO/IEC_14443 Smart card application protocol data unit, Wikipedia, https://en.wikipedia.org/wiki/Smart_card_application_protocol_ data_unit ISO/IEC 7816-4, ISO-IEC, https://www.iso.org/obp/ui/#iso:std:iso-iec:7816:-4:ed- 4:v1:en NTAG213/215/216, Product Data Sheet, https://www.nxp.com/docs/en/data- sheet/NTAG213_215_216.pdf Martinelli P., Che cosa è il NFC Forum e quale è il suo ruolo, 2018, https://www.rfid-soluzioni.com/che-cosa-e-il-nfc-forum-e- quale-e-il-suo-ruolo/ Representational State Transfer, Wikipedia, https://en.wikipedia.org/wiki/Representational_state_transfer RESTful Web Services Tutorial with REST API Example, https://www.guru99.com/restful-web-services.html HTTP request methods, MDN, https://developer.mozilla.org/en- US/docs/Web/HTTP/Methods JSON Web Tokens, https://jwt.io/ Language Integrated Query (LINQ), 2017, https://docs.microsoft.com/en-us/dotnet/csharp/programming- guide/concepts/linq/ Introduction to ASP.NET Core, 2020, https://docs.microsoft.com/en-us/aspnet/core/introduction-to- aspnet-core?view=aspnetcore-5.0 Entity Framework Core, 2020, https://docs.microsoft.com/en- us/ef/core/ Xamarin, https://dotnet.microsoft.com/apps/xamarin
XAML overview (WPF .NET), 2021, https://docs.microsoft.com/en- us/dotnet/desktop/wpf/fundamentals/xaml?view=netdesktop- 5.0 The Model-View-ViewModel Pattern, 2017, https://docs.microsoft.com/en-us/xamarin/xamarin- forms/enterprise-application-patterns/mvvm C# documentation, https://docs.microsoft.com/en- us/dotnet/csharp/ Welcome to the Visual Studio IDE, 2021, https://docs.microsoft.com/en-us/visualstudio/get- started/visual-studio-ide?view=vs-2019 IntelliSense in Visual Studio, 2018, https://docs.microsoft.com/en-us/visualstudio/ide/using- intellisense?view=vs-2019 PowerShell Documentation, https://docs.microsoft.com/en- us/powershell/ What is NuGet?, https://www.nuget.org/ Emulatore di Visual Studio per Android, https://visualstudio.microsoft.com/it/vs/msft-android-emulator/ ACR122U USB NFC Reader, https://www.acs.com.hk/en/products/3/acr122u-usb-nfc- reader/ git, https://git-scm.com/ GitHub, Wikipedia, https://en.wikipedia.org/wiki/GitHub SQL Server Express, Wikipedia, https://en.wikipedia.org/wiki/SQL_Server_Express Factory method pattern, Wikipedia, https://en.wikipedia.org/wiki/Factory_method_pattern
Dependency injection, Wikipedia, https://en.wikipedia.org/wiki/Dependency_injection Create web APIs with ASP.NET Core, https://docs.microsoft.com/en-us/aspnet/core/web- api/?view=aspnetcore-5.0 Middleware di ASP.NET Core, https://docs.microsoft.com/it- it/aspnet/core/fundamentals/middleware/?view=aspnetcore-5.0 Swagger, https://swagger.io/ Advanced Card Systems Ltd. Card and Reader Technologies, ACR122U USB NFC Reader - Application Programming Interface V2.04 NXP Semiconductors, UM0701-02 PN532 User Manual
Puoi anche leggere