Some history developing applications, starting from OOP and three tier. The limitations, and some mistakes. Prepare moving to new architectures for Cloud Computing...in part 2
3. Cos’è una applicazione?
Per l’utente un «monolito»
Soluzione Applicativa
«vede una Interfaccia utente»
Un’icona da clikkare
Un programma da eseguire
Un file .exe sul disco
Utente
4. Programmazione Orientata agli Oggetti
Modellare la realtà, ma anche no
È un paradigma, alla pari della programmazione imperativa e della programmazione
funzionale
È una tecnologia, non una filosofia
Attenzione i linguaggi:
Statically typed, strongly typed, class based (Java, C#)
Class-based (Ruby, Python)
Non Class-based (Javascript)
5. Cos’è una applicazione?
Per la OOP…
È un insieme di oggetti
…tra l’altro, non si può più dire «è un insieme di classi»
7. Design Patterns
per i tiers dell’applicazione
Come scrivo gli oggetti?
Alla fine li posso classificare in alcune
categorie
Derivano dall’esperienza di scrive
«oggetti»
8. Entità
Cos’è una entità?
Rapprentazione (astrazione) di qualcosa di reale
Non è detto che sia concreto neppure nel mondo reale (un metodo, una procedura, ...)
Esempi
Ordine
Bolla
Fattura
Articolo
Utente
Caratterizzate da
Stato: insieme delle sue proprietà
Interazione
Con le entità «circostanti»
10. Three Tier Contracts
Contratto: qualcosa per cui due si
mettono d’accordo
Due layer comunicano: si accordano su
come comunicare.
Tipicamente uno definisce una
funzionalità e uno la consume
11. Cos’è una interfaccia
Definisce in Object Orientation COSA fare, ma non il come
Es.
Persistenza di entità
GetAll
GetSingle
Update
Delete
13. A single model cannot solve every
problem
A single model cannot be appropriate for reporting, searching, and transactional
behaviors…
14. Anemic model
No actions on object
Only Values (and accessor methods)
A persistence-focused approach
15. Il database
non è un buon punto di partenza
Non si deve scegliere a priori
Come qualsiasi altra tecnologia, bisogna valutare quali funzionalità mette a disposizione
Altrimenti diventa un vincolo di progetto
16. Tecnologie di accesso ai dati
SQL (Specifico)
SQL (standard)
xdbc
ORM
NoSql
Web Services
REST