Extension points in Enterprise Application

33
@RaduVunvulea Extension Points in Enterprise . Applications

description

Extension points in Enterprise Application, ITDays Cluj-Napoca,

Transcript of Extension points in Enterprise Application

Page 1: Extension points in Enterprise Application

@RaduVunvulea

Extension Points in Enterprise . Applications

Page 2: Extension points in Enterprise Application
Page 3: Extension points in Enterprise Application

{“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

AgendaWhat are Extension PointsFeatures & IdealEvolutionComponentsService Provider InterfaceWho should implement themCommon Extension PointsConclusion

Page 5: Extension points in Enterprise Application

What are Extension Points

Page 6: Extension points in Enterprise Application

What are Extensions Point?

Page 7: Extension points in Enterprise Application

What are Extensions Point?

Page 8: Extension points in Enterprise Application

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

Features & Ideal

Page 10: Extension points in Enterprise Application

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

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

Evolution

Page 13: Extension points in Enterprise Application

How should evolve• Natural• Based on the needs• Every iteration• At design time

Page 14: Extension points in Enterprise Application

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

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

How should evolve

NaturalBased on the needs

Every iteratio

n

At design time

Simple Complex

Page 17: Extension points in Enterprise Application

Components

Page 18: Extension points in Enterprise Application

Interfaces

Virtual Methods

Abstract Class

Modules

Services

Configuration Files

Page 19: Extension points in Enterprise Application

…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

Service Provider Interface

Page 21: Extension points in Enterprise Application

Service Provider Interface (SPI)Contains• Interfaces• Abstract ClassesOptional interfacesAnnotations (attributes)

Page 22: Extension points in Enterprise Application

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

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

Who should implement

Extension Points

Page 25: Extension points in Enterprise Application

External Teams

Print EP

Print EP

Internal Teams

View EP

Core

Core Team

Print EP

Page 26: Extension points in Enterprise Application

Common Extension Points

Page 27: Extension points in Enterprise Application

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

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

Conclusion

Page 30: Extension points in Enterprise Application

Helper FrameworksEnterprise Library (.NET)Java Plugin Framework (Java)Qt Project (C++)BIRT Extension Point (Java BI)

Page 31: Extension points in Enterprise Application

ChangesBe prepared for changes• Frameworks• Services• Hardware• On-premise to Cloud• Cloud to On-premise

Page 32: Extension points in Enterprise Application

Question

Answers

Page 33: Extension points in Enterprise Application

Thank you{ “name” : “Radu Vunvulea, “blog” : “vunvulearadu.blogspot.com”, “email” : ”[email protected]”, “socialMedia” : {

“twitter” : “@RaduVunvulea”,“fb” : “radu.vunvulea”

}}