Sviluppo basato su componenti richiesto un repository di frammenti di codice (a volte stack di oggetti completi) generalmente in una sintassi di codice. Per essere utili su qualsiasi altra cosa, questi frammenti dovrebbero essere portati o richiamati attraverso un'interfaccia comune (ad esempio Windows API o COM, COM + e altri) tra VB6 & VC++ per esempio. Quindi le funzioni VC++ potrebbero essere utilizzate e chiamate da VB6. Di conseguenza, il riutilizzo dei componenti richiedeva a volte un intero lotto di refactoring da riutilizzare, il che era controintuitivo. C'era anche il problema del legame precoce e tardivo. I componenti del repository devono ancora essere costruiti e distribuiti come parte funzionante della base di codice per poter essere utilizzati. Il codice avrebbe dovuto essere sottoposto a test dell'unità prima di aggiungerlo al repository, ma necessitava ancora di test di integrazione per confermare la funzionalità. Dovresti anche costruire i parametri corretti per "attraversare l'interfaccia dell'oggetto". Di nuovo, questo codice wrapper generalmente richiesto.
Questi repository di codice potrebbero non includere tutto per essere veramente multipiattaforma. L'indipendenza dalla piattaforma è solitamente richiesta quando i problemi sono segmentati tra domini, specialmente nei sistemi integrati. L'interfaccia è inclusa nel software costruito e distribuito, non nel codice di funzionamento effettivo.
Quello che ti manca tra i due è un quadro. SOA non è CBDv2 né un'estensione ad esso, devi passare attraverso il framework di implementazione del servizio. Anche i quadri non sono un nuovo concetto.
Entrambi CBD & SOA alla fine promuovono il riutilizzo del codice. Il CBD è generalmente più ristretto rispetto alla SOA! SOA ha bisogno di un quadro per essere efficace, il CBD no. Il CBD è abbinato al suo linguaggio di sviluppo e alla piattaforma di destinazione.