You are on page 1of 8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

VocEstEm: Home ASP.NETWEBAPI2


ArquiteturaOrientadaAServios(SOA):UmaVisoGeral

ArquiteturaOrientadaa
Servios(SOA):umaviso
geral
RenatoGroffe 31/01/2016 ASP.NETWEBAPI2,Servios,WCF,Web Sem
Comentrios

Arquivoscontendoagrupamentosdedadosforamumadasprimeiras
formasdeintegraoentresistemas.Aindaemusoatualmente,esta
alternativacostumaserempregadamuitasvezesnatransfernciade
grandeslotesdeinformaes.
Valedestacarqueousodearquivosumtipodeprticabastante
comumnodesenvolvimentoparaaplicaesdemainframe,bemcomo
naimplementaodeprocessosdecargaparasoluesdeBusiness
Intelligence(BI).Almdearquivosdetexto,outrosformatoscomo
CSVeplanilhasdoExcel(.xls/.xlsx)tambmsoutilizadoscom
algumafrequncia.
OadventodosWebServicesnocomeodosanos2000revolucionou
acomunicaoentrediferentessistemas.Talacontecimentoviabilizou
http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

1/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

arealizaodetransaesonline,caractersticaestafundamental
paraosucessodesegmentoscomoecommerceeInternetBanking.
Apopularizaodestetipodetecnologiafoipossvelgraasadoo,
emseusestgiosiniciais,doprotocoloHTTP/HTTPS(paraa
transmissodedados)edoformatoXML(usadonarepresentaode
informaes).
Comonodifcildeseimaginar,especialistasdareadesoftware
propuseramdiretrizesvisandoumamelhorestruturaonoquediz
respeitoimplementaodeWebServices.Oresultadodestetrabalho
conhecidohojecomoSOA(sigladoinglsServiceOriented
Architecture)ou,emportugus,ArquiteturaOrientadaaServios.
OobjetivodesteartigoapresentarumavisogeraldeSOA.Paraisto
seroabordadosprincpios,vantagensecuidadosteisaprojetosque
seorientemporestaarquitetura.
Definio
AArquiteturaOrientadaaServios(SOA)englobaumasriede
diretrizes,padreseboasprticasparaaimplementaodeservios.
Tratasedeumcorpodeconhecimentosconcebidoparaatenders
maisdiferentesplataformasdedesenvolvimento,semseprendera
umatecnologiaespecfica.
Quantoaosservios,estesrepresentamaunidadebsicade
implementaodentrodestaarquitetura.Emtermosprticos,um
servionadamaisdoqueumcomponentedesoftwarecom
capacidades,asquaissoimplementadassobaformadeoperaes
(mtodos).Jascapacidadespodemservistascomofuncionalidades
dasquaisumoumaissistemasdependem.
Umdosprincipaisespecialistasdentrodesteramodaarquiteturade
softwareocanadenseThomasErl.Esteautordesenvolveuuma
notaoparaarepresentaodeserviosquepodeservisualizada
naImagem1(atravsdousodecrculos,comaindicaoopcionalde
suasrespectivascapacidades):

http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

2/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

Imagem1.RepresentaodeumserviosegundoThomasErl
Benefcios
Dentreosbenefciosconseguidosaoseadotarosprincpios
propostosporSOApossveldestacar:
Apossibilidadedereusodeumservioaolongodevrias
aplicaes
Ainteroperabilidadeentresistemasconstrudosemdiferentes
plataformas(acomunicaoentresistemasconstrudosem
.NETeJavacorrespondeaumbomexemplodisto)
Reduesnotempoecustodeimplementaodenovos
projetos,graasaoreaproveitamentodefuncionalidadespr
existentes
Umamaiororganizaodosprocessosdenegcio,graas
nfasenaanliseemodelagemdasdiferentescaractersticase
nuancesdosmesmos.
Cuidados
AimplantaodeprojetosemconformidadecomSOAtambmexige
cuidados:
Aequipeenvolvidadevesercapacitadaeestarfamiliarizada
comconceitosdestaarquitetura
Mudanasdrsticasemumserviopodemresultaremefeitos
indesejveisemoutrasaplicaes
Questesenvolvendoasegurananatransmissode
informaestambmdevemserpriorizadas
Analisararealnecessidadedeimplementaodeumservio
(potencialdereuso,questesdeinfraestrutura)umaspecto
http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

3/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

defundamentalimportncia,sobretudoporevitaresforosque
podemserevelarcomoinfrutferos.
TiposdeservioemSOA
DeacordocomThomasErlserviospodemserclassificadoscomo:
EntityServices,empregadosemoperaesdeCRUD
(incluso,excluso,alteraoe/ouconsultaainformaes)
UtilityServices,contemplandofuncionalidadesquenoestejam
diretamenterelacionadasaonegcio(log,enviodeemail,etc.)
TaskServices,utilizadosnaautomaodeprocessosde
negcio.Taisestruturascostumamimplementaracomposio
deservios,comoconsumodeEntitye/ouUtilityServices
OrchestratedTaskServices,osquaisincorporamlgicade
orquestraoecontrolamofluxoemcomposiesdeservios
queenvolvamEntity,UtilityeTaskServices.
PrincpiosdeDesigndeServios
Conformemencionadoanteriormente,diversosconceitosepadres
fornecemabaseparaaimplementaesdesoluesorientadasa
servio.Afinalidadedestaseoapresentaremdetalhesos
seguintesprincpios:
ContratoPadronizado
Acoplamento
Abstrao
Reusabilidade
Autonomia
IndependnciadeEstado
Visibilidade
CapacidadedeComposio
Granularidade.
ContratoPadronizado
ServiosmaisantigoscostumamfazerusodoprotocoloSOAP
(SimpleObjectAccessProtocol),umformatodecomunicao
baseadoemXML.AinteraocomWebServicesqueseguemeste
modeloaconteceapartirdeobjetosconhecidoscomoproxies.Um
proxy,porsuavez,umaestruturageradaapartirdeinformaes
http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

4/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

baseadasnospadresWSDL(WebServicesDescriptionLanguage)e
XSD(XMLSchemaDefinitionLanguage).
NocasoespecficodeserviosREST,osformatosJSONeXML
substituemSOAP.Acomunicaocomtaisestruturassedpormeio
derequisiesHTTP,almdautilizaodeclassesPOCO(PlainOld
CLRObjects)emaplicaescriadascomatecnologiaASP.NETWeb
API.
Acoplamento
Umbaixonvelacoplamentoentreasdiferentespartesdeuma
aplicaoumacaractersticamaisdoquedesejvel,jque
representaumamedidadequobemestruturadotalsoftwarese
encontra.Aimplementaodeumasoluoorientadaaservios
contribuiparaummenoracoplamento,comistoacontecendograas
separaodefuncionalidadesdenegcioemserviosespecficos.
Abstrao
Oconceitodeabstraorefereseideiadecaixapreta,ouseja,
ocultaodedetalhestcnicos(infraestruturaemuso,bancosde
dados,mecanismosdecontroledeacessoetc.).Aplicaesque
venhamaconsumirumserviononecessitamconhecerdetalhes
internosdaimplementaodeste,massimquefuncionalidadestal
estruturadisponibilizaparauso.
Reusabilidade
Aimplementaodeumnovoserviodevelevaremcontaa
possibilidadedereusodomesmo.Logo,chancesconsiderveisde
utilizaodeumWebServiceimediatamenteou,atmesmo,amdio
prazoconstituemboasjustificativasparaaadoodestetipode
estratgia.
Autonomia
Aideiadeautonomiaestligadaindependnciadeumservioem
relaoainflunciasexternas.Logo,umnvelaltodeautonomiauma
caractersticaextremamentedesejvelnaimplementaodeservios.
IndependnciadeEstado
Serviosdevemser,semprequepossvel,implementadosdeformaa
evitaroarmazenamentodeinformaesdeestadoemmemria
(stateless).Essacaractersticaestligadaaquestesde
http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

5/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

performance,impactandodiretamentenaescalabilidade(capacidade
deseadequarademandascrescentes)deumsistema.
Visibilidade
Avisibilidadedeumservioestrelacionadacapacidadedeoutras
aplicaesdescobriremomesmo,bemcomointerpretaremaestrutura
queomesmoexpe.
EmserviosSOAPestacaractersticaencontraseligadaaousodos
padresUDDI(UniversalDescription,DiscoveryandIntegration)e
WSMetadataExchange(especificaoqueregulaageraode
documentosXMLcomaestruturadeumservio).
JserviosRESTcostumamexporsuaestruturaatravsdepginas
descritivas.NocasoespecficodoASP.NETWebAPI,umsite
descrevendoasAPIsRESTesuasfuncionalidadespodesercriado
automaticamente(atravsdaseleodeumtemplateespecficono
VisualStudio).Outraalternativaseriaautilizaodasoluo
conhecidacomoSwagger(http://swagger.io/).
CapacidadedeComposio
Anoodecomposioestdiretamenteligadaquestodoreuso,
envolvendoacriaodenovosserviosapartirdacombinaode
outrosjexistentes.Umservioimplementadodestaformatendea
possuirumamenorautonomia,estandosujeitosinterfernciasque
ocorreremnoscomponentesdosquaisdepende.
Composiespodemserprimitivasoucomplexas.
Umacomposioprimitivaenvolveatrocasimplificadademensagens
entredoisoumaisservios(Imagem2).

Imagem2.Umacomposiodeserviosprimitiva
Jcomposiescomplexascontamcomumalgicamaiselaborada,
representandoemmuitoscasosumprocessodenegcio.
OrchestratedTaskServicesconstituemumexemplodestetipode
composio(Imagem3).

http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

6/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

Imagem3.Umacomposiocomplexa
Granularidade
Agranularidadedizrespeitoaoescopoabrangidopelascapacidades
deumservio.Dopontodevistaprtico,estacaracterstica
determinadacombasenaquantidadedefuncionalidades
encapsuladasporumservio.Levandoemcontatalfator,a
granularidadepodeserclassificadaemfina(finegrained)egrossa
(coarsegrained).
Servioscomgranularidadefinapossuemummaiorpotencialde
reuso,sendoqueosEntityeUtilityServicesconstituembons
exemplosdestetipodeimplementao.
Jagranularidadegrossaresultanumamenorpossibilidadede
reaproveitamento,umavezqueimplicaemalgumaformade
acoplamentocomoutrasconstrues.Contudo,istonorepresenta
ummaudesign.TaskeOrchestratedTaskServicescostumamser
exemplostpicosdestagranularidade.
Concluso
Esteartigoprocuroudetalhardiversosprincpiosteisparaa
implementaodesoluesorientadasaservio,bemcomo
vantagensepontosdeatenoaseremconsideradosaoseadotar
estaabordagem.
PormaisqueabordagenscomoRESTeMicroserviosestejamem
alta,muitosdosconceitosaquiabordados(comoreusabilidade,
autonomia,abstrao,porexemplo)seencaixamperfeitamentedentro
daconstruodesoluesquesigamestesparadigmas.
Ocontedoaquiapresentadotambmpodeservisualizadono
YouTube,emumaapresentaosobrearquiteturadeservios
realizadaem18/12/2015:
http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

7/8

27/07/2016

ArquiteturaOrientadaaServios(SOA):umavisogeral|.NETCoders

https://www.youtube.com/watch?v=tJYohYwOqqk
Esperoqueesteposttenhasidotil.
Atumaprximaoportunidade!
Referncias
ThomasErlSiteOficial
http://www.thomaserl.com/

http://netcoders.com.br/blog/arquiteturaorientadaaservicossoa/

8/8

You might also like