extension points in enterprise application
DESCRIPTION
Extension points in Enterprise Application, ITDays Cluj-Napoca,TRANSCRIPT
![Page 1: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/1.jpg)
@RaduVunvulea
Extension Points in Enterprise . Applications
![Page 2: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/2.jpg)
![Page 3: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/3.jpg)
{“name” : “Radu Vunvulea,“company” : “iQuest Group”,“userType” : “enthusiastic”“technologies” : [“Azure”, “.NET”, “JS”, “Web”, “Mobile”, “WPF”, “SL” ],“expertise” : [“enterprise”, “pharma”, “automotive”, “home automation”, “e-Commerce” ],“blog” : “vunvulearadu.blogspot.com”,“email” : ”[email protected]”,“socialMedia” :
{“twitter” : “@RaduVunvulea”,
“fb” : “radu.vunvulea”}
}
Who am I?
![Page 4: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/4.jpg)
AgendaWhat are Extension PointsFeatures & IdealEvolutionComponentsService Provider InterfaceWho should implement themCommon Extension PointsConclusion
![Page 5: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/5.jpg)
What are Extension Points
![Page 6: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/6.jpg)
What are Extensions Point?
![Page 7: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/7.jpg)
What are Extensions Point?
![Page 8: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/8.jpg)
What are Extensions Point?• Allows other users to extend the
functionality of the application• Avoid tight coupling between
components• Allow other plugins/components to
customize or extend portions of the functionality
• Define a contract between the two parts
![Page 9: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/9.jpg)
Features & Ideal
![Page 10: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/10.jpg)
Features• Component does not know anything
about other components beyond the scope of the extension contract
• Applications can have more than one component that extend a specific extension point
![Page 11: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/11.jpg)
Ideal• Easy to learn• Support multiple scenarios • Evolve without breaking
existing implementation• Powerful enough to exist more
than one iteration
![Page 12: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/12.jpg)
Evolution
![Page 13: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/13.jpg)
How should evolve• Natural• Based on the needs• Every iteration• At design time
![Page 14: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/14.jpg)
Evolutionpublic class Calculator{
private string baseValue;...public void Add(string value){
if (value==null || value.Count == 0|| value == "-")
{baseValue = baseValue + "-";
}...
}}
![Page 15: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/15.jpg)
Evolutionpublic class Calculator{
private string baseValue;...public void Add(string value){
if (ContainsDefaultValue(value)){
baseValue = baseValue + "-";}...
}
protected virtual bool ContainsDefaultValue(string value){
return (value==null || value.Count == 0|| value == "-");
}}
![Page 16: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/16.jpg)
How should evolve
NaturalBased on the needs
Every iteratio
n
At design time
Simple Complex
![Page 17: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/17.jpg)
Components
![Page 18: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/18.jpg)
Interfaces
Virtual Methods
Abstract Class
Modules
Services
Configuration Files
![Page 19: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/19.jpg)
…it’s a combination between them…
…no perfect solution…
Interfaces Virtual Methods
Abstract Class Modules
Services Configuration Files
![Page 20: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/20.jpg)
Service Provider Interface
![Page 21: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/21.jpg)
Service Provider Interface (SPI)Contains• Interfaces• Abstract ClassesOptional interfacesAnnotations (attributes)
![Page 22: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/22.jpg)
Interfacespublic class MyCalculator : ICalculator{
public void Add(string value)
{// Some action
}
void Initialize(){
// Some action
}
void Refresh() {}
}
public interface ICalculator{
void Add(string value);
void Initialize();void Refresh();
}
![Page 23: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/23.jpg)
Annotation[InitializeAttribute(typeof(MyInitialize)]public class MyCalculator : ICalculator{
public void Add(string value)
{...
}
void Initialize()void Refresh()
}
public interface ICalculator{
void Add(string value);
void Initialize();void Refresh();
}
![Page 24: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/24.jpg)
Who should implement
Extension Points
![Page 25: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/25.jpg)
External Teams
Print EP
Print EP
Internal Teams
View EP
Core
Core Team
Print EP
![Page 26: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/26.jpg)
Common Extension Points
![Page 27: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/27.jpg)
Common Extension Points
• Manager• Expiration
Policy• Encryption• Backing Store
Caching
• Provider• CRUD• Retry Policy
Data Access
• Hash Algorithm
• Symmetric Encryption
Cryptography
![Page 28: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/28.jpg)
Common Extension Points• Validator
• Attributes• Handing
Validation
• Formatter• Listeners• Filters
Logging
• Handler• Formatter• Management
Exception
• Authorization
• Authentication
• Security CacheSecurity
![Page 29: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/29.jpg)
Conclusion
![Page 30: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/30.jpg)
Helper FrameworksEnterprise Library (.NET)Java Plugin Framework (Java)Qt Project (C++)BIRT Extension Point (Java BI)
![Page 31: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/31.jpg)
ChangesBe prepared for changes• Frameworks• Services• Hardware• On-premise to Cloud• Cloud to On-premise
![Page 32: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/32.jpg)
Question
Answers
![Page 33: Extension points in Enterprise Application](https://reader033.vdocuments.net/reader033/viewer/2022052900/5562fb86d8b42a62598b4afd/html5/thumbnails/33.jpg)
Thank you{ “name” : “Radu Vunvulea, “blog” : “vunvulearadu.blogspot.com”, “email” : ”[email protected]”, “socialMedia” : {
“twitter” : “@RaduVunvulea”,“fb” : “radu.vunvulea”
}}