SlideShare una empresa de Scribd logo
1 de 8
Plugin Architecture
Leveraging the benefits of
Extensible Application Architecture
Extensible Application Architecture
 A very important principle of Application design is the Open-Closed Principle (ref S.O.L.I.D. principles of software design).
 The Open-Closed principle states that “Software entities (classes, modules, functions, etc.) should be open for extension, but
closed for modification”
 It is generally achieved by using abstractions, or by placing behavior(responsibility) in derivative classes.

 A truly Extensible Software design should allow 3rd Party/External developers to extend and enhance it further
even after they have been compiled and released.

 This is possible only if we design our application to be easily Pluggable.
Plugin Architecture
Plugin is any piece of software that extends or changes the behavior or interface of an existing, compiled application.
For the plugin to be able to extend the any application, the existing application must itself be designed so that its is Pluggable
(Implementing a Plugin Architecture).
Examples of applications having a plugin architecture are MS Office, Visual Studio, Eclipse IDE (Java)
Why/When do we need a Pluggable Application (Benefits)?
 To allow applications to be extended after they have been compiled and released.
 To allow other applications to be able to connect to and enhance your application
in a standard BUT isolated way.
 To make Unit testing easier for teams working on different modules/Plugins.
 When we are designing a solution which should accommodate disparate
requirements implemented by other vendors in the future.

Eclipse IDE platform Architecture
Building Extensible design in .NET
Microsoft .NET already provides us with a few tools and libraries in order for us to get started with designing Extensible
Architectures.
The most popular of them all are MEF and MAF. Both are exclusive to each other but can be used in a complimentary manner.
A feature-by-feature comparison is as under :
Managed Extensibility Framework (MEF)

Managed AddIn Framework (MAF)

Primarily focused on providing extensibility

Provides extensibility along with Isolation

All the extensions are loaded in to the same AppDomain as the
primary application

All AddIns are loaded in separate AppDomains.

Dynamic Discovery of Extensions

AddIns must be installed before use. No dynamic discovery.

Extensions cannot be unloaded at runtime

AddIns can be installed/uninstalled without affecting the
primary application.

The whole application might crash, if and extension has an
error/

Since the AddIns run in their own AppDomain, they do not
affect the primary application in event of error.

Easier to Implement

Costly in terms of time, effort and Complexity.
Plugin Architecture Use Case Scenario (MEF+MAF)
A custom implementation of a Plugin Architecture using useful features and principles from both MEF and MAF is as under :
 The initial Plugin discovery needs to be done using MEF as it supports dynamic discovery of assemblies of a known type in folder.
 There is Shared contract which is present in both the Host and the Plugin which assists in the Dynamic Discovery of Plugins.
 Info about the loaded plugins such as name, file path, version etc. are stored in a static in-memory collection to be used later.
 Plugins are loaded in their separate AppDomains (MAF Principle) as needed (using information from the static in-memory

collection), which makes it easy to Load and Unload them.
 Since Plugins run in separate AppDomains, they do not affect the Host application in the event of failure/exception.
 The communication between AppDomain is a Custom implementation and is achieved using remoting (MarshalByRefObject)
 The Plugin Architecture extends to the Plugins as well. Meaning a Plugin itself can also be a Host to other Plugins.
Plugin Architecture Use Case Scenario …continued
Illustrated below is a custom implementation of a Plugin architecture.
 Each one of the modules (Plugins) below in boxes work independent of each other and communicate via a custom implementation of Remoting.
WCF Service (Hosted inside Windows Service)
Service A
[Plugin]

Service
Application
Service B
[Plugin]

WPF Application UI

Duplex
Communication
[WCF NamedPipes]

UI Application (Shell.exe)
[Plugin Host]

[Plugin Host]

Plugin Y
[Plugin]
[Plugin Host]

Plugin X
[Plugin]
Service C
[Plugin]

Future Service
[Plugin]

Application 1
[Plugin]

Application 2
[Plugin]

Plugin Z
[Plugin]

Future App
[Plugin]
Glossary
Term

Description

Plugin

A piece of software that extends or changes the behavior or interface of an existing, compiled application

PluginHost

A Pluggable application which can be extended using Plugins.

AddIn

A piece of software that extends or changes the behavior or interface of an existing, compiled application (same as Plugin)

MEF

Managed Extensibility Framework (http://msdn.microsoft.com/en-us/library/dd460648.aspx)

MAF

Managed AddIn Framework (http://msdn.microsoft.com/en-IN/library/bb384200.aspx)

AppDomain

The logical and physical boundary created around every .NET application by the Common Language Runtime (CLR) to isolate
applications from each other (http://msdn.microsoft.com/en-IN/library/2bh4z9hs.aspx)

Remoting

A means to establish Inter-process communication within the same machine
(http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=vs.71).aspx)

WPF

Windows Presentation Foundation – Used to create Rich Client Applications
(http://msdn.microsoft.com/en-IN/library/ms754130.aspx)

WCF

Windows Communication Foundation – Used to create highly scalable and flexible services (http://msdn.microsoft.com/enus/library/ms731082.aspx)

Named Pipes

A mode of communication used by WCF to established Inter-process communication on the same machine.
A solution based on Plugin Framework might be
considered as Extreme Extensibility and is not

Extensible
Applications

the way to go for every software design.
A Plugin architecture is expensive to implement
and must be decided after much thought.
Refer the link below to learn more.

Find out more about implementing a Plugin Framework with MEF and/or MAF
(Click the above link in Slide show mode)

Más contenido relacionado

La actualidad más candente

Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Herofazalraja
 
MuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysMuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysAngel Alberici
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software ArchitectureJérôme Kehrli
 
Introduction to Github Actions
Introduction to Github ActionsIntroduction to Github Actions
Introduction to Github ActionsKnoldus Inc.
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecturetyrantbrian
 
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...Angel Alberici
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 
Containerising the Mule Runtime with Kubernetes & From Zero to Batch : MuleS...
Containerising the Mule Runtime with Kubernetes & From Zero to Batch  : MuleS...Containerising the Mule Runtime with Kubernetes & From Zero to Batch  : MuleS...
Containerising the Mule Runtime with Kubernetes & From Zero to Batch : MuleS...Angel Alberici
 
Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Gaëlle Acas
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices Rajesh Kumar
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategiesjstack
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformDevOps.com
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIDavid Hahn
 
Continuous Integration and Continuous Delivery on Azure
Continuous Integration and Continuous Delivery on AzureContinuous Integration and Continuous Delivery on Azure
Continuous Integration and Continuous Delivery on AzureCitiusTech
 
Mulesoft meetup slides mumbai_20113019_exception_handling
Mulesoft meetup slides mumbai_20113019_exception_handlingMulesoft meetup slides mumbai_20113019_exception_handling
Mulesoft meetup slides mumbai_20113019_exception_handlingManish Kumar Yadav
 

La actualidad más candente (20)

Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
MuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysMuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleys
 
Building APIs with Mule and Spring Boot
Building APIs with Mule and Spring BootBuilding APIs with Mule and Spring Boot
Building APIs with Mule and Spring Boot
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Benefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular jsBenefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular js
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
 
Introduction to Github Actions
Introduction to Github ActionsIntroduction to Github Actions
Introduction to Github Actions
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...
Mule 4 migration + Common Integration Challenges : MuleSoft Virtual Muleys Me...
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Containerising the Mule Runtime with Kubernetes & From Zero to Batch : MuleS...
Containerising the Mule Runtime with Kubernetes & From Zero to Batch  : MuleS...Containerising the Mule Runtime with Kubernetes & From Zero to Batch  : MuleS...
Containerising the Mule Runtime with Kubernetes & From Zero to Batch : MuleS...
 
Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
GRPC.pptx
GRPC.pptxGRPC.pptx
GRPC.pptx
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 
Continuous Integration and Continuous Delivery on Azure
Continuous Integration and Continuous Delivery on AzureContinuous Integration and Continuous Delivery on Azure
Continuous Integration and Continuous Delivery on Azure
 
Mulesoft meetup slides mumbai_20113019_exception_handling
Mulesoft meetup slides mumbai_20113019_exception_handlingMulesoft meetup slides mumbai_20113019_exception_handling
Mulesoft meetup slides mumbai_20113019_exception_handling
 

Similar a Leveraging Plugin Architecture for Extensible Application Design

Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Madjid KETFI
 
Getting started with ibm worklight tips
Getting started with ibm worklight tipsGetting started with ibm worklight tips
Getting started with ibm worklight tipsbupbechanhgmail
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd modelsSukhdeep Singh
 
Extending the Enterprise with MEF
Extending the Enterprise with MEFExtending the Enterprise with MEF
Extending the Enterprise with MEFBrian Ritchie
 
Multi platform application deployment with urban code deploy
Multi platform application deployment with urban code deployMulti platform application deployment with urban code deploy
Multi platform application deployment with urban code deploySaranga Tripathy
 
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...ijseajournal
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insTonny Madsen
 
Dynamic component composition
Dynamic component compositionDynamic component composition
Dynamic component compositionijseajournal
 
whitepaper_mobile_integration_that_doesnt_suck
whitepaper_mobile_integration_that_doesnt_suckwhitepaper_mobile_integration_that_doesnt_suck
whitepaper_mobile_integration_that_doesnt_suckAmy Gardner
 
Dynamic Component Deployment and (Re) Configuration Using a Unified Framework
Dynamic Component Deployment and (Re) Configuration Using a Unified FrameworkDynamic Component Deployment and (Re) Configuration Using a Unified Framework
Dynamic Component Deployment and (Re) Configuration Using a Unified FrameworkMadjid KETFI
 
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEMODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEAnže Vodovnik
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentProf. Erwin Globio
 
Open.up.your.applications.with.MEF
Open.up.your.applications.with.MEFOpen.up.your.applications.with.MEF
Open.up.your.applications.with.MEFguestcb74eee
 
Spring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsSpring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsVirtual Nuggets
 

Similar a Leveraging Plugin Architecture for Extensible Application Design (20)

Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
 
Getting started with ibm worklight tips
Getting started with ibm worklight tipsGetting started with ibm worklight tips
Getting started with ibm worklight tips
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd models
 
Xebia deploy it
Xebia deploy itXebia deploy it
Xebia deploy it
 
Teamwork Presentation
Teamwork PresentationTeamwork Presentation
Teamwork Presentation
 
Twelve factor apps
Twelve factor appsTwelve factor apps
Twelve factor apps
 
Extending the Enterprise with MEF
Extending the Enterprise with MEFExtending the Enterprise with MEF
Extending the Enterprise with MEF
 
Multi platform application deployment with urban code deploy
Multi platform application deployment with urban code deployMulti platform application deployment with urban code deploy
Multi platform application deployment with urban code deploy
 
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...
SOFTWARE BUILD AUTOMATION TOOLS A COMPARATIVE STUDY BETWEEN MAVEN, GRADLE, BA...
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
 
Dynamic component composition
Dynamic component compositionDynamic component composition
Dynamic component composition
 
whitepaper_mobile_integration_that_doesnt_suck
whitepaper_mobile_integration_that_doesnt_suckwhitepaper_mobile_integration_that_doesnt_suck
whitepaper_mobile_integration_that_doesnt_suck
 
Dynamic Component Deployment and (Re) Configuration Using a Unified Framework
Dynamic Component Deployment and (Re) Configuration Using a Unified FrameworkDynamic Component Deployment and (Re) Configuration Using a Unified Framework
Dynamic Component Deployment and (Re) Configuration Using a Unified Framework
 
Composite Application Library, Prism v2
Composite Application Library, Prism v2Composite Application Library, Prism v2
Composite Application Library, Prism v2
 
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEMODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Open.up.your.applications.with.MEF
Open.up.your.applications.with.MEFOpen.up.your.applications.with.MEF
Open.up.your.applications.with.MEF
 
Spring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggetsSpring Framework Tutorial | VirtualNuggets
Spring Framework Tutorial | VirtualNuggets
 

Último

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Último (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Leveraging Plugin Architecture for Extensible Application Design

  • 1. Plugin Architecture Leveraging the benefits of Extensible Application Architecture
  • 2. Extensible Application Architecture  A very important principle of Application design is the Open-Closed Principle (ref S.O.L.I.D. principles of software design).  The Open-Closed principle states that “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”  It is generally achieved by using abstractions, or by placing behavior(responsibility) in derivative classes.  A truly Extensible Software design should allow 3rd Party/External developers to extend and enhance it further even after they have been compiled and released.  This is possible only if we design our application to be easily Pluggable.
  • 3. Plugin Architecture Plugin is any piece of software that extends or changes the behavior or interface of an existing, compiled application. For the plugin to be able to extend the any application, the existing application must itself be designed so that its is Pluggable (Implementing a Plugin Architecture). Examples of applications having a plugin architecture are MS Office, Visual Studio, Eclipse IDE (Java) Why/When do we need a Pluggable Application (Benefits)?  To allow applications to be extended after they have been compiled and released.  To allow other applications to be able to connect to and enhance your application in a standard BUT isolated way.  To make Unit testing easier for teams working on different modules/Plugins.  When we are designing a solution which should accommodate disparate requirements implemented by other vendors in the future. Eclipse IDE platform Architecture
  • 4. Building Extensible design in .NET Microsoft .NET already provides us with a few tools and libraries in order for us to get started with designing Extensible Architectures. The most popular of them all are MEF and MAF. Both are exclusive to each other but can be used in a complimentary manner. A feature-by-feature comparison is as under : Managed Extensibility Framework (MEF) Managed AddIn Framework (MAF) Primarily focused on providing extensibility Provides extensibility along with Isolation All the extensions are loaded in to the same AppDomain as the primary application All AddIns are loaded in separate AppDomains. Dynamic Discovery of Extensions AddIns must be installed before use. No dynamic discovery. Extensions cannot be unloaded at runtime AddIns can be installed/uninstalled without affecting the primary application. The whole application might crash, if and extension has an error/ Since the AddIns run in their own AppDomain, they do not affect the primary application in event of error. Easier to Implement Costly in terms of time, effort and Complexity.
  • 5. Plugin Architecture Use Case Scenario (MEF+MAF) A custom implementation of a Plugin Architecture using useful features and principles from both MEF and MAF is as under :  The initial Plugin discovery needs to be done using MEF as it supports dynamic discovery of assemblies of a known type in folder.  There is Shared contract which is present in both the Host and the Plugin which assists in the Dynamic Discovery of Plugins.  Info about the loaded plugins such as name, file path, version etc. are stored in a static in-memory collection to be used later.  Plugins are loaded in their separate AppDomains (MAF Principle) as needed (using information from the static in-memory collection), which makes it easy to Load and Unload them.  Since Plugins run in separate AppDomains, they do not affect the Host application in the event of failure/exception.  The communication between AppDomain is a Custom implementation and is achieved using remoting (MarshalByRefObject)  The Plugin Architecture extends to the Plugins as well. Meaning a Plugin itself can also be a Host to other Plugins.
  • 6. Plugin Architecture Use Case Scenario …continued Illustrated below is a custom implementation of a Plugin architecture.  Each one of the modules (Plugins) below in boxes work independent of each other and communicate via a custom implementation of Remoting. WCF Service (Hosted inside Windows Service) Service A [Plugin] Service Application Service B [Plugin] WPF Application UI Duplex Communication [WCF NamedPipes] UI Application (Shell.exe) [Plugin Host] [Plugin Host] Plugin Y [Plugin] [Plugin Host] Plugin X [Plugin] Service C [Plugin] Future Service [Plugin] Application 1 [Plugin] Application 2 [Plugin] Plugin Z [Plugin] Future App [Plugin]
  • 7. Glossary Term Description Plugin A piece of software that extends or changes the behavior or interface of an existing, compiled application PluginHost A Pluggable application which can be extended using Plugins. AddIn A piece of software that extends or changes the behavior or interface of an existing, compiled application (same as Plugin) MEF Managed Extensibility Framework (http://msdn.microsoft.com/en-us/library/dd460648.aspx) MAF Managed AddIn Framework (http://msdn.microsoft.com/en-IN/library/bb384200.aspx) AppDomain The logical and physical boundary created around every .NET application by the Common Language Runtime (CLR) to isolate applications from each other (http://msdn.microsoft.com/en-IN/library/2bh4z9hs.aspx) Remoting A means to establish Inter-process communication within the same machine (http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=vs.71).aspx) WPF Windows Presentation Foundation – Used to create Rich Client Applications (http://msdn.microsoft.com/en-IN/library/ms754130.aspx) WCF Windows Communication Foundation – Used to create highly scalable and flexible services (http://msdn.microsoft.com/enus/library/ms731082.aspx) Named Pipes A mode of communication used by WCF to established Inter-process communication on the same machine.
  • 8. A solution based on Plugin Framework might be considered as Extreme Extensibility and is not Extensible Applications the way to go for every software design. A Plugin architecture is expensive to implement and must be decided after much thought. Refer the link below to learn more. Find out more about implementing a Plugin Framework with MEF and/or MAF (Click the above link in Slide show mode)

Notas del editor

  1. In Slide Show mode, click the arrow to enter the PowerPoint Getting Started Center.