Qu'est-ce qu'un servicebus et quand en ai-je besoin?

101

J'ai entendu parler du NServiceBus , mais je n'ai pas vraiment compris ce que c'est. Ils prétendent être "Le bus de services open source le plus populaire pour .net".

Alors; qu'est-ce qu'un «bus de service» et quand en ai-je besoin?

stiank81
la source
Je suis vraiment en retard à la fête, je ne posterai pas cela comme réponse parce que ce n'est pas en tant que tel, mais en bref, si vous ne savez pas pourquoi vous en avez besoin, il y a de fortes chances que vous ne le fassiez pas ... cela résout un problème spécifique problème que vous n'avez probablement pas autour de la connexion des applications et de la fourniture à votre entreprise d'une API centralisée.
Guerre
9
@Wardy Je ne suis pas d'accord avec votre déclaration. Le fait que vous ne compreniez pas quelque chose ou que vous ne sachiez pas ce que c'est, ne signifie pas que cela ne vous aiderait pas à le savoir
Cristian Toma
Ce n'était pas une excuse pour l'ignorance, mais plutôt pour souligner que le bus de service est un terme souvent utilisé lorsque vous rencontrez le type de problème qu'il résout, donc vous en aurez besoin ou vous ne l'aurez pas et ainsi ne vous inquiéterez jamais. il.
Guerre
J'ajouterais ceci en tant que modification mais cela changerait fondamentalement la question ... NServiceBus est maintenant connu sous le nom de "Particular Service Platform" et peut être trouvé sur particular.net (où NServiceBus.com redirige maintenant de toute façon).
Dan Atkinson
Si vous ne connaissez pas le nom ou le concept d'une chose qui existe déjà, il est probable que vous écriviez le leur. Par conséquent, il est bon de les connaître pour pouvoir les utiliser (si vous en avez besoin)
noelicus

Réponses:

80

Vous pouvez considérer un bus de service comme Ethernet de SOA.

Tout d'abord, il introduit un langage d'identification des choses, comme une adresse IP dans Ethernet. Ce nom n'est pas quelque chose de physique en soi.

Ensuite, vous avez quelque chose de physique impliqué sur chaque nœud, comme une file d'attente dans le cas d'un bus pour prendre en charge une communication semi-connectée, ou une carte Ethernet dans la métaphore.

Au-delà du simple physique, il y a la partie "protocole" de la communication, comme la pile OSI pour Ethernet. Avec le bus, ce sont les bibliothèques clientes utilisées par le code d'application.

En fin de compte, vous pouvez voir un bus de service comme fournissant le niveau d'abstraction supérieur suivant pour la création de systèmes distribués. Vous pouvez également l'utiliser pour la communication client-serveur afin de vous offrir une messagerie unidirectionnelle durable, ainsi que pour le serveur pour renvoyer les notifications au client.

Plus précisément, vous constaterez que NServiceBus est assez léger et facile à utiliser une fois que vous avez fait la paix avec son utilisation de la technologie de mise en file d'attente - votre choix parmi RabbitMQ, MSMQ, Regular SQL Tables, Amazon SQS, Azure Storage Queues et Azure Service Bus.

Udi Dahan
la source
THX! Je pense avoir une vue d'ensemble maintenant! Je posais en fait cette question pour être un peu préparé pour la session que vous tenez ce soir, mais il ne semble pas que je vais y arriver ..
stiank81
12

Consultez l'article Wikipédia sur Enterprise Service Bus .

Un bus de service agit comme une couche supplémentaire d'abstraction dans la quête sans fin de la mise en œuvre d'une bonne architecture orientée services. Le bus de service peut gérer certaines des tâches lourdes qui se cachent derrière une bonne architecture orientée service comme la messagerie, le routage et la coordination des services.

Si vous ne savez pas pourquoi vous voudriez quelque chose comme ça, je vous suggère de lire ce qui fait une bonne architecture orientée services. Le livre qui m'a vraiment ouvert les yeux et a prouvé la différence entre le simple fait d'avoir des services Web et une véritable architecture orientée services était l'architecture orientée services de Thomas Erl : concepts, technologie et design.

Justin Niessner
la source
Je peux donc l'utiliser pour faire la communication entre une application client de bureau et un serveur? Là où le serveur est en interne, c'est-à-dire.
stiank81
Vous pourriez. Vous pouvez également l'utiliser pour la communication entre différents services, différentes versions de différents services, etc. (y compris les situations où les services utilisent différents protocoles).
Justin Niessner
11

Ce terme a été introduit avec SOA qui est en quelque sorte le successeur (en tant que mot à la mode) d' EAI .

Quand en avez-vous besoin? C'est une bonne question. Cela vient avec beaucoup de complexité.

Une règle de base pourrait si cela résout plus de problèmes qu'il n'en cause.

Être sérieux si vous avez un environnement hétérogène et que vous souhaitez aligner (différentes) applications (utilisant une technologie différente) avec les processus métier. Ensuite, il pourrait être utile d'utiliser BPEL (mais cela pose des problèmes par migration) pour l' orchestration et la chorégraphie

EDIT: Ce qui n'est pas sur wikipedia, c'est la pratique: un ESB peut s'adapter à l'aide de connecteurs spéciaux, d'anciennes applications de terminal à utiliser avec Corba ou Java Enterprise, c'est-à-dire l'interopérabilité. L'inconvénient est la centaine de «standards» autour de SOAP qui ne coopèrent pas sans un effort énorme.

Vous en avez certainement besoin si vous devez interconnecter des systèmes informatiques dans les six mois suivant la fusion de 2 grandes compagnies d'assurance.

empileur
la source
Donc - dans mon application de bureau qui a une communication "simple" avec un côté serveur, il n'est pas nécessaire d'aller grand avec un Service Bus? Cela peut-il m'aider à implémenter un modèle push à partir du serveur? Ou sera-ce plus de douleur que de gain dans ce scénario aussi?
stiank81
@ stiank81 désolé, j'ai lu le bus de service (Entreprise) et les synapses ont été déclenchées. J'ai vérifié votre lien vers NServiceBus, ils ciblent la même chose, vous n'avez pas besoin de quelque chose comme ça dans une application client-serveur. Il s'agit d'un concept pour plusieurs applications impliquées dans un processus métier. Si cela fonctionnait pour vous? Si cela résout plus de problèmes qu'il n'en cause.
gerbeur
Utilisez-le "s'il résout plus de problèmes qu'il n'en cause" ... adorez-le.
noelicus