web-dev-qa-db-fra.com

Quelle est la différence entre Vert.x et Netty?

Quelle est la différence entre Vert.x et Netty? Pourquoi devrait-on jamais préférer Netty à Vert.x?

Les deux sont des frameworks événementiels, non bloquants et asynchrones conçus pour des E/S à forte charge.

Vert.x est basé sur un modèle multi-réacteurs (boucle d'événements de style Node sur JVM multithread), mais Netty utilise le modèle de chaîne d'intercepteur. Lorsque le modèle de chaîne d'intercepteur présente des avantages par rapport au modèle multi-réacteur?

Je viens de jeter un coup d'œil à la documentation de Netty, mais il semble que Vert.x ait une fonctionnalité supplémentaire par rapport à Netty. C'est à dire. Vertx est un serveur autonome, c'est un polyglotte, fournit une haute disponibilité et un clustering out-of-the-box.

Vert.x a également de meilleurs repères que Netty.

P.S. Avertissement - J'apprécie beaucoup Vert.x et je ne connais pas Netty. Donc, en demandant Why should one ever prefer Netty over Vert.x? J'essaye juste de comparer les deux.

14
VB_

La différence est Vert.x est basé sur Netty. Si vous jetez un œil à la pom.xml in vertx-core vous trouverez:

<!-- We depend on the specific Netty dependencies not netty-all to reduce the size of fatjars -->
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-common</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-buffer</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-transport</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-handler</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-handler-proxy</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-codec-http</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-codec-http2</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-resolver</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-resolver-dns</artifactId>
  <version>${netty.version}</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>${jackson.version}</version>
</dependency>

Et la version Netty pour Vert.x 3.5.0-SNAPSHOT est: 4.1.8.Final

Vert.x est une boîte à outils complète et un écosystème de modules enfichables au-dessus de Netty pour créer des applications réactives au-dessus de la JVM.

25
Arnold Schrijver