In diesem Kapitel vermitteln wir Ihnen ein Verständnis dafür, was MINA ist, was nicht-blockierendes IO ist und warum wir dieses Framework für nicht-blockierendes IO entwickelt haben. Wir zeigen Ihnen auch ein sehr einfaches Beispiel für die Ausführung von MINA .
1. Nicht blockierende IO
Die nicht blockierende IO API erschien in JAVA Version 1.4 und wurde in Zehntausenden von Anwendungen verwendet. Die NIO API deckt nicht blockierende IO ab Blockierungsoperationen. Das Paket java.nio.* enthält die folgenden wichtigen Strukturen:
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
Im MINA-Framework sind wir am meisten an Kanälen, _Selektoren_ und Puffern interessiert.
2.NIO vs. BIO
Es ist wichtig, den Unterschied zwischen diesen beiden APIs zu verstehen, d oder den Socket auf andere Weise bedienen, blockiert der Anrufer, bis der Vorgang abgeschlossen ist.
Aber in einigen praktischen Situationen wird erwartet, dass der Angerufene den Anrufer benachrichtigt, wenn die Anforderung abgeschlossen ist, und Der Anrufer kann andere Vorgänge abschließen Gleichzeitig ist NIO eine bessere Lösung. Sie müssen nicht für jede Verbindung einen bestimmten Thread erstellen, sondern können einfach einige Threads verwenden, um die gleiche Arbeit zu erledigen Erfahren Sie mehr über NIO, es gibt viele Informationen und Bücher im Internet.
3.Warum MINA?
Das Schreiben mancher Netzwerkanwendungen wird oft als Belastung und Low-Level angesehen Entwicklung. Es ist ein Bereich, mit dem Entwickler nicht oft in Berührung kommen, oder sie haben es in der Schule studiert, es aber vergessen, oder die Komplexität der Netzwerkschicht wird durch Abstraktionen auf höherer Ebene verdeckt, und Sie verstehen die zugrunde liegenden Dinge nicht.
Wenn es um asynchrones IO geht, tritt eine zusätzliche Komplexität auf: Zeit
Der größte Unterschied zwischen BIO und NIO besteht darin, dass Sie beim Senden einer Anfrage warten müssen Auf der Serverseite bedeutet dies, dass jedes Mal, wenn eine Verbindung zustande kommt, ein Thread erstellt wird. Sie müssen sich also mit der Komplexität mehrerer Verbindungen auseinandersetzen. Das Blockierungssystem bedeutet, dass Sie bei Eintreten eines Ereignisses in NIO einbezogen werden müssen. Sie müssen nicht auf Ihren vorherigen Anruf warten. Sie senden eine Anfrage und wenn die Anfrage abgeschlossen ist, werden wir Sie benachrichtigen.
4. Die Notwendigkeit eines Rahmens
Angesichts dieser Unterschiede und der Komplexität dieser Probleme besteht die beste Lösung darin, diese Komplexitäten zu verbergen. Aber MINA kann noch mehr gemeinsame E/A bei der Kommunikation über TCP, UDP oder andere Mechanismen. Wenn wir nur TCP und UDP berücksichtigen, kann MINA zwischen diesen beiden Protokollen unterscheiden und Ihnen ermöglichen, sich auf andere Teile Ihrer Anwendung zu konzentrieren.
MINA kann nicht nur TCP- und UDP-Probleme lösen, es ist auch sehr nützlich für serielle Kommunikation und ARP.
Schließlich ist MINA ein Netzwerk-Framework, das darauf zugeschnitten ist, Server-Client-Kommunikationsprobleme zu lösen, einen hoch skalierbaren Server zu schreiben, der sich an die Bedürfnisse anpasst und es ermöglicht, die Speicherleistung widerzuspiegeln. Darin ist MINA immer gut Es erleichtert Ihnen die Entwicklung von Servern.
5.Erste Schritte
Nachfolgend zeigen wir, wie einfach die Verwendung von MINA ist und führen ein sehr einfaches Beispiel durch. Laden Sie zunächst hier die neueste Version von MINA herunter, es sei denn, Sie haben gute Gründe, die neueste Version nicht zu verwenden. Ich hoffe, dass Sie die neueste Version für die Entwicklung verwenden können. http://mina.apache.org/mina-project/downloads.html. Nachdem der Download abgeschlossen ist, entpacken Sie die heruntergeladene Datei. Das Verzeichnis enthält einige Unterverzeichnisse, darunter disk die JAR-Dateien der MINA-Bibliothek, docs die API-Dokumentation und lib die für MINA erforderlichen JAR-Dateien.
6. Führen Sie das erste MINA-Programm aus
Wenn Sie sich im Terminal befinden, müssen Sie zunächst das folgende Paket zum Klassenpfad hinzufügen, /etc/profile ändern und es wirksam werden lassen . Wenn Sie eine integrierte Umgebung verwenden, erstellen Sie einfach Ihren Klassenpfad.
Das Obige ist der Inhalt der Apache Mina-Studiennotizen (1) – Erste Schritte. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!