SlideShare une entreprise Scribd logo
1  sur  20
Orchard 2
…and why you should care
Orchard 1
▪ Content Management System
▪ Inspired from Drupal and WordPress
▪ Super-extensible
▪ Not designed for anything else than web CMS
▪ Doesn’t integrate well into other apps
▪ Bootstrapped by black magic incantations
Orchard 1 subsystems
▪ Multi-tenancy + Dependency Injection
▪ Module system
▪ Event bus
▪ Themes & UI composition
▪ Runtime content-type system
▪ Extensible CLI and recipes
▪ Setup
▪ Warmup
▪ Users & Roles, Permissions
▪ Background tasks
▪ Workflow
▪ Media management
▪ Localization
▪ Cache
▪ Data access, database migrations
▪ Tokens
Orchard 2
▪ Rewrite
▪ Built on ASP.NET Core
▪ Designed to integrate into other applications, in parts or as a whole
▪ Even less coupling
▪ Same extreme extensibility
▪ Embraces document databases instead of relational
▪ 10x Orchard 1’s throughput
DEMO
Bootstrapping an Orchard 2 web site
Multi-tenancy
▪ Improves site density
▪ Handles tenant-specific routes
▪ Scopes dependency injection and enabled features to the tenant
Module system
▪ Factors applications into single-responsibility subsystems
▪ Exposes services
▪ Dynamic compilation
▪ Local routing
▪ Features can be enabled and disabled
Event bus
▪ Decouples services
▪ Program against interfaces
▪ Interfaces are resolved by name
▪ Dynamic service resolution
▪ Really exchanges messages
▪ The base of Orchard extensibility
Themes and UI composition
▪ Shapes: dynamic view models
▪ Templates: views that render a shape
▪ Runtime template resolution
▪ Powerful system of alternate templates for specialized template overrides
▪ Placement: cooperative UI composition
Runtime content-type system
▪ Runtime types driven from code or metadata
▪ Types are composed from single-responsibility parts:
a blog post is made of a title, a slug/URL, a body, tags, and comments
▪ Any type can be modified
CLI & recipes
▪ Application command-line automation
▪ Thin shell
▪ Modules expose commands
▪ Model binding for the command-line
▪ Recipes: files containing custom commands (enable features, create content-
types, etc.), and import data
Setup
▪ Takes over requests for un-configured
shells
▪ Ask as little as possible up-front:
database engine, admin credentials, setup
recipe
▪ Defer as much as possible, make
decisions reversible
Warmup
▪ Serve statically-rendered pages while the app is warming up
▪ Pages that don’t have a pre-rendered version on disk will have to wait
▪ Orchard’s feature inspired the equivalent IIS feature
Users, roles, and permissions
▪ Pluggable authentication
▪ Decoupled users and roles
▪ Users are extensible content-types
▪ Modules expose permissions
▪ Permissions apply to roles
▪ Permissions are additive: no deny
▪ Single LoC permission checking
Background tasks
▪ HTTP favors fast and stateless operations
▪ Cleaning up, sending emails, long-running computations, all are best done in the
background
▪ Ideally, you’d have a separate service process and a message queue
▪ Next best thing is Orchard’s background task infrastructure
Workflow
▪ Makes processes pluggable and configurable
▪ An activity can be triggered by the output of another
▪ Manages processes that last for more than the request
Localization
▪ Standard po files
▪ All messages enclosed in a T():
@T(“This message needs to be localized.”)
msgctxt "~/Modules/Orchard.MediaPicker/Views/Fields/MediaGallery.cshtml"
msgid "No media. "
msgstr "Aucun média"
Data access & migrations
▪ Schema migrations (v1)
▪ Separation of storage and querying
▪ Pluggable storage providers
▪ Query on index
▪ Map/reduce-like pattern
Tokens
▪ Extensible contextual variables
▪ string interpolation
<a
href="mailto:{FormSubmission.Field:Email}">{FormSubmission.Field:FirstName}
{FormSubmission.Field:LastName}</a>
Conclusion
▪ Many interesting subsystems that are not tied to content management
▪ Interesting architecture
▪ Largest OSS application built on .NET Core

Contenu connexe

Tendances

.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnetRick van den Bosch
 
Migrating .NET Application to .NET Core
Migrating .NET Application to .NET CoreMigrating .NET Application to .NET Core
Migrating .NET Application to .NET CoreBaris Ceviz
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET PlatformAlex Thissen
 
A Whirldwind Tour of ASP.NET 5
A Whirldwind Tour of ASP.NET 5A Whirldwind Tour of ASP.NET 5
A Whirldwind Tour of ASP.NET 5Steven Smith
 
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Arrow Consulting & Design
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardAlex Thissen
 
Introduction to .NET Core & ASP.NET Core MVC
Introduction to .NET Core & ASP.NET Core MVCIntroduction to .NET Core & ASP.NET Core MVC
Introduction to .NET Core & ASP.NET Core MVCSaineshwar bageri
 
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Mark Lechtermann
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsKen Cenerelli
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET CoreAvanade Nederland
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
.Net platform .Net core fundamentals
.Net platform .Net core  fundamentals.Net platform .Net core  fundamentals
.Net platform .Net core fundamentalsHosein Mansouri
 
Deploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesDeploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesPratik Khasnabis
 
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10Vagrant + SaltStack + Django - Ararat Poghosyan - DM10
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10Ararat Poghosyan
 

Tendances (20)

.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet
 
Migrating .NET Application to .NET Core
Migrating .NET Application to .NET CoreMigrating .NET Application to .NET Core
Migrating .NET Application to .NET Core
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
 
A Whirldwind Tour of ASP.NET 5
A Whirldwind Tour of ASP.NET 5A Whirldwind Tour of ASP.NET 5
A Whirldwind Tour of ASP.NET 5
 
.Net standard 2.0
.Net standard 2.0.Net standard 2.0
.Net standard 2.0
 
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
Whats new in .net core 3
Whats new in .net core 3Whats new in .net core 3
Whats new in .net core 3
 
ASP.NET Core 1.0 Overview
ASP.NET Core 1.0 OverviewASP.NET Core 1.0 Overview
ASP.NET Core 1.0 Overview
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
Introduction to .NET Core & ASP.NET Core MVC
Introduction to .NET Core & ASP.NET Core MVCIntroduction to .NET Core & ASP.NET Core MVC
Introduction to .NET Core & ASP.NET Core MVC
 
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0
 
introduction to Lamp Stack
introduction to Lamp Stackintroduction to Lamp Stack
introduction to Lamp Stack
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET Core
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
.Net platform .Net core fundamentals
.Net platform .Net core  fundamentals.Net platform .Net core  fundamentals
.Net platform .Net core fundamentals
 
C#: Past, Present and Future
C#: Past, Present and FutureC#: Past, Present and Future
C#: Past, Present and Future
 
Deploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesDeploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM Templates
 
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10Vagrant + SaltStack + Django - Ararat Poghosyan - DM10
Vagrant + SaltStack + Django - Ararat Poghosyan - DM10
 

Similaire à Orchard 2... and why you should care

April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesHoward Greenberg
 
Database failover from client perspective
Database failover from client perspectiveDatabase failover from client perspective
Database failover from client perspectivePriit Piipuu
 
Cause 2013: A Flexible Approach to Creating an Enterprise Directory
Cause 2013: A Flexible Approach to Creating an Enterprise DirectoryCause 2013: A Flexible Approach to Creating an Enterprise Directory
Cause 2013: A Flexible Approach to Creating an Enterprise Directoryrwgorrel
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
Innovation in the Data Warehouse - StampedeCon 2016
Innovation in the Data Warehouse - StampedeCon 2016Innovation in the Data Warehouse - StampedeCon 2016
Innovation in the Data Warehouse - StampedeCon 2016StampedeCon
 
Infrastructure for DBAs
Infrastructure for DBAsInfrastructure for DBAs
Infrastructure for DBAsPeterShore4
 
How Serverless Changes DevOps
How Serverless Changes DevOpsHow Serverless Changes DevOps
How Serverless Changes DevOpsRichard Donkin
 
(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP PerformanceBIOVIA
 
New Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceNew Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceCorrelsense
 
Stateful Interaction In Serverless Architecture With Redis: Pyounguk Cho
Stateful Interaction In Serverless Architecture With Redis: Pyounguk ChoStateful Interaction In Serverless Architecture With Redis: Pyounguk Cho
Stateful Interaction In Serverless Architecture With Redis: Pyounguk ChoRedis Labs
 
StoryCode Tech Immersion 1
StoryCode Tech Immersion 1StoryCode Tech Immersion 1
StoryCode Tech Immersion 1storycode
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i Zend by Rogue Wave Software
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014Kathy Brown
 
Deploying Full BI Platforms to Oracle Cloud
Deploying Full BI Platforms to Oracle CloudDeploying Full BI Platforms to Oracle Cloud
Deploying Full BI Platforms to Oracle CloudMark Rittman
 

Similaire à Orchard 2... and why you should care (20)

L15 Organising Domain Layer
L15 Organising Domain LayerL15 Organising Domain Layer
L15 Organising Domain Layer
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
 
Database failover from client perspective
Database failover from client perspectiveDatabase failover from client perspective
Database failover from client perspective
 
Cause 2013: A Flexible Approach to Creating an Enterprise Directory
Cause 2013: A Flexible Approach to Creating an Enterprise DirectoryCause 2013: A Flexible Approach to Creating an Enterprise Directory
Cause 2013: A Flexible Approach to Creating an Enterprise Directory
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
 
Innovation in the Data Warehouse - StampedeCon 2016
Innovation in the Data Warehouse - StampedeCon 2016Innovation in the Data Warehouse - StampedeCon 2016
Innovation in the Data Warehouse - StampedeCon 2016
 
SharePoint 2016 Upgrade Planning
SharePoint 2016 Upgrade PlanningSharePoint 2016 Upgrade Planning
SharePoint 2016 Upgrade Planning
 
Infrastructure for DBAs
Infrastructure for DBAsInfrastructure for DBAs
Infrastructure for DBAs
 
How Serverless Changes DevOps
How Serverless Changes DevOpsHow Serverless Changes DevOps
How Serverless Changes DevOps
 
(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance
 
New Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System PerformanceNew Approaches to Faster Oracle Forms System Performance
New Approaches to Faster Oracle Forms System Performance
 
Stateful Interaction In Serverless Architecture With Redis: Pyounguk Cho
Stateful Interaction In Serverless Architecture With Redis: Pyounguk ChoStateful Interaction In Serverless Architecture With Redis: Pyounguk Cho
Stateful Interaction In Serverless Architecture With Redis: Pyounguk Cho
 
StoryCode Tech Immersion 1
StoryCode Tech Immersion 1StoryCode Tech Immersion 1
StoryCode Tech Immersion 1
 
L20 Scalability
L20 ScalabilityL20 Scalability
L20 Scalability
 
SharePoint 2013 - What's New
SharePoint 2013 - What's NewSharePoint 2013 - What's New
SharePoint 2013 - What's New
 
PaaS with Java
PaaS with JavaPaaS with Java
PaaS with Java
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
 
Deploying Full BI Platforms to Oracle Cloud
Deploying Full BI Platforms to Oracle CloudDeploying Full BI Platforms to Oracle Cloud
Deploying Full BI Platforms to Oracle Cloud
 

Plus de Bertrand Le Roy

.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#Bertrand Le Roy
 
Orchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the futureOrchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the futureBertrand Le Roy
 
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013Bertrand Le Roy
 
Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013Bertrand Le Roy
 
Orchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 KeynoteOrchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 KeynoteBertrand Le Roy
 

Plus de Bertrand Le Roy (7)

Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
C# Today and Tomorrow
C# Today and TomorrowC# Today and Tomorrow
C# Today and Tomorrow
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
 
Orchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the futureOrchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the future
 
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
 
Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013
 
Orchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 KeynoteOrchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 Keynote
 

Dernier

22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf203318pmpc
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...soginsider
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projectssmsksolar
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...SUHANI PANDEY
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxJuliansyahHarahap1
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VDineshKumar4165
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptDineshKumar4165
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationBhangaleSonal
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 

Dernier (20)

22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 

Orchard 2... and why you should care

  • 1. Orchard 2 …and why you should care
  • 2. Orchard 1 ▪ Content Management System ▪ Inspired from Drupal and WordPress ▪ Super-extensible ▪ Not designed for anything else than web CMS ▪ Doesn’t integrate well into other apps ▪ Bootstrapped by black magic incantations
  • 3. Orchard 1 subsystems ▪ Multi-tenancy + Dependency Injection ▪ Module system ▪ Event bus ▪ Themes & UI composition ▪ Runtime content-type system ▪ Extensible CLI and recipes ▪ Setup ▪ Warmup ▪ Users & Roles, Permissions ▪ Background tasks ▪ Workflow ▪ Media management ▪ Localization ▪ Cache ▪ Data access, database migrations ▪ Tokens
  • 4. Orchard 2 ▪ Rewrite ▪ Built on ASP.NET Core ▪ Designed to integrate into other applications, in parts or as a whole ▪ Even less coupling ▪ Same extreme extensibility ▪ Embraces document databases instead of relational ▪ 10x Orchard 1’s throughput
  • 6. Multi-tenancy ▪ Improves site density ▪ Handles tenant-specific routes ▪ Scopes dependency injection and enabled features to the tenant
  • 7. Module system ▪ Factors applications into single-responsibility subsystems ▪ Exposes services ▪ Dynamic compilation ▪ Local routing ▪ Features can be enabled and disabled
  • 8. Event bus ▪ Decouples services ▪ Program against interfaces ▪ Interfaces are resolved by name ▪ Dynamic service resolution ▪ Really exchanges messages ▪ The base of Orchard extensibility
  • 9. Themes and UI composition ▪ Shapes: dynamic view models ▪ Templates: views that render a shape ▪ Runtime template resolution ▪ Powerful system of alternate templates for specialized template overrides ▪ Placement: cooperative UI composition
  • 10. Runtime content-type system ▪ Runtime types driven from code or metadata ▪ Types are composed from single-responsibility parts: a blog post is made of a title, a slug/URL, a body, tags, and comments ▪ Any type can be modified
  • 11. CLI & recipes ▪ Application command-line automation ▪ Thin shell ▪ Modules expose commands ▪ Model binding for the command-line ▪ Recipes: files containing custom commands (enable features, create content- types, etc.), and import data
  • 12. Setup ▪ Takes over requests for un-configured shells ▪ Ask as little as possible up-front: database engine, admin credentials, setup recipe ▪ Defer as much as possible, make decisions reversible
  • 13. Warmup ▪ Serve statically-rendered pages while the app is warming up ▪ Pages that don’t have a pre-rendered version on disk will have to wait ▪ Orchard’s feature inspired the equivalent IIS feature
  • 14. Users, roles, and permissions ▪ Pluggable authentication ▪ Decoupled users and roles ▪ Users are extensible content-types ▪ Modules expose permissions ▪ Permissions apply to roles ▪ Permissions are additive: no deny ▪ Single LoC permission checking
  • 15. Background tasks ▪ HTTP favors fast and stateless operations ▪ Cleaning up, sending emails, long-running computations, all are best done in the background ▪ Ideally, you’d have a separate service process and a message queue ▪ Next best thing is Orchard’s background task infrastructure
  • 16. Workflow ▪ Makes processes pluggable and configurable ▪ An activity can be triggered by the output of another ▪ Manages processes that last for more than the request
  • 17. Localization ▪ Standard po files ▪ All messages enclosed in a T(): @T(“This message needs to be localized.”) msgctxt "~/Modules/Orchard.MediaPicker/Views/Fields/MediaGallery.cshtml" msgid "No media. " msgstr "Aucun média"
  • 18. Data access & migrations ▪ Schema migrations (v1) ▪ Separation of storage and querying ▪ Pluggable storage providers ▪ Query on index ▪ Map/reduce-like pattern
  • 19. Tokens ▪ Extensible contextual variables ▪ string interpolation <a href="mailto:{FormSubmission.Field:Email}">{FormSubmission.Field:FirstName} {FormSubmission.Field:LastName}</a>
  • 20. Conclusion ▪ Many interesting subsystems that are not tied to content management ▪ Interesting architecture ▪ Largest OSS application built on .NET Core

Notes de l'éditeur

  1. Open startup.cs in clients/Orchard.Web, show the code. This is setting up a web host, then configuring it to find tenants, modules, and themes. Instead, one could set-up everything by hand. F12 on IServiceCollection, then on ServiceDescriptor F12 on AddWebHost in startup.cs Instead of having a fixed core bootstrapping modules and tenants, the “client” has been separated out, and is seen as just one way to build an app. You can replace it with your own. You can load a differently configured Orchard that searches for services somewhere else, or you can just include the services you want, or you could create your own middleware that lives right next to Orchard without interfering. You can choose the exact level of integration you want.
  2. Site density: 700 blogs on a single Azure instance (4 web sites)
  3. Dynamic compilation: important for edit / save / refresh development, just like on lesser platforms.
  4. Template resolution: a shape needs to be rendered. We’ll try to resolve the template, so we’ll ask specialized services what theme should be used (theme resolution is pluggable like everything else), then we’ll look for a template in that theme. If we can’t find one, we’ll look in modules. Alternates enable fine-tuning of the template resolution by enabling specialized templates to override the default one if certain conditions are met: you can build a little bit of code that detects that the user is authenticated for example, and add to the Login_status shape a Login_status_authenticated alternate. Then if there is a login-status-authenticated.cshtml template in the theme, it’ll be used over login-status.cshtml. Placement: code can create and inject a shape into the existing UI tree with position information (zone “sidebar” with position “1.2.3”)
  5. Any type can be modified: the module developer is in control of the part and its behavior, but not of the types that it’s composed into.
  6. Setup recipe is a site archetype: default, blog, e-commerce, minimal, etc.
  7. Not all applications start-up fast
  8. Extensible users means trivial user profiles
  9. Workflows are an example of operations that run as background tasks
  10. No string identifiers: the default language string is it.