SlideShare ist ein Scribd-Unternehmen logo
1 von 47
How to Build Maintainable and Testable Custom SharePoint
Components
Edin Kapić
#SPSSTHLM07
February 14th, 2015
Platinum
Gold
Lunch SharePint
Silver
Web
Beezy
Catalonian
SharePoint User Group
sug.cat
Jag frågar mig
är denna öl
SharePint-
kompatibel
@ekapic
www.edinkapic.com
Deployment structure
Solution structure
Source code management
Code structure
Unit testing SharePoint
Maintainable
Testable
Simpler Retraction of one WSP
removes shared libraries
from BIN/GAC
Only one version path for
components
Not granular enough
MySolution.wsp
Functionality can be
separately versioned and
managed
Retracting one
functionality doesn’t break
shared libraries
More complex
Limited reusability
MySolution.Specific1.wsp
MySolution.Common.wsp
MySolution.Specific2.wsp
Shared WSP + Feature WSPs
Common SharePoint code
can be versioned
separately
More control over code
reuse and management
over multiple solutions
Even more complex
MySolution1.Specific1.wsp
MySolution1.Common.wsp
MySolution1.Specific2.wsp
MyFramework.wsp
MySolution2.Specific1.wsp
MySolution2.Common.wsp
MySolution2.Specific2.wsp
Framework + Shared + Feature WSPs
 But
 Run away!!!
 •
 •
“The Truth”
Developer 1
Developer 2
Developer 3
Developer 1
Developer 2
Build Server
Corporate
Repository
Unit tests
Depends on abstractions
Separates concerns
Inversion of Control (IoC)
Dependency Injection (DI)
Repository pattern
Service Locator pattern
MVP/MVC
coordinating code
concrete repositories (the
ones that hit SharePoint or a
database)
CUT
07

Weitere ähnliche Inhalte

Was ist angesagt?

DesignPatternsForScalability
DesignPatternsForScalabilityDesignPatternsForScalability
DesignPatternsForScalability
Chris Ballance
 
Getting Started with the NetBeans Platform
Getting Started with the NetBeans PlatformGetting Started with the NetBeans Platform
Getting Started with the NetBeans Platform
Geertjan Wielenga
 
About Dss 09
About Dss 09About Dss 09
About Dss 09
vetmike
 

Was ist angesagt? (18)

20120807 media monitoring cluster update
20120807 media monitoring cluster update20120807 media monitoring cluster update
20120807 media monitoring cluster update
 
Em presentation victor herman
Em presentation victor hermanEm presentation victor herman
Em presentation victor herman
 
Microservices in production
Microservices in productionMicroservices in production
Microservices in production
 
Couchbase community vs enterprise
Couchbase community vs enterpriseCouchbase community vs enterprise
Couchbase community vs enterprise
 
Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17
 
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGiOSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
 
Decoupling your JavaScript
Decoupling your JavaScriptDecoupling your JavaScript
Decoupling your JavaScript
 
DesignPatternsForScalability
DesignPatternsForScalabilityDesignPatternsForScalability
DesignPatternsForScalability
 
Sneak Preview Of Vignette V8
Sneak Preview Of Vignette V8Sneak Preview Of Vignette V8
Sneak Preview Of Vignette V8
 
From HTML to pixels on the Screen
From HTML to pixels on the ScreenFrom HTML to pixels on the Screen
From HTML to pixels on the Screen
 
Implementing a Paywall on WordPress.com VIP
Implementing a Paywall on WordPress.com VIPImplementing a Paywall on WordPress.com VIP
Implementing a Paywall on WordPress.com VIP
 
Getting Started with the NetBeans Platform
Getting Started with the NetBeans PlatformGetting Started with the NetBeans Platform
Getting Started with the NetBeans Platform
 
Where are we going DNNCon Keynote
Where are we going   DNNCon KeynoteWhere are we going   DNNCon Keynote
Where are we going DNNCon Keynote
 
Keeping in Touch -- Collaborative Technologies
Keeping in Touch -- Collaborative TechnologiesKeeping in Touch -- Collaborative Technologies
Keeping in Touch -- Collaborative Technologies
 
Kentico CMS
Kentico CMSKentico CMS
Kentico CMS
 
Mura vs Wordpress
Mura vs WordpressMura vs Wordpress
Mura vs Wordpress
 
Optimize for speed by Martyn Birch
Optimize for speed by Martyn BirchOptimize for speed by Martyn Birch
Optimize for speed by Martyn Birch
 
About Dss 09
About Dss 09About Dss 09
About Dss 09
 

Andere mochten auch

SPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-StyleSPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-Style
Edin Kapic
 

Andere mochten auch (10)

SPS Belgium 2015 - High-trust Apps for On-Premises Development
SPS Belgium 2015 -  High-trust Apps for On-Premises DevelopmentSPS Belgium 2015 -  High-trust Apps for On-Premises Development
SPS Belgium 2015 - High-trust Apps for On-Premises Development
 
Avances y Desarrollo del Servicio Geológico Minero Argentino en Cartografía D...
Avances y Desarrollo del Servicio Geológico Minero Argentino en Cartografía D...Avances y Desarrollo del Servicio Geológico Minero Argentino en Cartografía D...
Avances y Desarrollo del Servicio Geológico Minero Argentino en Cartografía D...
 
Impacto del Modelo Conceptual de Sistema, en la Gestión y Gobernanza de los...
Impacto del Modelo Conceptual de  Sistema, en la Gestión y  Gobernanza de los...Impacto del Modelo Conceptual de  Sistema, en la Gestión y  Gobernanza de los...
Impacto del Modelo Conceptual de Sistema, en la Gestión y Gobernanza de los...
 
Universidad de La Habana - SharePoint, Listas y XSLT
Universidad de La Habana  - SharePoint, Listas y XSLTUniversidad de La Habana  - SharePoint, Listas y XSLT
Universidad de La Habana - SharePoint, Listas y XSLT
 
Personal Branding for Developers
Personal Branding for DevelopersPersonal Branding for Developers
Personal Branding for Developers
 
Rx la joya oculta de Net
Rx la joya oculta de NetRx la joya oculta de Net
Rx la joya oculta de Net
 
SPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-StyleSPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-Style
 
ESPC15 - Extending Authentication and Authorization
ESPC15 - Extending Authentication and AuthorizationESPC15 - Extending Authentication and Authorization
ESPC15 - Extending Authentication and Authorization
 
High-Trust Add-Ins SharePoint for On-Premises Development
High-Trust Add-Ins SharePoint for On-Premises DevelopmentHigh-Trust Add-Ins SharePoint for On-Premises Development
High-Trust Add-Ins SharePoint for On-Premises Development
 
Extending Authentication and Authorization
Extending Authentication and AuthorizationExtending Authentication and Authorization
Extending Authentication and Authorization
 

Ähnlich wie SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components

SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
BIWUG
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
WSO2
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
Tony Ng
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutions
Sangjin Lee
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum Slides
Abhishek Gupta
 

Ähnlich wie SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components (20)

SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
SharePoint Saturday Belgium 2014 Building maintainable testable SharePoint co...
 
Sitecore user group mumbai sitecore commerce extension
Sitecore user group mumbai  sitecore commerce extensionSitecore user group mumbai  sitecore commerce extension
Sitecore user group mumbai sitecore commerce extension
 
Vue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrareVue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrare
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is Modularity
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
 
Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent Magento 2 overview. Alan Kent
Magento 2 overview. Alan Kent
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutions
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012
 
SharePoint 2013 Web Content Management for Developers TSPUG
SharePoint 2013 Web Content Management for Developers TSPUGSharePoint 2013 Web Content Management for Developers TSPUG
SharePoint 2013 Web Content Management for Developers TSPUG
 
SharePoint 2013 Web Content Management for Developers HSPUG
SharePoint 2013 Web Content Management for Developers HSPUGSharePoint 2013 Web Content Management for Developers HSPUG
SharePoint 2013 Web Content Management for Developers HSPUG
 
SharePoint Advanced Administration with Joel Oleson, Shane Young and Mike Watson
SharePoint Advanced Administration with Joel Oleson, Shane Young and Mike WatsonSharePoint Advanced Administration with Joel Oleson, Shane Young and Mike Watson
SharePoint Advanced Administration with Joel Oleson, Shane Young and Mike Watson
 
Built to Last
Built to LastBuilt to Last
Built to Last
 
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 OverviewМакс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
Макс Екатериненко - Meet Magento Ukraine - Magento 2 Overview
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5
 
Back to the Basics: SharePoint Fundamentals by Joel Oleson
Back to the Basics: SharePoint Fundamentals by Joel OlesonBack to the Basics: SharePoint Fundamentals by Joel Oleson
Back to the Basics: SharePoint Fundamentals by Joel Oleson
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)
 
Sitecore user group chennai
Sitecore user group chennaiSitecore user group chennai
Sitecore user group chennai
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum Slides
 

Mehr von Edin Kapic

SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
Edin Kapic
 

Mehr von Edin Kapic (14)

ESPC14 Social Business Value Demystified
ESPC14 Social Business Value DemystifiedESPC14 Social Business Value Demystified
ESPC14 Social Business Value Demystified
 
MVP Open Day 2014 - Hacking Human Behaviour
MVP Open Day 2014 - Hacking Human BehaviourMVP Open Day 2014 - Hacking Human Behaviour
MVP Open Day 2014 - Hacking Human Behaviour
 
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 AppSPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
 
7 Key Things for Building a Highly-Scalable SharePoint 2013 App
7 Key Things for Building a Highly-Scalable SharePoint 2013 App7 Key Things for Building a Highly-Scalable SharePoint 2013 App
7 Key Things for Building a Highly-Scalable SharePoint 2013 App
 
Social Business Value Demystified: Real-World Experiences
Social Business Value Demystified: Real-World ExperiencesSocial Business Value Demystified: Real-World Experiences
Social Business Value Demystified: Real-World Experiences
 
BcnDevCon13 - No Designer? No Problem!
BcnDevCon13 - No Designer? No Problem!BcnDevCon13 - No Designer? No Problem!
BcnDevCon13 - No Designer? No Problem!
 
BcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMSBcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMS
 
BcnDevCon12 - CQRS explicado a mi compañero arquitecto
BcnDevCon12 - CQRS explicado a mi compañero arquitectoBcnDevCon12 - CQRS explicado a mi compañero arquitecto
BcnDevCon12 - CQRS explicado a mi compañero arquitecto
 
Modelos de madurez de SharePoint
Modelos de madurez de SharePointModelos de madurez de SharePoint
Modelos de madurez de SharePoint
 
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
 
SUG.CAT First Monday Noviembre 2012
SUG.CAT First Monday Noviembre 2012SUG.CAT First Monday Noviembre 2012
SUG.CAT First Monday Noviembre 2012
 
JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#
 
CatDotNet - Farmville para SharePoint
CatDotNet - Farmville para SharePointCatDotNet - Farmville para SharePoint
CatDotNet - Farmville para SharePoint
 
SharePoint kao razvojna platforma za ASP.NET developere
SharePoint kao razvojna platforma za ASP.NET developereSharePoint kao razvojna platforma za ASP.NET developere
SharePoint kao razvojna platforma za ASP.NET developere
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components

Hinweis der Redaktion

  1. Template may not be modified Twitter hashtag: #spsbe for all sessions
  2. How Beezy branches are done