English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
OTP è l'acronimo di Open Telecom Platform. È un sistema operativo applicativo e un insieme di librerie e procedure per costruire applicazioni a larga scala, robuste e distribuite. Se vuoi usare OTP Scrivi il tuo programma personale e scoprirai che il comportamento OTP è un concetto centrale molto utile. Il comportamento incapsula modelli di comportamento comuni - può essere considerato un framework di applicazione parametrizzato dal modulo di callback.
Le funzionalità potenti di OTP derivano dalla sua robustezza, scalabilità, aggiornamento del codice dinamico e altre caratteristiche, che possono essere fornite attraverso il comportamento stesso. Pertanto, il primo concetto fondamentale è creare un componente server che imita l'ambiente di base di OTP, vediamo l'esempio seguente.
-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}, ricezione {Name, Response} -> Response end. loop(Name, Mod, State) -> ricezione {From, Request} -> {Response, State1} = Mod:handle(Request, State), Da ! {Name, Response}, loop(Name, Mod, State1) end.
Per quanto riguarda il programma menzionato sopra, ci sono alcuni punti da notare:
Usare la funzione register per registrare il processo al sistema.
Questo processo genera una funzione loop che gestisce il processo.
Ora, scriviamo un programma client che utilizzerà il programma del server.
-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}.
这段代码实际上执行两个任务。它充当从服务器框架代码调用的回调模块,同时,它包含将由客户机调用的接口例程。OTP 通常的惯例是将两个函数组合在同一个模块中。
所以这是上面的程序需要运行的方式-
在erl中,首先通过运行以下命令来运行服务器程序。
server(name_server,name_server)
您将获得以下输出-
输出结果
true
然后,运行以下命令
name_server.add(erlang,”w3codebox”).
您将获得以下输出-
输出结果
Ok
然后,运行以下命令-
name_server.whereis(erlang).
您将获得以下输出-
输出结果
{ok,"w3codebox"}