Maison  >  Article  >  développement back-end  >  Notes d'étude Apache Mina (1) - Pour commencer

Notes d'étude Apache Mina (1) - Pour commencer

黄舟
黄舟original
2017-01-18 09:43:151205parcourir

Dans ce chapitre, nous vous expliquerons ce qu'est MINA, ce que sont les IO non bloquantes et pourquoi nous avons développé ce framework sur les IO non bloquantes. Nous vous montrerons également un exemple très simple d'exécution de MINA. .

1. IO non bloquantes

L'API IO non bloquante est apparue dans JAVA version 1.4 et a été utilisée dans des dizaines de milliers d'applications. L'API NIO couvre diverses IO non bloquantes. opérations de blocage. Le package java.nio.* contient les structures importantes suivantes :

Buffers - Data Containers
Chartsets - Containers translators for bytes and Unicode
Channels - represents connections to entities capable of I/O operations
Selectors - provide selectable, multiplexed non-blocking IO
Regexps - provide provide some tools to manipulate regular expressions

Dans le framework MINA, nous sommes plus intéressés par les canaux, les _Sélecteurs_ et les tampons. Nous espérons masquer cette partie aux utilisateurs.

2.NIO vs BIO

Il est important de comprendre la différence entre ces deux API, c'est-à-dire que le blocage des IO s'appuie sur le socket pour adopter le mode de blocage. ou actionner le socket d'une autre manière, l'appelant bloquera jusqu'à ce que l'opération soit terminée

Mais dans certaines situations pratiques, il s'attend à ce que l'appelé informe l'appelant lorsque la demande est terminée, et l'appelant peut effectuer d'autres opérations à. en même temps. Il s'agit de NIO. Lorsque vous avez plusieurs sockets connectés, NIO est une meilleure solution. Vous n'avez pas besoin de créer un thread spécifique pour chaque connexion, vous pouvez simplement utiliser certains threads pour effectuer le même travail. Pour obtenir plus d'informations sur NIO, il y a beaucoup d'informations et de livres sur Internet.

3.Pourquoi MINA ?

L'écriture de certaines applications réseau est souvent considérée comme un fardeau et un faible niveau développement. C'est un domaine avec lequel les développeurs n'entrent pas souvent en contact, ou bien ils l'ont étudié à l'école mais l'ont oublié, ou bien la complexité de la couche réseau est cachée par des abstractions de niveau supérieur, et vous ne comprenez pas les choses sous-jacentes.

Quand il s'agit d'IO asynchrones, une complexité supplémentaire apparaît : le temps.

La plus grande différence entre BIO et NIO est que dans BIO, lorsque vous envoyez une requête, vous devez attendre que le La demande reçoit une réponse côté serveur, cela signifie qu'à chaque fois qu'une connexion est établie, un thread est créé. Vous devez donc gérer la complexité de plusieurs connexions. Dans NIO, vous devez résoudre le problème de synchronisation de manière non-. système de blocage, cela signifie que lorsqu'un événement se produit, vous devez être impliqué. Dans NIO, vous n'avez pas besoin d'attendre votre appel précédent, vous envoyez une demande et lorsque la demande est terminée, nous vous en informerons.

4.La nécessité d'un cadre

Compte tenu de ces différences et de la complexité de ces problèmes, la meilleure solution est de cacher ces complexités, ce que fait MINA. Mais MINA peut en apporter plus. E/S communes lors de la communication via TCP, UDP ou d'autres mécanismes. Si l'on considère uniquement TCP et UDP, MINA peut différencier ces deux protocoles et vous permettre de vous concentrer sur d'autres parties de votre application.

MINA peut non seulement résoudre les problèmes TCP et UDP, il est également très utile pour la communication série et ARP.

Enfin, MINA est un framework réseau personnalisé pour résoudre les problèmes de communication serveur-client, écrire un serveur hautement évolutif qui s'adapte aux besoins et permet de refléter les performances de la mémoire. C'est ce que MINA fait toujours bien. il vous est plus facile de développer des serveurs.

5.Premiers pas

Ci-dessous, nous montrerons à quel point il est facile d'utiliser MINA et exécuterons un exemple très simple. Tout d'abord, allez ici pour télécharger la dernière version de MINA. À moins que vous n'ayez de bonnes raisons de ne pas utiliser la dernière version, j'espère que vous pourrez utiliser la dernière version pour le développement. http://mina.apache.org/mina-project/downloads.html. Une fois le téléchargement terminé, décompressez le fichier téléchargé. Le répertoire contiendra quelques sous-répertoires, parmi lesquels disk contient les fichiers jar de la bibliothèque MINA, docs contient la documentation de l'API et lib contient les fichiers jar requis par MINA.

6. Exécutez le premier programme MINA

Tout d'abord, si vous êtes dans le terminal, vous devez ajouter le package suivant au chemin de classe, modifier /etc/profile et le laisser prendre effet. . Si vous utilisez un environnement intégré, créez simplement votre chemin de classe.

Ce qui précède est le contenu des notes d'étude d'Apache Mina (1) - Mise en route Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn