SlideShare a Scribd company logo
1 of 22
Modelli applicativi
per il Cloud Compunting/#1
Edizione 2014
Marco Parenzan
MANUTENIBILITÀ VS.
PERFORMANCES
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
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)
Cos’è una applicazione?
Per la OOP…

 È un insieme di oggetti
 …tra l’altro, non si può più dire «è un insieme di classi»
Three Tier
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»
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»
Three Tier + 1
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
Cos’è una interfaccia

 Definisce in Object Orientation COSA fare, ma non il come

 Es.
 Persistenza di entità
 GetAll
 GetSingle
 Update
 Delete
Modelli applicativi
per il Cloud Compunting/#1
Criticità
A single model cannot solve every
problem

 A single model cannot be appropriate for reporting, searching, and transactional
behaviors…
Anemic model

 No actions on object
 Only Values (and accessor methods)
 A persistence-focused approach
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
Tecnologie di accesso ai dati

 SQL (Specifico)
 SQL (standard)
 xdbc
 ORM
 NoSql

 Web Services
 REST
Modelli applicativi
per il Cloud Compunting/#1
Un assaggio di futuro
 A method that returns data should not
change the state of the object itself
 A method that change the state should
not return any information
 “Every method should either be a command that performs an action, or a query that
returns data to the caller, but not both.”
Different models for different needs

Write Model

Read Model
Modelli applicativi
per il Cloud Compunting/#1
Edizione 2014
Marco Parenzan

More Related Content

Similar to Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014

Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1Christian Nastasi
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object OrientedStefano Fago
 
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming LanguagePasquale Paola
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignLuca Milan
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptLuca Pagliaro
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
 
Introduction to C#
Introduction to C#Introduction to C#
Introduction to C#Guido Magrin
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Modellazione UML per il WEB: Approccio di Conallen
Modellazione UML per il WEB: Approccio di ConallenModellazione UML per il WEB: Approccio di Conallen
Modellazione UML per il WEB: Approccio di ConallenHenry Muccini
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design PatternRiccardo Cardin
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 

Similar to Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014 (20)

ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object Oriented
 
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming Language
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven Design
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScript
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
Introduction to C#
Introduction to C#Introduction to C#
Introduction to C#
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Modellazione UML per il WEB: Approccio di Conallen
Modellazione UML per il WEB: Approccio di ConallenModellazione UML per il WEB: Approccio di Conallen
Modellazione UML per il WEB: Approccio di Conallen
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design Pattern
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 

More from Marco Parenzan

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerMarco Parenzan
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxMarco Parenzan
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Marco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .netMarco Parenzan
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and AzureMarco Parenzan
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralMarco Parenzan
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogameMarco Parenzan
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Marco Parenzan
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETMarco Parenzan
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsMarco Parenzan
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetMarco Parenzan
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .netMarco Parenzan
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .netMarco Parenzan
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicMarco Parenzan
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTMarco Parenzan
 

More from Marco Parenzan (20)

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineer
 
Azure Hybrid @ Home
Azure Hybrid @ HomeAzure Hybrid @ Home
Azure Hybrid @ Home
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT Solutions
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and Azure
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT Central
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NET
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data Solutions
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnet
 
Azure IoT Central
Azure IoT CentralAzure IoT Central
Azure IoT Central
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .net
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .net
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETT
 

Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014

  • 1. Modelli applicativi per il Cloud Compunting/#1 Edizione 2014 Marco Parenzan
  • 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
  • 12. Modelli applicativi per il Cloud Compunting/#1 Criticità
  • 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
  • 17. Modelli applicativi per il Cloud Compunting/#1 Un assaggio di futuro
  • 18.  A method that returns data should not change the state of the object itself
  • 19.  A method that change the state should not return any information
  • 20.  “Every method should either be a command that performs an action, or a query that returns data to the caller, but not both.”
  • 21. Different models for different needs Write Model Read Model
  • 22. Modelli applicativi per il Cloud Compunting/#1 Edizione 2014 Marco Parenzan