English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
OTP ist die Abkürzung für Open Telecom Platform. Es ist ein Anwendungsbetriebssystem sowie eine Reihe von Bibliotheken und Prozessen zur Erstellung von groß angelegten, fehler容忍 und verteilten Anwendungen. Wenn Sie OTP verwenden möchten Schreiben Sie Ihr eigenes Programm, und Sie werden feststellen, dass das OTP-Verhalten ein sehr nützliches Kernelement ist. Das Verhalten verpackt gängige Verhaltensmuster - es kann als eine von Callback-Modul-Parametern parametrierte Anwendungsrahmen betrachtet werden.
Die mächtigen Funktionen von OTP stammen aus seiner Fehler容忍性, Skalierbarkeit, dynamische Code-Upgrade und anderen Eigenschaften, die durch das Verhalten selbst bereitgestellt werden. Daher ist der erste Grundbegriff, eine Server-Komponente zu erstellen, die das OTP-Umfeld grundlegend nachahmt, lassen Sie uns den folgenden gleichen Beispiel sehen.
-module(server). -export([start/2, rpc/2]). start(Name, Mod) -> register(Name, spawn(fun() -> loop(Name, Mod, Mod:init()) end)). rpc(Name, Request) -> Name ! {self(), Request}, empfangen {Name, Response} -> Response end. loop(Name, Mod, State) -> empfangen {From, Request} -> {Response, State1} = Mod:handle(Request, State), From ! {Name, Response}, loop(Name, Mod, State1) end.
Bezüglich des obigen Programms sollten Sie folgende Punkte beachten:
Verwenden Sie die Funktion register, um den Prozess beim System zu registrieren.
Dieser Prozess generiert eine Schleifenfunktion zur Verarbeitung des Prozesses.
Lassen Sie uns nun einen Client-Programm schreiben, das den Server-Programm nutzt.
-module(name_server). -export([init/0, add/2, whereis/1, handle/2]). -import(server1, [rpc/2]). add(Name, Place) -> rpc(name_server, {add, Name, Place}). whereis(Name) -> rpc(name_server, {whereis, Name}). init() -> dict:new(). handle({add, Name, Place}, Dict)} -> {ok, dict:store(Name, Place, Dict)}; handle({whereis, Name}, Dict) -> {dict:find(Name, Dict), Dict}.
Dieser Code führt tatsächlich zwei Aufgaben aus. Es dient als Callback-Modul, das vom Server-Framework-Code aufgerufen wird, und enthält gleichzeitig die Schnittstellenroutinen, die vom Client aufgerufen werden. Die OTP-Übung besteht darin, zwei Funktionen in einer Modul zu kombinieren.
Das ist also der Weg, wie das obige Programm ausgeführt werden muss-
InerlIn, führen Sie zuerst die folgenden Befehl aus, um das Serverprogramm zu starten.
server(name_server,name_server)
Sie erhalten die folgenden Ausgaben-
Ausgabenergebnis
true
Dann führen Sie folgenden Befehl aus
name_server.add(erlang,"w3codebox).
Sie erhalten die folgenden Ausgaben-
Ausgabenergebnis
Ok
Dann führen Sie folgenden Befehl aus-
name_server.whereis(erlang).
Sie erhalten die folgenden Ausgaben-
Ausgabenergebnis
{ok,"w3codebox"}