O que é um servicebus e quando preciso de um?

101

Já ouvi falar sobre o NServiceBus , mas não entendi direito o que é. Eles afirmam ser "o barramento de serviço de código aberto mais popular para .net".

Assim; o que é um "barramento de serviço" e quando preciso de um?

Stiank81
fonte
Estou muito atrasado para a festa, não vou postar isso como resposta porque não é assim, mas resumindo, se você não sabe por que precisa de um, é provável que não ... resolve um problema específico problema que você provavelmente não tem em relação à conexão de aplicativos e ao fornecimento de uma API centralizada à sua empresa.
Guerra
9
@Wardy eu discordaria de sua declaração. O fato de você não entender algo ou não saber o que é, não significa que não ajudaria você saber sobre isso
Cristian Toma
Isso não era uma desculpa para ignorância, mas mais enfatizando que ônibus de serviço é um termo muito usado quando você se depara com o tipo de problema que ele resolve, então você precisa ou não precisa e, portanto, nunca terá que se preocupar com isto.
Guerra
Eu adicionaria isso como uma edição, mas mudaria fundamentalmente a questão ... NServiceBus agora é conhecido como "Plataforma de serviço particular" e pode ser encontrado em particular.net (que é para onde NServiceBus.com redireciona agora).
Dan Atkinson,
Se você não sabe o nome ou o conceito de algo que já existe, é provável que você escreva o seu próprio. Portanto, é bom conhecê-los para que você possa usá-los (se precisar)
noelicus

Respostas:

80

Você pode pensar em um barramento de serviço como a Ethernet de SOA.

Em primeiro lugar, ele introduz uma linguagem de identificação de coisas, como um endereço IP na Ethernet. Este nome não é algo inerentemente físico.

Em seguida, você tem algo físico envolvido em cada nó, como uma fila no caso de um barramento para suportar comunicação semiconectada, ou uma placa Ethernet na metáfora.

Além do físico, existe a parte do "protocolo" da comunicação, como a pilha OSI para Ethernet. Com o barramento, são as bibliotecas de cliente usadas pelo código do aplicativo.

Por fim, você pode ver um barramento de serviço como fornecendo o próximo nível superior de abstração para a construção de sistemas distribuídos. Você também pode usá-lo para comunicação cliente-servidor para fornecer mensagens unilaterais duráveis, bem como para o servidor enviar notificações por push de volta para o cliente.

Especificamente, você descobrirá que o NServiceBus é bastante leve e fácil de usar depois de fazer as pazes com o uso da tecnologia de enfileiramento - sua escolha de RabbitMQ, MSMQ, Tabelas regulares SQL, Amazon SQS, Filas de armazenamento do Azure e Azure Service Bus.

Udi Dahan
fonte
THX! Acho que agora tenho uma visão geral! Na verdade, estava fazendo esta pergunta para estar um pouco preparado para a sessão que você está realizando hoje à noite, mas não parece que vou conseguir ..
stiank81
12

Confira o artigo da Wikipedia sobre o Enterprise Service Bus .

Um Service Bus atua como mais uma camada de abstração na busca incessante de implementar uma boa Arquitetura Orientada a Serviços. O Barramento de Serviços pode lidar com parte do trabalho pesado visto por trás de uma boa Arquitetura Orientada a Serviços, como Mensagens, Roteamento e Coordenação de Serviços.

Se você não tem certeza de por que deseja algo assim, sugiro ler sobre o que torna uma boa Arquitetura Orientada a Serviços O livro que realmente abriu meus olhos e provou a diferença entre apenas ter serviços da Web e ter uma verdadeira arquitetura orientada a serviços foi a arquitetura orientada a serviços de Thomas Erl : conceitos, tecnologia e design

Justin Niessner
fonte
Posso usá-lo para fazer a comunicação entre um aplicativo cliente de desktop e um servidor? Onde o servidor está interno, isto é.
stiank81
Você poderia. Você também pode usá-lo para comunicação entre diferentes serviços, diferentes versões de diferentes serviços, etc. (incluindo situações em que os serviços usam protocolos diferentes).
Justin Niessner
11

Este termo foi introduzido com SOA, que é de certa forma o sucessor (como palavra da moda) de EAI .

Quando você precisar? Esta é uma boa pergunta. Ele vem com muita complexidade.

Uma regra prática poderia ser aplicada se resolver mais problemas do que causar.

Falar sério se você tem um ambiente heterogêneo e deseja alinhar aplicativos (usando tecnologias diferentes) aos processos de negócios. Então, pode ser útil usar BPEL (mas isso apresenta problemas de migração) para orquestração e coreografia

EDIT: O que não está na Wikipedia, é a prática: Um ESB pode se adaptar usando conectores especiais, aplicativos de terminal antigos para uso com Corba ou Java Enterprise que significa interoperabilidade. A desvantagem são os mais de 100 'Padrões' em torno do SOAP que não cooperam sem um enorme esforço.

Você definitivamente precisa disso se tiver que interconectar sistemas de TI dentro de seis meses após a fusão de 2 grandes empresas de garantia.

empilhador
fonte
Então - no meu aplicativo de desktop, que tem uma comunicação "simples" com um servidor, não há necessidade de usar um Barramento de Serviço muito grande? Isso pode me ajudar a implementar um modelo push do servidor? Ou será mais doloroso do que ganho também neste cenário?
stiank81
@ stiank81 desculpe, eu li o barramento de serviço (Enterprise) e as sinapses foram disparadas. Eu verifiquei seu link para NServiceBus eles têm como alvo o mesmo, você não precisa de algo assim em um aplicativo cliente-servidor. Isso significa conceito para vários aplicativos envolvidos em um processo de negócios. Se isso funcionasse para você? Se resolver mais problemas do que causa.
stacker
Use-o "se resolver mais problemas do que causar" ... adoro.
noelicus