Never Mind the Bollocks: here's the Domain Driven DesignAndrea Saltarello
La lettura del Blue Book può generare reazioni che vanno dal "Cargo cult" (a.k.a. "non avrai altro Modello all’infuori di me") a "’sta roba non mi serve: io faccio gestionali, non applicazioni che lanciano i razzi sulla Luna".
Previa una attualizzazione dei concetti del Blue Book, che ha ormai compiuto 10 anni, in questa sessione affronteremo leggende metropolitane e falsi miti e implementeremo DDD mostrando poche slide e tanto codice.
Con la nascita di .NET Core l'utilizzo del framework .NET è sbarcato in modo ufficiale anche su altre piattaforme.
Scrivere applicazioni moderne con SDK e tool nativi su altre piattaforme è diventato la normalità.
Lo vedremo realizzando un semplice applicazione .NET Core su Linux ed analizzando varie possibilità di deploy su altre piattaforme Linux based con il minimo sforzo e senza limitazioni.
Applying DDD and CQRS can not only make the resulting design of our system simpler and more effective but, freeing us from the burdenof the “one model fits all” approach, also allows architects to adopt different strategies when it comes to business logic modeling. Though lot has been written about DDD and CQRS, missing working code publicly available seems to be the elephant in the room: in this talk, we’ll find out how to implement the “Command side of the Force” by means of a proper Domain Model and getting to the point of switching from an entity based modeling to an event based one.
The Fine Art of Time Travelling: implementing Event SourcingAndrea Saltarello
If there is a common practice in architecting software systems, it is to have them store the last known state of business entities in a relational database: this practice trades the easiness of implementation with the cost of losing the history of such entities. Event Sourcing provides a pivotal solution to this problem, giving systems the capability of restoring the state they had at any given point in time. Furthermore, injecting mock-up events and having them replayed by the business logic allows for an easy implementation of simulations and “what if” scenarios.
Ask The Expert - Typescript: A stitch in time saves nineGianluca Carucci
This document discusses TypeScript design goals and features. It begins by explaining that TypeScript aims to use JavaScript behavior and programmer intentions to guide its design rather than mimicking existing languages. It then lists goals of aligning with ECMAScript proposals and using a consistent, fully erasable structural type system. The document provides examples of TypeScript types, unions, intersections, and discriminated unions. It also discusses using functional programming with algebraic data types, functors, and monads to implement validation in TypeScript. Homework suggestions are provided at the end.
Never Mind the Bollocks: here's the Domain Driven DesignAndrea Saltarello
La lettura del Blue Book può generare reazioni che vanno dal "Cargo cult" (a.k.a. "non avrai altro Modello all’infuori di me") a "’sta roba non mi serve: io faccio gestionali, non applicazioni che lanciano i razzi sulla Luna".
Previa una attualizzazione dei concetti del Blue Book, che ha ormai compiuto 10 anni, in questa sessione affronteremo leggende metropolitane e falsi miti e implementeremo DDD mostrando poche slide e tanto codice.
Con la nascita di .NET Core l'utilizzo del framework .NET è sbarcato in modo ufficiale anche su altre piattaforme.
Scrivere applicazioni moderne con SDK e tool nativi su altre piattaforme è diventato la normalità.
Lo vedremo realizzando un semplice applicazione .NET Core su Linux ed analizzando varie possibilità di deploy su altre piattaforme Linux based con il minimo sforzo e senza limitazioni.
Applying DDD and CQRS can not only make the resulting design of our system simpler and more effective but, freeing us from the burdenof the “one model fits all” approach, also allows architects to adopt different strategies when it comes to business logic modeling. Though lot has been written about DDD and CQRS, missing working code publicly available seems to be the elephant in the room: in this talk, we’ll find out how to implement the “Command side of the Force” by means of a proper Domain Model and getting to the point of switching from an entity based modeling to an event based one.
The Fine Art of Time Travelling: implementing Event SourcingAndrea Saltarello
If there is a common practice in architecting software systems, it is to have them store the last known state of business entities in a relational database: this practice trades the easiness of implementation with the cost of losing the history of such entities. Event Sourcing provides a pivotal solution to this problem, giving systems the capability of restoring the state they had at any given point in time. Furthermore, injecting mock-up events and having them replayed by the business logic allows for an easy implementation of simulations and “what if” scenarios.
Ask The Expert - Typescript: A stitch in time saves nineGianluca Carucci
This document discusses TypeScript design goals and features. It begins by explaining that TypeScript aims to use JavaScript behavior and programmer intentions to guide its design rather than mimicking existing languages. It then lists goals of aligning with ECMAScript proposals and using a consistent, fully erasable structural type system. The document provides examples of TypeScript types, unions, intersections, and discriminated unions. It also discusses using functional programming with algebraic data types, functors, and monads to implement validation in TypeScript. Homework suggestions are provided at the end.
UGIdotNET Meetup - Andrea Saltarello - Codemotion Milan 2016Codemotion
In questo meetup presenteremo innanzitutto la community UGIdotNET, il primo User Group Italiano .NET, che ha raggiunto i 15 anni di vita. In seguito, ci dedicheremo a 2 sessioni tecniche: "The Fine Art of Time Travelling" (Andrea Saltarello): un'ora per parlare di CQRS ed Event Sourcing evitando di perderci nelle slide e mostrando invece codice. "Un "actor" (model) per amico" (Alessandro Melchiori): In questa sessione, dopo una introduzione teorica sull'Actor Model, analizzeremo 2 diverse implementazioni disponibili per l'ecosistema .Net: i Reliable Actors di Azure Service Fabric e Akka.NET
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023AndreaStagi3
Slide del MeetUp di Angular Roma dove Cristian Borelli e Andrea Stagi ci hanno raccontato le evoluzioni fatte sul Design Kit e Bootstrap Italia: dalle nuove tecnologie ai temi dell'accessibilità. L’occasione è stata utile per presentare i lavori per il nuovo Design Kit Angular che andrà ad arricchire le componenti Bootstrap Italia.
Presentation for Opensource Day 2012. The presentation introduce the history of free software and open source software, with useful links to resources about this two movements.
Mercoledì 25 luglio, abbiamo avuto il piacere di ospitare alcuni speaker delle community Data Science e Python.
PROGRAMMA
Data Science - Michele Vitali
Sentiment Analysis & Machine Learning - Alessandro Cucci
Git for Data Science - Luca Fontanili
Introduction to Data Visualization - Sergey Antopolsky - (in English)
This document discusses implementing event sourcing in .NET. It provides an overview of event sourcing and CQRS, noting that events capture past occurrences that affect the domain. A demo is shown of a sample event sourcing application using NServiceBus for messaging. The document recommends buying rather than building event store and messaging toolkit components, and lists options for each including SQL Server, MongoDB, RavenDB, MSMQ, NEventStore, and NServiceBus.
Learn how to design a web solution that exploits the ASP.NET stack: in this talk we’ll find out how to set up an effective, idiomatic design that take advantage of both “out of the box” tools (e.g. MVC, Entity Framework) and bleeding edge, third party ones. Needing a SPA? We’ll understand how to take advantage of existing toolkits. Responsive design? Let’s talk Bootstrap looking at how it provides a useful and highly customizable taxonomy for UI elements. Having troubles implementing an efficient data access layer due to a lot of business rules? We’ll learn how to use LINQ as a mean to decompose those rules in simpler ones that can be composed in a flexible and efficient way. Are you concerned about performance and scalability issues? We’ll see how to implement CQRS in order to take advantage of ad hoc data models and introduce a service bus so to decouple front-end systems from back-end ones.
More Related Content
Similar to Da Rotor a .NET Core ed indietro: Microsoft <3 Open Source
UGIdotNET Meetup - Andrea Saltarello - Codemotion Milan 2016Codemotion
In questo meetup presenteremo innanzitutto la community UGIdotNET, il primo User Group Italiano .NET, che ha raggiunto i 15 anni di vita. In seguito, ci dedicheremo a 2 sessioni tecniche: "The Fine Art of Time Travelling" (Andrea Saltarello): un'ora per parlare di CQRS ed Event Sourcing evitando di perderci nelle slide e mostrando invece codice. "Un "actor" (model) per amico" (Alessandro Melchiori): In questa sessione, dopo una introduzione teorica sull'Actor Model, analizzeremo 2 diverse implementazioni disponibili per l'ecosistema .Net: i Reliable Actors di Azure Service Fabric e Akka.NET
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023AndreaStagi3
Slide del MeetUp di Angular Roma dove Cristian Borelli e Andrea Stagi ci hanno raccontato le evoluzioni fatte sul Design Kit e Bootstrap Italia: dalle nuove tecnologie ai temi dell'accessibilità. L’occasione è stata utile per presentare i lavori per il nuovo Design Kit Angular che andrà ad arricchire le componenti Bootstrap Italia.
Presentation for Opensource Day 2012. The presentation introduce the history of free software and open source software, with useful links to resources about this two movements.
Mercoledì 25 luglio, abbiamo avuto il piacere di ospitare alcuni speaker delle community Data Science e Python.
PROGRAMMA
Data Science - Michele Vitali
Sentiment Analysis & Machine Learning - Alessandro Cucci
Git for Data Science - Luca Fontanili
Introduction to Data Visualization - Sergey Antopolsky - (in English)
This document discusses implementing event sourcing in .NET. It provides an overview of event sourcing and CQRS, noting that events capture past occurrences that affect the domain. A demo is shown of a sample event sourcing application using NServiceBus for messaging. The document recommends buying rather than building event store and messaging toolkit components, and lists options for each including SQL Server, MongoDB, RavenDB, MSMQ, NEventStore, and NServiceBus.
Learn how to design a web solution that exploits the ASP.NET stack: in this talk we’ll find out how to set up an effective, idiomatic design that take advantage of both “out of the box” tools (e.g. MVC, Entity Framework) and bleeding edge, third party ones. Needing a SPA? We’ll understand how to take advantage of existing toolkits. Responsive design? Let’s talk Bootstrap looking at how it provides a useful and highly customizable taxonomy for UI elements. Having troubles implementing an efficient data access layer due to a lot of business rules? We’ll learn how to use LINQ as a mean to decompose those rules in simpler ones that can be composed in a flexible and efficient way. Are you concerned about performance and scalability issues? We’ll see how to implement CQRS in order to take advantage of ad hoc data models and introduce a service bus so to decouple front-end systems from back-end ones.
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
A prima vista, MVC “is all about the presentation layer”. In realtà, per trarre il massimo giovamento da questo toolkit è necessario progettare l’intera soluzione utilizzando criteri ad hoc.
Code Contracts and Generics: implementing a LINQ-enabled RepositoryAndrea Saltarello
In questa sessione vedremo come implementare il Repository pattern in modo da creare un Data Access Layer interrogabile mediante query LINQ, delegando l'effettiva esecuzione delle stesse ad O/RM quali Entity Framework e/o NHibernate.
In questa sessione vedremo come realizzare un Data Access Layer basato su una implementazione del Repository pattern ed in grado di essere interrogabile mediante query LINQ, eventualmente delegate ad O/RM quali Entity Framework e/o NHibernate. Vedremo inoltre come fare utilizzo dei Code Contracts del FX4 per specificare "una tantum" le regole comuni a tutti i repository di un Domain Model.
Layered Expression Trees: una terza via (idiomatica) verso il DDDAndrea Saltarello
Abbiamo il nostro splendido Domain Model, e possiamo passare la vita a definire DTO per usarlo in modo “sostenibile”. Oppure possiamo metterlo (un po’) in disparte ed adottare CQRS, ammesso che non ci venga mai da dire: “che spreco”. Oppure possiamo optare per una terza via idiomatica: Layered Expression Trees. Parliamone.
The document discusses the history and concepts behind object-relational mapping (ORM) and ORMs. It begins by describing the mismatch between the object-oriented and relational models. It then covers early work on object-relational mapping to bridge this gap. This led to the development of ORM tools that allow defining object-relational mappings and querying object graphs that are persisted to databases. Key concepts discussed include object identity, object shadows, query objects, repositories, partitioning query results, the unit of work pattern, and identity maps. Code examples demonstrate these concepts using NHibernate and LINQ.
Da Rotor a .NET Core ed indietro: Microsoft <3 Open Source
1. 30 NOVEMBRE
2016
Da Rotor a .NET Core ed
indietro:
Microsoft <3 Open Source
Andrea Saltarello, Presidente UGIdotNET
https://twitter.com/andysal74
2. Cos’è “UGIdotNET”?
TL;DR; Siamo una associazione no-profit, fondata il 20 luglio 2001, con 17253
soci ad oggi e dedicata ad ISO 23271.
UGIdotNET è il primo User Group Italiano dedicato a Microsoft .NET
Framework ed alle Common Language Infrastructure (ISO/IEC 23271). E'
una associazione indipendente e no-profit fondata e interamente gestita dai
soci aderenti, accomunati dalle reciproche conoscenze ed esperienze ma
anche dal proprio desiderio di costante aggiornamento ed approfondimento
del Framework .NET.
UGIdotNET vuole rispondere a questa esigenza proponendo gruppi di
discussione e meeting ricorrenti nei quali si condividono idee ed esperienze,
oltre ad agevolare l'incontro di professionisti del settore.
3. Cosa fa UGIdotNET?
In 15 anni:
• Abbiamo organizzato 36 seminari gratuiti (l’ultimo settimana scorsa)
• Abbiamo co-organizzato 18 eventi x-community
• Abbiamo capito che gli eventi sono un’ottima scusa per andare a cena
insieme
Nel prox anno abbiamo in pipeline 7 eventi, il primo dei quali si svolgerà il
20/1/2017
[ http://www.ugidotnet.org/eventi/archivio/ ]
4. Perché sono qui? (1/2)
Pensavo di essere qui in quanto da anni «advocate» dell’open source e
contributor dei progetti:
• Merp (GPL, scrivo codice dal 2013)
• MementoFX (LGPL, scrivo codice dal 2016)
• MvcMate (Ms-PL, scrivo codice dal 2013)
• NHibernate (1° al mondo ad aver finanziato il progetto di tasca propria)
• NSK (GPL, scrivo codice dal 2004)
5. Perché sono qui? (2/2)
In realtà, perché una persona di Microsoft Italia
mi ha detto:
“Tu hai memoria storica (==sei vecchio) e ci
piacerebbe parlassi del rapporto di Microsoft visto
che hai vissuto di persona i cambiamenti (==tu che
quando ti pagavamo per fare lo speaker ai ns. eventi
ti presentavi col Mac e ti incazzavi non la prendevi
bene se ti chiedevamo di usare un computer
differente)”
8. Io non uso tecnologie proprietarie (cit.)
• 8/2000: HP, Intel e Microsoft iniziano a lavorare congiuntamente alle
specifiche di CLI (Common Language Infrastructure)
• 10/2001: le specifiche CLI diventano lo standard ECMA 335
• 4/2003: le specifiche CLI diventano lo standard ISO 23271
• 19/7/2001: nasce Mono, prima implementazione FOSS di ISO/IEC
23271
• 30/4/2004: Mono 1.0
• 27/6/2016: rilascio di .NET Core sotto licenza MIT (solo il 40% del
codice è contribuito da Microsoft)
[ https://en.wikipedia.org/wiki/Common_Language_Infrastructure ]
9. Microsoft “vs.” Open Source
• 27/6/2016: rilascio di .NET Core sotto licenza MIT
• 28/3/2012: rilascio dello stack web (ASP.NET, WebAPI, EF) sotto licenza
MS-PL (codice)
• 3/10/2007: rilascio di .NET Framework sotto licenza MS-RSL
• 1/5/2006: rilascio del AJAX Control Toolkit sotto licenza MS-PL (codice)
• 6/2004: rilascio di Windows sotto licenza Shared Source
• 5/4/2004: rilascio di WiX sotto licenza CPL
• 3/2002: rilascio di Rotor per FreeBSD, OS X 10.2 e Windows XP (licenza
non commerciale, codice)
• 2001: lancio della iniziativa Shared Source