Pergunta

A Arquitetura Orientada a Serviços parece ser cada vez mais uma citação popular atualmente, mas depois de perguntar no escritório, descobri que consigo muitas definições diferentes para ela.Como vocês definiriam SOA?Qual você consideraria a definição oficial?

Foi útil?

Solução

Como diz Martin Fowler, significa coisas diferentes para pessoas diferentes.Seu artigo sobre o assunto é muito bom, embora não seja exatamente uma definição.

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

Isso pode explicar a dificuldade de chegar a uma definição concreta.

Outras dicas

Wikipédia:“Uma SOA é uma arquitetura de software que utiliza serviços de software fracamente acoplados para suportar os requisitos dos processos de negócios e dos usuários de software.Os recursos em uma rede em um ambiente SOA são disponibilizados como serviços independentes que podem ser acessados ​​sem o conhecimento da implementação de sua plataforma subjacente."

SOA não é tão novo, mas tem potencial para alcançar coisas incríveis.Mas a organização tem que estar preparada para isso:o negócio tem que pensar em processos e esse é o grande problema

Eu iria com:

Definindo uma série de clientes sem monitoração de estado Operações comerciais agnósticas criadas a ser alavancado em múltiplos Aplicativos.

Um design SOA inclui componentes (ou seja, Serviços) que pode ser usado pelo código independentemente da implementação (ou seja, qualquer sistema operacional ou idioma).Uma única instância de um serviço também pode ser usada por vários aplicativos, enquanto, por exemplo, uma DLL teria que ser duplicada para cada aplicativo e exigiria a mesma tecnologia de implementação que o aplicativo vinculado.

Os serviços em um design SOA são geralmente implementados como serviços web interoperáveis.

Não existe uma definição oficial, como Ryan mencionou anteriormente.Contudo, considero a visão de Thomas Erl sobre toda a orientação para serviços bastante bem estruturada e relevante.Aqui está a definição de SOA de seu Glossário SOA (mais):

A arquitetura orientada a serviços representa um modelo arquitetônico que visa aumentar a agilidade e a economia de uma empresa, ao mesmo tempo que reduz a carga geral de TI em uma organização.

Thomas Erl é autor de muitos títulos SOA, a maioria deles recebendo endosso de fornecedores de SOA, incluindo IBM, Oracle e Microsoft.O que há de bom em os livros dele é que eles sejam o mais independentes possível do fornecedor SOA.Isso significa que você aprenderá mais sobre a orientação a serviços em si e menos sobre o middleware de algum fornecedor que oferece suporte a SOA.

Concordo com todas as pessoas que apontam Fowler sobre isso.Basicamente funciona assim:a arquitetura orientada a serviços ganhou a reputação de ser boa; portanto, qualquer coisa que as pessoas queiram associar a algo bom elas chamam de SOA.Na realidade, ele tem muitas desvantagens e pode criar um impasse orientado a serviços ou uma arquitetura orientada a dependências.

Aqui está minha definição:A Arquitetura Orientada a Serviços é uma abordagem de integração de sistemas e reutilização de código em que os aplicativos dependem da conexão com serviços fornecidos por outros aplicativos em execução na rede.Isso é diferente das arquiteturas de componentes, onde os componentes de software são compartilhados estaticamente entre aplicativos na forma de bibliotecas ou SDKs, por exemplo.

Um esclarecimento aqui - "Arquitetura Orientada a Serviços é uma integração de sistemas e abordagem de reutilização de código onde os aplicativos dependem de conectando-se a serviços fornecidos por outros aplicativos em execução na rede."

Tenho um cenário em que dois aplicativos j2ee foram integrados usando mensagens orientadas a eventos.Aqui as frases acima de integração de sistemas e conectando-se a serviços fornecidos por outros aplicativos em execução na rede segure bem.Posso chamar isso de SOA?

Os seguintes princípios valeriam aqui 1) apatridia 2) mensagem orientada - fracamente acoplada de fato desacoplada 3) extensível.

No entanto, o seguinte não se aplica 1) independência de plataforma - nenhum dos aplicativos que estão sendo integrados foi projetado para funcionar em uma plataforma diferente.2) Os aplicativos são aplicativos j2ee simples que não foram projetados com todos os conceitos de SOA.

Tentei definir SOA em uma das postagens do meu blog.Aqui está um trecho...

Durante anos, tem sido prática padrão separar a funcionalidade em funções, classes e módulos.A ideia sempre foi que esses componentes menores e altamente especializados sejam mais fáceis de compartilhar e manter do que blocos monolíticos de código.

Funcionalmente, SOA não é muito diferente.Os objetivos são os mesmos: reutilização e fácil manutenção.A maior diferença - no caso de um serviço web SOA - é que a biblioteca compartilhada incluída na sua aplicação é substituída por uma chamada HTTP.

Aqui está uma definição para você:

SOA - Software Over Architected.A inclusão de uma estrutura de interface funcional, super inchada e inútil chamada arquitetura em um site bonito com uma pasta gráfica 3D voando de um lado para o outro onde "dir /s > a.txt | ftp -s:upload.ftp" fez o trabalho.

Os componentes de software não são blocos, não podem ser generalizados por padrões funcionais comuns e a arquitetura emerge na empresa a partir de boas práticas, não de um bom design.O software não é arquitetado, é projetado.

SCRUM ON!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top